From b6e8b271c957e3e3c375d75b1ce2a1f8d94f2d6c Mon Sep 17 00:00:00 2001 From: rinaldia <antoniopio.rinaldi@sed.ethz.ch> Date: Wed, 16 Oct 2024 22:02:30 +0200 Subject: [PATCH] First messy commit --- LICENSE | 661 +++++++++++++++ README.md | 93 -- data/Cat_FORGE22.h5 | Bin 0 -> 895032 bytes data/Hydr_FORGE22.h5 | Bin 0 -> 308752 bytes data/Scenario.h5 | Bin 0 -> 7152 bytes data/TrainingData.h5 | Bin 0 -> 17864 bytes data/TrainingTarget.h5 | Bin 0 -> 1078792 bytes data/seismic_data_full_located.h5 | Bin 0 -> 1179552 bytes hm1d/FlowModel.py | 960 +++++++++++++++++++++ hm1d/SeismicityModel.py | 305 +++++++ hm1d/Worker_HM0_HM1_1D.py | 1322 +++++++++++++++++++++++++++++ hm1d/__init__.py | 0 hm1d/model.py | 882 +++++++++++++++++++ hm1d/ramsis.py | 44 + hm1d/utils.py | 237 ++++++ ml1/FlowModel.py | 330 +++++++ ml1/__init__.py | 0 ml1/model.py | 455 ++++++++++ ml1/ramsis.py | 44 + ml1/utils.py | 255 ++++++ model_plots.py | 201 +++++ model_plots_forge.py | 183 ++++ pyproject.toml | 3 + run_model.py | 163 ++++ setup.cfg | 57 ++ tox.ini | 17 + 26 files changed, 6119 insertions(+), 93 deletions(-) create mode 100644 LICENSE delete mode 100644 README.md create mode 100644 data/Cat_FORGE22.h5 create mode 100644 data/Hydr_FORGE22.h5 create mode 100644 data/Scenario.h5 create mode 100644 data/TrainingData.h5 create mode 100644 data/TrainingTarget.h5 create mode 100644 data/seismic_data_full_located.h5 create mode 100644 hm1d/FlowModel.py create mode 100644 hm1d/SeismicityModel.py create mode 100644 hm1d/Worker_HM0_HM1_1D.py create mode 100644 hm1d/__init__.py create mode 100644 hm1d/model.py create mode 100644 hm1d/ramsis.py create mode 100644 hm1d/utils.py create mode 100644 ml1/FlowModel.py create mode 100644 ml1/__init__.py create mode 100644 ml1/model.py create mode 100644 ml1/ramsis.py create mode 100644 ml1/utils.py create mode 100644 model_plots.py create mode 100644 model_plots_forge.py create mode 100644 pyproject.toml create mode 100644 run_model.py create mode 100644 setup.cfg create mode 100644 tox.ini diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..839fee2 --- /dev/null +++ b/LICENSE @@ -0,0 +1,661 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + + Preamble + +The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are 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. + +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. + +Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + +A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + +The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + +An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + +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 Affero 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. Remote Network Interaction; Use with the GNU General Public License. + +Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + +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 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 work with which it is combined will remain governed by version +3 of the GNU General Public License. + +14. Revised Versions of this License. + +The Free Software Foundation may publish revised and/or new versions of +the GNU Affero 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 Affero 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 Affero 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 Affero 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. + + ramsis-sfm + Copyright (C) 2021 Indu + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero 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 Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + +If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + +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 AGPL, see +<https://www.gnu.org/licenses/>. diff --git a/README.md b/README.md deleted file mode 100644 index 15c8bb6..0000000 --- a/README.md +++ /dev/null @@ -1,93 +0,0 @@ -# HM-1D - - - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://gitlab.seismo.ethz.ch/indu/hm-1d.git -git branch -M main -git push -uf origin main -``` - -## Integrate with your tools - -- [ ] [Set up project integrations](https://gitlab.seismo.ethz.ch/indu/hm-1d/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README - -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. diff --git a/data/Cat_FORGE22.h5 b/data/Cat_FORGE22.h5 new file mode 100644 index 0000000000000000000000000000000000000000..2fe8380185c601068c5424aff493083ba3c5d70a GIT binary patch literal 895032 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�x(7v%X1|6Cd54}G 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	cvxm>{axr{6M5m$2!H*hO=au@gUTmHbG zd7P*C8!z%w;Ek<}OWwldOvUufz&n|PcQZHh@ZP}tbj<v^APe(B7H0{TW*L@a1wP8h zS(UZ<6zj1*8w57jE%*Xkv0Y#X-H9)=7hmNd4&hJ^=Ln7p9IeN2EGKdbr*ax+b57tw z9dnUh%n!JNEBPTm3f!PKaWl7YN8sl=<`;So_ws9g%cJ~}Kl6CtNqvUD@Hbuw{9DJo zv2}D_Bw-5P7MMz>W}3jXIy18e=GOP}J{DpTKFD&c$jX6LbamEXP1a&<)@405VAH^6 zx;dZYi)_U<Y|jqt#4ha4eu1y**Eo=a0tf3+oWO~k#J4$}GXiJoS)9XpoX<sE%%%K* zE4iBMxSk&eZqc6v?$R;8)G_zy1N<iNppJP&$2_V}@GO7jIsVQoyc(FOO>}-F<_)}& zH!(R=G95DqX45gV>${kTd3hi2XTiXt`k}xQx-=`X8lPbOz$QB83;HFtVh46)H}+sJ z_Tlirk$QaKWIc}yxR^`$K9_Pi*Ks{R=0<MkPJYg>_%*)?{8k_2VgAfxJjqi$&0qK% zF9u%HSNKQZpZag!&^8*E$#@HIV;ZJo7G@31rte}N=4Y|MQo1zDu~J|aU5(XQleGiu z>X`L(LpEVkw&V+Zk!=Fo>5hS&bZ2&9SH8lY9K?|v6*xwZ<s?q#+nmbxxs=PeoGSxA z(yO_So4A$RxScx!Kht~p9S`ylf9CPPlRD<F`aCc2BLC!Hfj75{#_z36$Mn3N*_ea5 zn3qLZl*L$_kFYGuu>v1sHP+;ltQ}ZK*JJ&_#=1%1v$`3dXY0VWx*gjGcGNMu>Tc}L zp6tVZ?9U;A!}TbR<{N=ib<7!hCg<@zF60MX!IfOg4cy4>+`-TJB@gf$9^zph<#C?o zuRO;qfq&{7+DGFvW)hv0DVd7tn1LCYiCLMA*#mRyyv)Z3ScpXeOX^ZA6IfYSVI4lj zrvvNh`fR}$0$b}gY|D1+%3kclS2>Wcb1;W<1mEODzRlTum+x~amvKelD*YkXaeLq= z`qRK&`YY}W+^@gqkNk;02cFgE_($MXow!3Z9&ZZFpffQGZ|7aSH}F24Kd^u<#79^* zu(GbrdVGe>1E1F|`4U^PJv*}(`|&jn<0wwxL{8#coW|*#$=RICg<Q^+T*aOIB5=R{ zmWKn6>ofc{@Vvgv#2sCCn1o50oavY$Fq6*AEWDj}G8gaWJ-m+(umB75L6&6cz^b}t zU@iRwpA2lIpW_Q`%{FWs*j{&LH}+&N_6h8#`*RQna|nlW7)Jz-)?+y?aJ-(t$(+XN ze20s;l*{-5S8+8raWi-FOYY$Te#38hnBViqz+?J2Pw*VCGD#=Tb4<b8m^Ltz&dI#I zkNH@bMFPv~M_G}N@o`pTb=GD*)@NhBz_x79E_|6i*qi+Vhv<<U!|{O=^;?|6>72p2 zT*ReZ#dU$3^%id9PJY1y{FdMII8XCe{>JmXz>B=ZEBuRzI!EIpW@4R^>6w*xFc<IP zy}Y0KScng?49l`2D+N~8)%gUU46LtXHr7qpEU=A^*+sw1SJ;cM@-+_RAdcc_j^PAO z<Rnhvw7_@tY|agQUoQ(>sXydLTphSU$K0s5@(b?cejeaKp5(7Q$BVqgWL=_hm692l zh1mk{)OYc2=3@aCWeJwyqpZw2Y{<rJ#uj{@EdyKW&VgNZ%$Ie~1RQ4iaE{=coWQp^ zmD4zbGdYWMxsXc&*XnKjggXQG=$PN>!#v4T{Eff!a^Ro(#;(!vzllkhjJGgFU}~L? z>6ww4c{_745AWjxEWjcx&QdJL3ard(e3DPG9viSBpW*Xt%?^QGbT{_ns~pTxoWO~k z#L1k(seFeE_#T(>L$2mJZs1mK<4*48XWYx5d4i_`PwO-MotOA0|K?5IqH&XiNtr${ zlfIofnTvPv9_C?Q=4U|`Vlh4xSVEU#X;$E4tj-#&$=ZC1_1KV&*pw~Uk}t9qTeA&2 zunS*iPxj*L9LiyVBlJj);#f}Qbk5^^F5tUd#1Hr(KjIp$<vMQW7H;J(?&cmI2>f0j z<r)6M-+3wUFP-RR&qchMNqGxz3(TZrX4csPbLhL7mjzjfWmuNwSu^ly-H<K#99spp z)$Iej=x%(O-8q26I6QEK9>uX7$0?l3cLSH|75p%8gWkl=+{W$P!QK3d2Y8T&cr@^Y zKFPB@&x?Uq^q;)xm1z7VWxBvD`gY#Mdw6ePUL7-^F2uroh*emPHCQ*WfqsUK*_6-o z94|3Z_vrK8z?+zyDVUOJ0@LY?%)+e9&K%6g2UwU7v1DLbU5S+gtLSR1$tMHr=thA} zb<7s}CAMQ1cI7MV$yYgoqd1<EI5}{(p38T+nY;NFzvegmfya29zw<mV1^%J0^5!1K zIg|5NrU^`^Gx84J7g$`EU`dt_te_ub6+RwVRo7rGKFP*x#+HF?bX&g6p6tawe3kwA z24`>%=W;$5a50y2B|qY3?&5BK!^43`^w0c-mw1I&`8N~yjE?V3fl2hOOwBZb>2wBW zVrFLL9n8i%nS;4_4|DT==3{;qWKllMvMkTatjZd!9av8{WedK*)@;uX?8I(-g?%`X zLpXwCIgW1zPSBGA-_lb#oeKjO>-V{WYq^da0ypa|fm`)1?hgD?$NXA<!|!;Ihxjv3 z@DzXLZ#>V7fr)xW<2MPD@m8i}T4v#$%*lJ0n|XLI3$hT4@IgMzQY_7CtjQ<XAn-Z; z65FsXJFyG9vK#yGbq?lRoDw)g&*CC3;R>$eYHs3YZsm4<!u|Y)hxilE@dE#3qTbQ* zyfN@5eJj&4BQx=iz})%)7G^O%$cI>prCE`Wu`-`xW4^!+?7|-G!+spXQJl$lxPS|} zh|9Q=tGJ#Uxt*VI2R{wmtA7mqSs&wZp5yPl%A5N{$1OcGFe5YZ4&KS!%*O(O#q@)G zm}LSV)z$bk8}S*oWV^slx(9o4XaWv1{SA)iM840pT*nRE!mZrFo%}R#kKW7uJjg>l z!BafX3%tZceWT-*m?@ctw=)~FGY50>Za%<5EX*P-&N8gVdTh*R1Doj<Y#G=}cVI{M z;Q$We5RTv&jthKS&*J>R_w+KZ3*4x;au4@$KM(K-kMc*J<sbZ;iTfq`=PzmCtvWT+ zFg+h&0T$(hEWt{Aj5S%CPX#`so3bUl@|D2ux-a{4AjfbbC-E)L<ZRC25-#KFz)gA^ zKjkid#?Sc`PX_*~f9EA$4g6cDdo?;<nV5q)c{lH80T$!KEXhi&#YSw-=lB9!u_HUN zD|-a?(*4*!aG)N-VI0ZP9LH&#!I_-Pg@McT3Vs;)k&gMXj`^wnjGuE4_wpcr<j?$# z=Xr%U^^cBY%D{{|2lMiN7GY67!jggIbp=*p71m=TzQC8*p949JBRGm<I4*Fap3Jv7 zn+v#vE4Yduas#(=CqLz09^kk9o+o*VzwpKZu6s<zG|a-gn3wl69}BV&i?A4rvos%P zHP+<Qtj~sQ%IDaM?b(r?*^7fXghM%!6FHf0b1G->Juc)DuHrgw;2!Sfejeuc{DH@K zhL?DiNneYOQ!=LJ9n8*qScpYgoMl;_kFgq`Wjl6c7j|Vg_6;1MM{;!FWW9jz@;z?i z7VhSkfj{V<d4^Ybm45~%9_V_*jJ$){n4g7Nl%-jQkFp|bvmT#e<G|+nd3In|c4H6r zWN-H6c)rakoXz*RoGZARYq*Kqxu4(gTb|-&-Y_WIpGlaVxmlPGu?)+yJZrEfpJW}@ z<x_0HMr^_7*@i<nif?i%XL26j<3cXw3a$#=s5kL5e$Fp=h(GZdFERP+(SA(FT+GY+ zn2-5cl*L#wu#_&(>U@gz*n-cqEjzI%d$AAuav+BXzM;o*9Ov?VF69SY5%{T&`MLg* zdwGE0@HkKM9MAJAGYpRQe`aRmoy^I*0}JZne2kU(6dSM+pJfZSW;?cL7rq?WUBAi+ zoWj|Bm+x^2mvbdQ;XZ!N!~Bsy@i<TLFD4!m?Z+Delj+R7i}x`f3$hqXuoA1W9-m<o zHsf=FFX`5S-E<$m#>t$*d4UUb%!T@WF6DBr;d*Z7R&L`Ce#Jf9%Y8h;qx^|K^EaO3 zdH&7BL!;xAg10dnv-2+IX1>5e`XN5TM_Gl{`2-uY8J}Z!_6h8-U*lj-=ev9_aFLGr zkzU8G+{OL;hDUjvCwP_@c!_`TDpL)M_H$ZhU`FO(VOC~MKEZ~3jxX><wqtvCWEXbl zYaGfEe1l^-J#dzu%N1N5xK?lG4({S^e#ayHo|k#Y@MynfV|L!lihP{4S%(eTl5N<I zo!Nyw*_ZwJ8V3aq({FP+XL1(ja1mE=JwN3xe#Lz}$U{8FQ#{LaOgh4N3(TUk@^0SC z2l)`ovMTGaF`s2Kw&3$@%^n=bH#vdRID^Z%nOpb`5Ag?{<3(Ny{9C6QX}<)f)0vo= zck=GQ+`1I2u>l*g37hf-4(13>;8d>UI_~1<{EkO>f|r?WRP;G-VO|#D!z|CoS(k5e zGUsqE=W!W7;yNDYd0yflOgcK+zR;AW-@$CWhY#=}mS<&F<&$i{CTz#{?9SIYf^Tsu zr*kIPatn9y3x3HxJi`n8lZnPe`ynxtF%8o)9WyWw3j~(XC0T|QS(%Ts2A>XWpnI?v zdj}5IZ*qL#MEy3WaV{5f71!`He#`H8nYX?X?YC4+$Bew2d031kSb>#TnKf9Gb=jQH z^Ch-p7xv)*j^?DmX*%X~9dn^x&Gr14I|F~vM|q6L`8zK&_1I|tr4P)Yvjsk+%kVMQ zV?(y(%k0VC?9Txl&e0sh@qC91xQI*m0atM~*Ki%zb0>H4Gk(GEc%0{WnSV0zxM=^~ z#H38lTbYH~cpr<fGOMy0Yw~H<<8yq8tpa=NF`UokT+MY{&rN~b^eLVW{6(MRd0yZp zCV4a3Pd76K(=i+GW^U$V36^9<R$?{QVO>7Or`eR9*^fgwjkCFci?}rKL%oh0xQjpY zc;H!mjycCi`{!O3XGuQJn(WMOoWccM#MRu$&D_DCd4hii-Z&xJu9VEe9L&Q4EX1;W zjE}PkyKn#paR^5Sj@J|UHm7nL=W`)fb1gsS7VhR}yu!p2qtBg;dHDbfun>#$QC8w( ztjZd!&8PSb8?y;pvNb!fC;M_VCvi3xayeJ=BW~k%e#$SokB4}KKk+yI&WpUt+a^W( zF*VckPUd7GmSZJWWlh%M(`?8V?8ZSH#fhB8Ih@P+e4iV*nLD_LXPNx1=<}suTBhT@ ze1H$KJS(y)pJ079;0x@=SJ;OGIFREwiBmX_^SOlYb2GPcC-?9GzvE&4#A7_i8z)Em zCpl9x12Zx=^ROZ-vl^?j7N1~kKE)T=iQU*cu&*A*5qyI)IhPB$oF8#D*YX=4<RKpA z&2LBhB@^%FJ$!%#S(w#Wmrt_+pJ7{eU^l+T5qu+Xyq>^`fm8K6oWr@C$M?8~pYs5J z;xQiQA51zW+CRydf*E)x^YQ@}V4=Wrx&kY)3Y+jHcIE&M<yemAbk5=eF5yzH<Oc5M zUhe1byuwsdqx}#wpDx6Q0w30;Seg}CnbiX8>*v{#o!FgYIf2tTJ8-dH!sYycEBO)E zaXmlgF7D=G9_J~Z<9YtYTc$<(FE0zQ9P9EWcIF_C;#AJz0xsnH{E+Lole_s9f95&< z#T%w4`sXhzv-57=%ZK?GALnx%z@ePQd0fslT*uG&CBNfg9^v;q!ShT#BijBfyo<S6 zjulypby<%uunpU>1ADVShj9XDaUS30MsDF&e!(w!oPYC%nbGG;&J?_jnV5q)nU4in zgHNzITd_4eup9faKZkHMCviPL<|c0A=iJL5ndqJ9^CjUe%*F>;j^$a2&DfIt183`) zi*?M8^cL>mE*|91ycBp<=bsgQj-o8VM_GwgS(8t&37fGcUu1XoWPc9i>m198e2X(U zD{#JE%w_zMr}!uDogID7!mP(<IVf;~p38T+j4QZ~-}3@f&570*Gp)Xl#aM~8*qOc9 zpMyD%3-})2=eod+dMkGaexdjASl|gA^OU|6c<bEg^QK`I-p=eS!7?n%ihP`{*o*x* zo^SCT&f`L^<TifE{XEDsOf)ar{v?6vbVlZ7K^9?UHe=hsPI@fIaXRPlV{YSie$StH zoHx&pwmS>+@=;df(|nF?*`2*Pns4v}o@b&3(fac7K^EtutjXRS%o%)#TloWTdN*2r zDyCt2-p%5CgcVtbt=W}5IfDzinwz<UpYw~rGdkvZo#?%2yHhYFQ}cG_;C(C^SWP!% zPrk`Xe4nehmV5X$kMbl>Gu6UqdrR;UR%dH=Voy%zvcQk@8h*x8OtmOl-yOV<&G-^~ z@NF&$+@Mb|(c);iS@-}SWO>$LE!JTJHs-T@o-eR9hj0uha5mrN^1u!H2!G=_re6|$ zj=Om;3$P%Iu`J8;F+R^xoXt60#!cMJeZ2YoXgkvKVLrwV?8?4;or5`vGr1^mmEO($ zJk1Nd!oQewX|#QrnTsU@%j)W^&ANP=EjXC#xSk(#6F=jA9^^5eWYJ~Ob{6O3e1`9E z71!`Pe$V5)!asS#@@V<Vn2PtX7N2BYj^Y<Q$aB2FD@^r4w4O}N#|K!5MOcbuST?Yn zuF0ls&gc0Od+=Q@;YVD<&HS7{@h>J@5q*w3*o6Z)mXr7{7jp|g;jg^J+g937yptu^ zfKAw*UD=JVaX8=P8gAo0UI@&vD%y_Byq`r_hIIlP=x6vWyRavRaX6=O0T*#Kx9}i; z;Ez1ZKlnFOeHeX?e0+pYvOZh0Er)Ru*K;!u@(j=OwvVijrPz;yIhiX0ztUIv7n84! zmYbUQFb~VJ4xiyjzQO5ymrJ>l>-jl<=OyM?6KzLn)?hPE<1EhS5`M-nc!WRm1h4Rh zwbA;L@)o9MVHW3O>>W5tPvg7%gugMvx@dicS)7lu5^J$JUt%}*<5*7OyL^wUxrV#B zmj{__eY9OU`5+%*BR<QQIE14(pC58JFY+(u`8d%(e^pt7HQAaS*oCif5Qp&%PUT{L z$(uJs>r2P<%*ag4&0;La@~q05?7)5;	cn?L5F!Ji|Yja$~fed0B+b_!>uZ3}<r@ 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%0DFX9h+ekT9; z`cwJIug`>U-~Y0&|9(G>lm7~*pZxt<|62bkJ~IBX<CLEXU(~<W`uzSf-JkTM@}vKJ zmFhRkFV;TNr&)bE=ZjOz{_*_x?Ji{l|3v<()2jAi)yC!doAfE=Cu^TK8l5`3QW}5b zCr>yb=yTzFWzzq&<weJL%j*-xpRa%7^^qTbJLIU^;e1cub3S@8@Td4~W%Bg_J=?#s zXFk5|`oDbQ-n~M8n%I8j)R3Pd{+>H(%CS=y=j}uI)3}cx!Uy?Z*ZcZi{`Kc4{)+gB z_O<vDfBEyv|9<>hep}k}y-ER}?G8VFQ}Cbezrp=~^Qb?(^%1`a-@ZPy__h0&KJ~BH z`h5G-^)ycWMEa8aPx_JSU-_5f*B>YU>Ha>xY<ye)5x%8wGW}++Cw)ozk@|;`e>{B4 zzdrt~{<iDa{<Hegj+4F<K79Mz{A2G=_96dMexm$t?SI*0t#%Lkf6k;|&dU0GTN3a5 z9q}LKXNphK=QjTw_im3@!~5%(R(<=A@9)L_llT6Z@ZtAIi64o73&)?CKC$>9{1Cpa z{<rt1{7To$KR$mE{)m69f9?9IzOeZI`|Bxx`{yUAKBRHwpMRepWk3IV;t$eals~k7 z|NSt!KaEp<iSg~_2dXa!zZCz(Pc$xk`}v2~PyI<6m;e0vqyF^ltNiE32gSGM|IvMa zQ26!Vf712-^B<}|h(8IR#BbEUC4C#8uX*;TanheuUuxXfH@d&?f7#FHSNYH9FX@M@ zKhSE<2}jpR^ZQeuRe0~kv_4XNu1j9OyXW*HKkQdf=A$159-NN1S#aZdp}rP=*CZz_ z{c22)j`{jm`7P@oZF#ftwc-1nuho9($ngAD{5?BKZY_Vzl6v>$zW=KI`TZTzmx^!S zKExlyUlbq2?-aj;AG$y3d*XkM`}mQ5_w7sZPxhz%k$xh5NBNufC;a>M8`ZZoKk*;c zr*wbChrfRL&)4t5m#<H?f4{#R`NiX3;m^;X+P{B)8^85R9nvQ7TdQ;Xb`1Oz^MB;G z+6!K)6wV)RT($R4S$($5{r;%%>CaF2RDSa9EC2iPrTWL8pYTWgLiLsW=hs)-zpo!C zehB|m|7zT~pX}r3U$PJJKk<*n_obDZPY&m^+iqQdQRtsX{*33dZG9zu;`e9l`X29c zO6$;nxO3KZE3)^qe){wK;kP}!bnuz!`0&f_yeHs4=I^0LK0SWIkiG>k&phYz(Esk* z_}ja}^DW_je&T)qiQ<#uNA}O2FO@!R<CRCH^WU?zNQLnJhVtj~q<fE%HQv7_-#^#< zK0k@y{qKX5|K(rb{!~9v{1d;*e*XT5A2jacU-9SLhwx47v;DuJyUy4%@b7@<ixp(w zx8IaJe$&vWM|8{km+nvXAL&PX{l~XGepkR>pPPrb%i?oY65`~?f%)~>__Og#{W;=S zYyaztK3_UK-)MVxwa>!(V*Y!5!?rIrx6JEv+0XYs@hkB+-CyyQ)i<AyIql;=zE8Ea z(UXCnG`==zk`@SWY`rJ_U)uxz7y6Iy)O@;Lz=!zh$3MT1TxRaHDFHv{pL6I-VgKUS zACrm0%GSE5cHTb}zru&Fe`EdQ=@;^U)F0mUn&0pLQ2)*1!{U$pC;VsgKk-Jnap8Q) z>FwA2C)hXo*UL|&pNU^dpXz!azgj=(kF5T+_R;me|K(qQJjS2rU(0`Xe$rorAL19) z2fn_R{_yo3=_jgBEWeGp;L(NQ|9##*zs$km`;4)E@ZQfP|H!_6eM9yke38Df<4xzi z{&V=g`{5^-m=^de_NPh|sos0gae020ef;l#DL?!86@U2nr}!j&Dg62RTKwa$-|AnB ze_9{mFY=QYf7E}B`rEsn@`v)1Z~usI@BTEd`}_Pu`j_+{<qwKK+h4T)rT7zn`t>c1 z)BI!~!l(Elt559y$Uc<+WFNo2p!`kyqxh!$ruAj#gU@Py$hm>vj$QP?9znl}f0ifx z?pwTm*co~KMfE-9AMvN3pC~@%A3r`dzt3M}Kf*W7Px^uQjqpeOWb4l%J1_bqykGms zjH?b0{ef6to}GRG;k?HA{AI7V@uB?Y<D2+d@#*`I;)C)F@gwO2!l&|Q_WiM42Yq*H z=)YXE-==4R{t<tDpIq>Avhu)%19Hztq~Co0r~a?-lht2;@1HEb#<qEW=7s6{y0uz9 z;)!&95ubaNKJlXqXXMXUlK;rQgb&T{ub=XFT)&rpg<rqE*k1ii_7Q%*bD!VRxcD#Y zFTXr!`ry!CoHXr?Ys2^H#J}GszkSht*|W#xzpo&C`28h{FZnN<-{MRA_w^&)pW;jW zoc%w?s9PG04)}d=N~;Y+)BTH|*Ch*UJ}|ud$UJ_@|D-?Zdg0H<7saR6@8>7d=gRMX z{ipeT{YCkM_|@Wn+q%lTS4;g<eZp^}viJ8VB)646=86xx<-dQe^=03Wu=t|=DL?xA zr~FL%QuxpK)2@%MC;g!P`T0-x_v>HcKl#V6FDd^LzUg`zr~MIsD1Lo@6My*rqw6XD zt$&9+xXZ1ffBEo9zn_`CAFwfr=PP%7w$JzB{o^*bmK_?t?<4$gP9D7Qw}w4-ySL!y zZ3S(^_Z<%S;<he9KWP4iNuNtEn*Y(Dy#7}H_3IbHuddJR_hQcpn+{9o-+A;=cZKsK zvHl3ZJ8wxozi53vzfk;A{Y3bn{s_%a>$mu+bIh7&f_?Vbdegzdf3bfP?sNNweEuPP zS^Hal(YT*qC_X5ENB?^IiSje)XX2-5KW~2Ok7|8>{bBnn=hSTYX!yR?rBC#FH1zMH zerVL`nzh9S<l{^H<>wch|E&LrKWY8sf2t4Z{@R~ke<=U^`GfKc;a~Xm?@#*Q>SJqv z@oUC!cAWAP^)E<&h`)S&O!lY!6aI)l6<@x-ApNBH^5aAN;O7V8AMtl~{?Pi5>Nn!| z!sQQNpDDim`ZeZvkKf2Y6n~^2i9aYlXnlkqtB<Vz<bOZE(fky@n%~b4+Q08V@fVHz z>!<i3e8~TPd=kG?|DX03^P`7f>QB-9y57$}qz{RINM95#fBF1H>r;IC`zu_1?dK20 zho3(cpV|5AOP>CA!6m8w*>Y{=>f!sGkzXqxdRzbc<MR4d{O0eU_@i+A?&lBEx8ip{ z{%m}`f4~)cg#Out?*|tT`Y+z!JO5z$Y1P!W&xZ3k&5!x~yHMZ7`yagRryDNboVTCl z??LmXObq8=J{?prGMvAN@#B4e*y>lypIX0<537$(>b>rc2I>3*+MhW+>_6%k@B5lm zKhpXXf3!ZIpNStdzn`B8f3!cX-{)Vg&&Mz6U&@c9?<oFA-w=P2eQkYg@k#Yt;q2$f zH{~b!-{&vV_mm%GU!UJ2zj*o6#;3I(;Yaq*`tv)knS6A^G`>qUJz-Mdr&#~5ZgcVp z9Y^NtTfztVkL+XdwXOdtuY~XGT-N@C|Ah6){;QIBKH2V{^pEcE+h6we`Gxuuq#p@C z#4l7oNZ<L-2W<V=|9|y&yEL`$9UosfG357{ADg5PcsF$JTTt%Kc3Z>w?_G9&?e1{? zJFY+d``_sw%*sFi)wpjz*~ed>?4O-4n0#!x!DpxQkN)lFLD~2F=O)K4IBURu59Xhb z7OsBu`N77|t^?lRBYeN5=lO58&(1%tOzQmjVwDaR`W3vs+t5<s`&#R6{?B*Mr}hzl ze34Wg-uI>U+w$upd~9!jFZ##h59vQYzfydNf3x$UHvXu7r20(u@%!(Z-_PITPha0s z{vm!={Q3Ba`p&aI<!7=VjobQq_Uw(t!~b9G@Y#ZQ!ugGu-%8ee<%w%H<oTWQkNCy+ z57}4x(dS>Pe~I5U|G(!S@{i>Qi+`%mgb%+zApZB)zrFEm_345kFBY7a;^XIA-Z?j% z?}+`84(SI(n>5Qmzajrneiwc+{bB7V{`c`k{VU=J#doH^U%RUQ-r@PoqLBr~!}BZU zzl}+wt*cfPY|GbYl>Z6;#2>=fzt^9{4~l=EzheIP_>25c{)zpAc>jwAU$rdgi`8vc zKNR>$`D>N?eKm_;iyy0R?6~EJ*Y}#&I_S$T^M86Yd;jex_xY*TpW)~4@9*PR@t^tk zzS%>&hW<eDlU{uw=nL`hnq=6N(bHNjx+i!3%j#o0Kk09ae|x>~nXT`ij#K_6{-*ek z{1owH*GK$G_*eY-@j>}P{_*t*?N9jf^CRhJ!awOls~@a=iC<{_wtl?-?K0N{eSgo{ zr;QEgv!Z>y{vzoU;s?T?&F_=Ccd8fqZx7#fTeA?KF@CyL9{l^BMe_BJ?310ZIQ@bN zLk~%>uT-v6yK(9DQQvy!@9g~6{-nR+{k{13|BZjr_tgKUaoOLG57HOPUp{|Re@y=M zpAQp1)BbFJvi_&~g7{zj<LfWtS6%PxQ{l_kw;K2DNBs}Fp4LbBBz;5rjQmUb&+6w> zSDvvV^xtRKTz7QfpNOyD8g5<H<@0>~CjINj2l-$5!N&*jhvF|ge>-wenSnvyZT#xl z@>%`4IN5XAgmHJ3&DR&i@A8koKgvI{k01Z?kB?v3&+lJR{<QHs=;VV2hx{_`+WFUK z-$&Y#c;Bzr{r&z8*^l%Y=?AUfw~z4Y`$zfNUqA6X)xYE))i?h7#Xr7(g>Rq#Xq@UR z%HLF9T7233LHa`b&*H!1F}uGO>Z8_Es!a&-tNGU@>EquwSCq@w$E1IWUuZn?pQmp~ z-`f3I`^f%3xbI)cepDa$_!d5Vd{O?i@qb;_D<5y3`e$zOv$ll(e5~KR|KFzdQ~sy; zD;z)XFv;^D#UJHY>3jeCCFFnV-x0qn|77*wcRTMeA@pC1|2nu$$lp<a20PCvp06K- zzl>iRjee#|_&!FH25sjD|H^;a|97-#zjSH%{{4P?-FtngFNCj`lS9%!&^%*K{{0E@ zk6+*G{{DF3?C1C2g&%*M_>b}v;gj+|=|AFM(w`K6;%{Fc>;8U!N&e6H+wvRLFSLKU z-s0cRZ}Dx%Y5%mpn4dg;(fWM-Cw=1Mlj;u|*ZQ;gw)>C$4{!ape`2o}Kl=Ge^ZWQA zeM0pM#kcaazkkaA;$PoC+P}|Vls^dn;=jy(Lred7e0YEN>a%|t8=jxU{WYj`+ATYE zxwqh%gZ612zMs?h`rT>-{@3+elEVJKmGv+23)MebpRYd%e}o_6XKO#ZKdK)JSKs*O zuSg%;`snD6TPBD4tmlXl#l!iNi0`TUpY!#QkMsJM`isObvVV5|(%OgeulUEuKjl}g z&(}|ie?LFb^EaD+8@~AJ$ngJfoobz0H=Hkw{f|da->3g)@8tU%ls~n9pZ|#eg%96; zl%I&7Nk0-l+4`sWhWV$3?<+rhN00lm=T}>k`2R~2UvG3)_<yrX`}Q9h#^d^z7p+_B z^?G^zN%j>!{P?2yr~51a`1qpurT8QLLH!@%AIhKN58r;o@3#K4{Gj;p>rc{e<X`PS zyZ<hi@3=hh<FI~{wuSsA|87h=qzAP2n3s=VTA$*_*JqJ`J$*#^gY*&Ae>VQC{fS>? zf1jU}pEG@7?@#lSeKel=&)z@Qr=EQk-&uWYua|#)d{g{Ke)8tm{{8tWzv})zzmxxo zpK1RTe-s~D-|udJiuh6a*YD3#{v!QH`Iq>Y_)p`cUwwQFe}4a0>+|nV`iJ<%)=#6C zj^8_+A1#0PXS)S`8TH$pi#~qz*sgsF2Jbt6O!)uh;%ztXlbz50F8S|Q$KU+rko@^l z!Y{=y<zI>~s=sA_KmI5_v_9W|+P}{~#4j{I*^lZks()zx_WD{2D|HU%hvNI`!q;N> ze=)y)CVfNrCVr6p{QOS($>z_K558|*&>zFwowj$-AF)5@=?|^n#~;Nv?T_@G_}#ZZ z?VtK1q#tOU{A24koByqU?6~;N*Y~7vh+oM5l%HsQHva7XNWT)lkpF3al;4G4>c9Ep zG(Y*D?3b%=ereUNeH!0i^yp9~oDY+IHYOXdJonba8|3>h6knF#e)`Xo3qyYGyXmRR zLwy|aedAdN?z{YreElN*;p=nSpRKP}e$c)k>~HrEOEe7c-$eZu-w$n3>&kn>`Hy+C zD!dT*E#@DuKSK3~)gKnW#DA2ZsJ|ip@$n`5`Qwq_|80FBeE9t}jr;mR_V@KO;g81Y z{=%=ne&RRPcmDbbKZI}bgP-3hzYzX(efE8iZl9lcK=^-#A8&bTUg#fc|0|OnuDPS= zDR<@Lm->G;K5cx&`1J5c_>SxIuBZBl=BN1F-uj#LgY4(mUo=kngYuX1ua9q9KiQA; zz3l7j8{OZJ52}ADJ}5rL&;I;WpV9L%s;`J&Xnw_yuiuGZNxxHkko~m2%>QSW-?w)7 z|HQqQUbJ)g{#(Sy_)l(}SmDWh|J~{n%Ri(KX@5~adHh5AM*j297YLuee}qr}`e+|- zeYQVYd;QVvf<9_n>ep+s{`0~l{d=f}Ll4RGf8q3Z=09tH;vce)#s4AwpSvUI&!akb z`{Vu0n4jbG8#_Po7saQ=r@g<;k5el?RXX&iK4^aR%Ak*<f4uMKDn5LDqWk;*PfO#Z zFRA|0xc~pR;%EQ)r>^(=&x#)(-xR-!AOHCP@f-0!;fLa%@{i)n@6Sme`uc$M4cU+4 zlk|o94?aF=obsRS@7Fi9KhmePKjJ^F&&My-Cy~EA{uclE_@?|s{RhimmftM@+Hu04 zuJ`>%`i|n4o-dI;vHW!H+k3rQIpyz1KDxPS_Wj_ENj#tQ&@1IygzsA&Hn35x!0%Dt z+`Y$H<4RY{>l3QKX@A!KTXrv3_TqH@pU*z^%Fy4@{?@wRcZvNO4`0$xnZBL9SEV}P z{gdHm-rVi4=O0$qdaLUFtMmGR>Q|}{Xq@mv`j*y5_NV+A{qNbA_?7er_1~$#OY5`v zvhi*EC(9=uaYFdMcD+jV&w3%npZI-sQm$wFI<sf>D`>jl_k+Xtk%}JOziRltcD#P! z&{89hKPrzO(%-}n)E}|>?TnU<?+f~O+KI(m1pO<1Uz^-I{ngete3O5FT>R$ibBb@e zUi<g+hwS_B^%LQP^o{ao#t#-B6hDOj!s#bp9}$00{-pd!@j?27_(%EI_pkh)J^!nB z^Y^=4km7gTYt1hW=Vv2-U)ye%sgD)?=kG7r`&<8#zKQdD{73OA`}+7NeL?ut^?rS7 z`Q`q$hpY<xu<Ed9ehudbqP|E!@A66S;d%Zde38BsKED6+d`jP!8kIgLo&U4r-xw6; z*ZRIs{;hw7udM%T{cHJY-1>I6g!gA^PO4cl;48*=$+N~i{KKsN1?w(ouuFKqtxc_a zx<37<eHJG38}HQp-jDP4*<O4QK2^W@`jYt1<_BvZx}N&8RKLhR{__*fpS>S!*BA4b z7k?4I-Z<4awEu{Yc>i|i)@~Ti&;HbCZm(e}K4Sjr)2q#_<8JDo`#uZhAHomuE3KdO zm))PWf8qKkKEIPbC;KS>`1<6Z@}J!w)rVBSl6`6YG%o-8&zEVO@`w62+5aa!@&44C zI;8mi@zhtgh3C)F|6YGD)@Lz3tbK`p$bVEHQG9EDA3x+j@eB1Q{Bh|6KR&2Fkbiyt z7yo3>x2l$X=ho1l{kha`YeRja^?#Yv>wD70msP$m$4_KGUGLkE^dqgG_<{PD#Q&6E zg+E_^iy!^|B<Xv_cc#w{pWN-(&|kTu;Z7yO^Xa(%fRph4?^T!IenxnI?7TITH)ij@ zEJ(^6(xO<U%k%m-<{vNqv_2m{6ko*8<bTTlR-an_kbnI6QvL7yhvp}KB>vL+{rPQt z+Wm=tviir4%l>}-Abk4zik=@74nKbWA^wtm{q+(4sJ}z?rR{%O`;z}D|J(Y%*Y{7h z2<K0(?YZi)tpD<B^7u_dpB~XIUq2{6Wc5qeiN`)$BfWl)ZF^rB{{K+?HzT<?J%Bdo zn|=jXbnAM0ct7s9Th@LZ?k{|<Od6*jh*{7ue}CdX!WTW?(f%`hZn=13`%}~PRl8}} z_o2TU>*ITlne*YQ1^M;G=ZBHMT6OI+IP~A1o^$_mq5l@gyQY62-Sw^f_kk!r3E$Ko zDICB1{6zYO@TdIX>j&j;e}3y9i+}R3;?IxY?bT1)Yahx#w0^Qb@mI{>5x>^H@{g~d zV*Gm7+xR`E%Atd+rSZ}9>A~j&e$f1jlAtsG?*9WRe-nR_eF~R<vif4si4%7X{qs|o z%}lcQSC+Z&zgvE__NDlx_$T|wzL~zZ^HcsN{VM(7#~0z(#_zP`t9Jtb_8Iiu;=sSL zK0N58b(fw#BhSBDpZ|Un*`MNr{A2U~xI31-6Y^)f{p$XaKV;uU$rq3RSib7Y{PRbv z|DU+%qsznho2S3KZ13>>o2VZiIO3+7Pc_f$XW}2--{)7_pYZ47N8|qY^Ho3i^@;S2 ze}Ae!DgTpwgr6+`+xQT_`Sv4yM)9fr`THk)Mt$P(FXb0oU%XbYTfgvqk7A{lFAMP( z^~0mzJk-0`;r$AJd*X%H!t>{AKQ3q(_)p_MxZf9#@$0RR^r_{qDrcP2F}xpDeq6!E zFn{dt)K34v<Lu3Oez5t+`d9w<>r1LXwZ9BMCvMvBq454gxvsZ%8j`Lr`aiz^VCSd& zOXJl4wCiiN^85y^)AiLjtwWFS{2=o0D^IK$)p$vspS1sMe|G)kKjF{6UikCR*V+6s zb%*^rgy$Q#zqEOM=nu(%%aURv9&B*O<^cu!T)*bBF#hP+7v2ct+W)fT`;kLF7`|aZ z!G>Btl?&%HR=!=QbU2@(`8OmpuW7f-nMdW{zoGsr>354?Yd;%*c3k}I*XQzI#!vl@ zN=mj#_cv)~%h92~ALFm{x7YP6xiFtUlplP4w)y+(2K#*${y+Gk!7D0-{!Zk-|GR$k z`Hl3K^}n@`&A)bB@#n{Pj8BiBls|m^OXIYD8n^bh`;&it{X_YM_D}gk@#ptfD1M^8 z@$7Ho>-K>~W`zHT@7cBO*uekNcbk&*?~4}i^jV(2NMHQZ`r)aCZN3QqZ~w}9CBF~z z%YPe^?&$&T_piz4AJzX^d|LlWANk{2pC3QuzZjpMeF<OEA3pzx|NZ)&?yvgN=O5C4 zq|c&%y#2@g=Z!1AegDXRK0i?W#QfvUPxe)Q@X!B{{-ydr`^)<O7QfqDUt4|l;DO6- z5C6|P@`s=9$lf2_n0U|ch+n9_q4*<xP4P+mNck)Bn}-jo4`}~U-+T8b{E+>KUrGN^ ze~{KMeEIxD@lX1M^s)Tw>t9+Q@h9mA+0Tz(=?7mQiC;5*JG;!ookISN&;O!-8+E#7 zZLtBp3*O&(ec$l?wtjua{P(ZlZ%+SyYSNo+^ZA+ji=>|^zY{-M|E!!nZG6>q{qx69 zTowL5E9TGc#Va5B+k$+3K=>#9N&HIrP4VgH&*&d7zAgV+ekc4Fj^BKJNb#fi%<yN| zXZ>f#DL%A*AOBQ;%f9~ePnuu$_w^m&gZP2;0nJbOPxkZqP5hqK_g`$gey32MCmVlS z63!<^{d0c(@t^!OFdttU&-CYtbG9}J|L@nR(JebanO-0FKXZp~i}W3tuWw0T+Wd0y zv`6+lCB6Tg2bWb3{jZpxWB+;jmWt)W_lb%fdft0M|Ht~fW%H`TcN?GA|GM7CKgDOP z-@W)1Kl%8ReSCdL@oW3jHol18qW!$}lYLY_`TR!tpYj9QSMl$^UupBBwGa7+_=EV@ z)+c97etYkL&k3*fS`wbGM}G6(zqRq*edmEkh5l;eACJB#T(A7OBJti2A$}8nGX8E+ zz0$?u{C2U0!<vWt%YRdnS>G-!zW0au_dB$H|9q|ZD?5K+?Js<0|G#X<<Np3{d}jF} z?XK+?{@?9}NlEk2UzGh<Ci^csf4_PI^53u1`h5LK@oD+L)uI-chW~HA<GOunhyGjS zkG<}i^jXFBdH&hn`hfbo)IX&9RqM<6-TH_0jqvN|Ps(q~kN*47<Uis!(l?~f>Hg&3 zhz}3ny1wxFp<|KWO@jV^w^FY?!v8x(ey))|;C!NAUf*jxi~nsUmw)_6{x5aRRiQo* ze{4w3oH6ji+wRX_PyBB6fyEE;C)t<upZ4e1S9E{E7u7#>y|ur!58;#cNBV*CgY4t? zuc<#p&-ZP9v-_v|lg5?*egD(`BmTYkq;c)f&o9*fA^Q~0zdnBu|HyvX`5NmV#jl?q zl;8dOL-CR6gI2d)x_>yIShT`j`-J?h>wif8*R({D7v9U~PpUs-{o(nK_*wq-_ec1m z{9*0)QKuCx!}-f+D;zj0)Gtwgde1M2e<}aV{#kyu{|_DY`RX<&pU`n+-u@K-q%UZk z>~G`ar=<gH1^v~a$FJW8{iXG-O^Q6e>j4Kg$giLLPyIKFAL3_=pMoKk#~qQbzub{0 zt_tgq{Q>X&$yncd_$GX8@A`!wzrLmTmp)kX=lh$MU!<@7`cnSS@N2J^{rvb9zB7LQ zWYT~+;rvYV9?iZD^-t`79M<5$$-g(u_b<f1KEDw^6aU-zwELs`lYN9g|M{7&&+KF8 zC;w7>3!hp2R-?>-OT+uKBa7YKJJ>(g|K9ttv_I)HfBmH2<p1pa<kmf>w+!`hr|I{+ z65><%+?-4tR<_nfwe$Q!`jYsW_=)tD{FB-D@BQcZzlh&yT=w(-KS2EBpHI~O{rDyR zQU1vMXZJ7u^z|X-Z`t3Ef101{r~Uc(C4MLTNPlGdaQVjZqfbupJ?-;vHV6F?^N-h` zqWuv+QU6WX`}mc<^YLN%-TI&KNBs@*pY8wI`H5fUzsx`OdYYf?Px;4Q|7!h*-wXZ6 z4l}0J3jD0=XC<5F&Ans8r}_RM#i#D?#}ADwK7D-<`PtJ)@=xL8f7h~uUJd8RJI|R| zCG21OTkW22qWom-YyGSE_U%LZlH#BAqvgLM)k+Tv`uh9^6`suezae>M!Nii~Zp!zE z#1B4xN&nHf^hKsW5AA)(TkX>IJ@euI?}ziF(f(Ja1=N^B^3SiV{;>Af{e68Y|NG-{ zeh+`KzVgPUAAJAIKE8c*y`SHyzfJjv{7d?h;;(T0p84PUkJhL7@%68*&+Prle#GBV z-$ws$7&~QZcs|tm;!OiXe2E{nB=P))onQR6^w0XK@+GHL4&T4I?)7V)3D0j8-;3S< zFQEKr{nO>kF6V^%KXPil_rm=nzZX5XWX(G5^YNwpl=YYG`fdE$aniSi^RGWY;gk52 z#ucBL{yctu)zQ^c`&E1KuwTOY75Q&tvg`3fT2(kPUtf~Gr2e_C_v2sw_46m?C)v-p zuf<Q*qIY%)&nKoWJZ(n6x9XEk?)Q@wUzz=G7;x-q;rkP<mrN}Zp8v=EaKh5B#`Nfz z&p&qkum0Zb(r|uY$%$>62Ynm$*O+_fb-cZ~SHETU+jMZ{a^ZaOhBEyYhU=sLuKM0R zqvmeP>mRB=<NPuHE&l0x;uq3)(f;22@}JL-R6o=Di9f~9KE5bF+WxAwFXcyzAA7xx zZ#ypj^YtaoPy9^xC;!s8)qi$>WPjRU<UbF8lt1kCqo265d*GK5w~v_hd>Wt1e`^yj zK5hQB`?K}&-;ZbfWXFYXzyBfs`uc^&<v+hZCj5~8Cw`**8~X>*zZKv3{-r}x|4iEH zxiiE2<uO0>t8nS+uiwe*2kT#J-|f}k|8)I!eyR`X`2q0@;gjk^;s@a~JO5|*r}*{p zMf^eQqvsFAKV(1RAI+aVf3*8o{P^`<<d=wVdp+ehs;`v)e0^3pd}aP?R=WS5C#LaN z?Cx835Be+WORs-T{-OGl^d;3_iho~!kbfzD<R8C(NcxBTOZ-6gRs8tpFD!nxmAYrg zaDHdh&kYX_`Z(&RV8_4veh2Y;)VChKDSr@ukbWe7rg4j($0k2kE4)82>xBt#KbP7^ z*Z-0Po;hzx{`)@^|Ke9aJ}E!RKfXSs`i}fV_@wz`e)jxt<L~*?dUifNwQr^2@0AMm zQS{HyBcC2WVMso|Q++`7HR&7TAK`=S@Aub~|NQ=(9bY@E(yZ`&<>i)LpZ{xrC*b7A zf%*EA@Tc|r_@n-b@ayv{<zM;7=TFifq+dy2M0|Ppr2d5X%lALcFaFN-!5+_Fd|~+h zP~BoZKMDSg`NcawZLc42%Z39ENw076p8>~&{!r{chB)nVRi2-;|E&Ia<eQxz4*j{h z<$C?`{Wi`2bMnzub#Je?GJieAm%YE$H`HH<^Lzf0ef|8V`}_E!{6qL6{L21*e91ok z`oyn(d=Y<>zAfB%rvI$}WIum@;%C1;m45KYDSuJ?$^O3mD1TUe^vv`_PB}7-kGHSv zwKbeCRQ_6*jP3O8b-TB@ub}MWL(U2L>*V)N>L1QOi~klTAI*R5?q6@o_ZMyaPU}<i z(H80T)$T3vcF2DkU!4@B56JGjKOcYOe_fwF|G)aXS6hbnuMe#>t8sY$I_jrB8|Tg4 zahLr4wSM1zq>pWWxA-CcCH}YmvG*taOyku5CVr#*Nc$7Mv-7k6d!k{3@cg{bnob)6 zK4jljZvR{H?Z<D#ug9;t-q$DOf7&0#AL%RN57I9&KgRu+s<UBW^VGhzJ67B=)IZXH zYm@Zz#v}H+Jg+}V-xf~)`1(-!B^&RtVD9JP`Nf?B*RKxiQ+`^P9C};-H&>L)ug~_+ zY<!3xeEwB@Wc*>TkMl?S*>Q@0@w?wYqW&qZU;OCfSL1$s*!s`zkMbMwv*O2JAL%RN zC(<8LUwZzd>q);^|CMO-!y`3Q{4U;OcKz`ET-7J*la2>p*?sF9dHj+-qx?_fls|0# zwEoxn{r5)+Uu0j>pR_-UPr@JZtM#w75AiSYC-E2MS8M;x)n7a|^lx^&^~(9-`GNeq zHMuc;0k%rDy#BHMf%SC{KR4*V-N!Fn9_q8m&))l)v_8tOlt0M+gb(5`x?cS5^C#68 z!e{n;+~SAwhwS6mAHsLGzRoM3ye)jcWOet47KHOB@%j$OE;wtCdHMbc^|y$Bg>PR! zQ+}c6!xrDxezd-be~<que-VG${I&e>ZM%i@fBR0HI48tUjDPR^gw<zue=+{N^;3M% z^${QO{<my8a#eW0qs5k`2L}BW>xX#0dBgK}j|k_l9=`I1`eA>v&(<XUd&5ojOXl$< z|7P|75%0WOBmBQc!O$9QGW-0RjBmZ^%{C?T=X<EXr}g>g<L&&(iz`Q*mCj$IW~EKx z`x{Z;r=Ra{SLW<K1t;%#!phK}D)n}kvSEGF4{MS=(+_+!8Qr_!!ArW&3i@>Z;4do% z`)GVa;>8!$fAU{uAM1ZR{=~KSoDsgS{J(}@+!y#g)*oJdOYukeqx?qw8;Wn@XX=j$ z-@g59ezW!^{!o7K&)3Ml{y4>7#9xd*yFTJq;y2Piw129P$p6BZpC4@g`ltIR`;opQ zekXlE`Jeb%>+|bR;VaAk`?amz>bNxiH$SuYZsGl^$lrY~y=eYNgYx`K>yP~5;ZO0I z_3y2JY=8Hp-%D=^`Qfo%Gj<8<i}|l$@AmJvsF3du#{BVb=a>C6{bSc>`QMHUznOjQ zxcI~G9}xbizLJ0Z_@Mkp`zL&n|A~KuKY#ti-&9}Ae}4Z&{OW)IgvM$AG*0=A`lsTD z?D>?%ALVD+-+w+w{ATfc#kOBQ3i@@woo{R$^pEuMD);?x!ms$tU!Sf22TUGTB7A>- zK+SgRL;pVF=jh|!X}<4(eE&rJ<nt%-i}2^`2eL2upYj9cUm90@`}{2Y`teEeP4zGF z3*n#aS2+Lr{wMp<{k1+HAEb|H|H7xAUo?N#AGiEK`JM0~|7ZE{@aJBBtx6hyyT1L+ z{BS;4`D=CZ$)j%#+H*v{e?<Kadw;urvajObw?E;B)<^vp>OVyN<>?pU&+mU1Zrtx5 zX@0-{p!$I9NBNoRtHS9=KmQSb(*3FaAbm&pp!sRs;(P3rIW;ay<L{oiix-6dH;Lok z|9i+jKE7z2`hTQPsQ$M73mgBoKB`h<$4f*1<-X#V{PNfHal@vJp4Mtn{{10aUl;v- z;)c+_8vFayb3*?!>W7ol7ocj)$=64e|7`p$JN(qa;roewyL8za?k|2>mF(O3j147E z%<B`%k2FsB)c*YZK>D?C{`c>1{b&8F{O4a!`IGt!)<1TB>Mu}!B>hbJm-vI~PvQ^K z-`byleqZxv`D5-2!#aijXsi40zixPnZ|V2V$+c7a%xwE`zJ4eF$bNo*ws88}*RRUY zKL1&Mu=t>H!ngR<?>|ueF8^iv%dU^~yRDz>^>%&Ne_rg`@P6$T<%fM8zJD3>d;0mN z|9-MH@88Iup1!g9wbcRj+Xnu=^Xc~og!(b+oAmEv*AF`*&%c)6F8=wm9`)1fEA82` zPPkt9o9=$USMz81wfh&p`{TO5KW^(|dw+_5YoC95y|s_MUibIwYnxww`eD<iP~SIy zcx|;{U*Thu`+X+Gw|{@a2icGCOZcb!VexP6r~CWyr}bt0vTFL^TUw^}d*_`!_xmfp ze|>)4%qhL{^^x%J^8?|7@JaqB`;vczKfk`F>m$DumOre2l;8dNN#AIFzWoWmq_1TE z#eaTZ!mgkEL;fdyt@Zi!G3f`2AFa>lN6UZZn{_%h^#ALgapW-}K4Sl3zptkLJZoxR zziWMd|AW@2>wSC>f5!EB_$2(%`ssSr@4mhv{vv%z`hxlg8u$4><`2()T3^PWHa>)3 zzrU~i<>Q0aNA{=qruxO=|L^zb_cx?ZeESlAlmCf-sQ#t>6aUlwDL-ice*cT=GwMH3 zexvmf{-XZ%;=}4Qiyw+l?a#-Tt?%sp6(4?l(fVn9Hh-MhWbvl(e)W<TA0HO-gVw($ zS=;N=mM2}9uMdb{2w!x*t8o0_e}7l};g3^%QvFQ$()GT6Rs8z;z~29up-+|z=Zk8W z+3Uw}zDV}}F1h^Y#qBE==~vM8kS#4PNXM_Z@SAhP|MN!uvT@rN-8+rWpWmYRCHxcr zQGG!3lfI(<f*tSH=E-Nm`%wqXSad{qe_H<eGPyM+fZrE;|F7crXDGfX{wcrExbW-$ z|BUSG=XcU?<bSH42p<$*%HO{JBK%POq5R@MpH=+$@hg4m$1mkKst;se|NT<o&$o{q zZ@bSaL&EdJD~r5bYHW)Cm_P1Z^zoy|cI{Kp=k%7JHBQG*Us0uJ;D7CZapLv&3&+oX z{-gM?_<6SRVRwh~RdtWNZ)H}$EJ?am9{l^BMe_Zz$bVjbxAw95m!7|oe+eH{|0(`_ zd{X?;{1jhwJ>ggS&tE^)|Khi-Kk!xYJC3|G_5aH&kEuH(#pj>bpZZ;ohi}e5-=X@9 z_)q!S$FK5}KW_C;k?yTt4&P6xHtYTB;rUrypZ9%C;$Oly@xT1z>r0zIZG4b^qx#$0 z$KKz@za1z2rv9AIkGlQ`w?Cx#@cT!)-p{YJKiMzCx80xk)qg%i{GoBb{}S=%@uT9y zkKgU(2kp<lKh=*kPWpiGLE}_^%KnR7e9<`Zi>>dAHhc2+i&K7S_VRCs1%8bB+dH2} z^|kQp>mQ9%f5eXu<uAW~K=>g1Q~yZ*_191QS2+Cn`zL%U{(OFxe(~2|xcu%v|Nk?; zzJAGn_y6RvNtT}|{*|Bn_33&)e=5HG^^t#RocNdWCyi5lQGU1e(E|<E9`wimi)}1X zJ)Gay_{OB}?Gp-$T<-N}eEd;;MEZ#QYxDEtJ2k#P)ED31`&0MueUhmEz3(53AF}^v z-PUo){ngUzn@ri`xKO{yzRQyjP9EE-?NRyu2I(VfUyE<bpOjx@U!OlMf7|(K{lq^M zpEka(zOl_!;rp}YZhLT0sIR0CHYNSv?6TX<Mf3O~eAE8y{C58|PWe&z^7%vl_1~W- z{buoP*B|ZY=_|UP_DA<8|7hILFLb@^<3E2CKK=Vs{#E|U^2dX(-v3y@XNTbxX9j%6 z>*N0m-u&9l*M#?1lW$hd4(I=3eX>{S6F<6eM!r5I|C0Vy{`KQq{`31o@;~W+Umw%@ zs6RveK=pmhKOVm2e}DZnKkbj!NBm3oCw)ov6Xkd6FOWVY|H?l;KFL4CFXCq(-^3q^ z51*fDe^ftE|BUb_e(>$5>ofgYZ1_WSg1))$(?!39_s`|OrOC_REqkQSr2P2`UGG1i zB7Lg-O8U<4e<*&k_1pYK`XchL7ypre<M@wn^>11(wNJedx=#t;-;w{;C1uhNTvfU} zuipqiHooo~d&RD&ruU!tev^K|{*m8*Yq)h)m(TP1h4ibg&+?D8kMQr?kMJ#i%Krbx z-k-+p{_XWt|51HM<Al$`t>4cNu|A0SvHK(bBz<n<_wgrd^bh~P)v?~N1>yg<qW*fR zYsZ0C)z0e&;up#v<Ug`M#V^&THa@L=Nq<}WzcOiK)7q*1idA{5PgXxHOTs$e>6L#z zL-9rYUby_|<4f23{4V_Z`qt)$iT#ImsFm*j;8xdk4EvA#m44o7<nc%KF6g~``<v>d z<99Cau`TrfqyL&Dx0ZinYd$|j{_^lo@j=hG;`+S%)41&8+b{0VyFc+S;aBnD_YW<8 zDy=R4Wu?^q&($08W5_>|AH4tni{sw<DZYt+$$vJ!Y<v>_DgRLXNk97dr}|a)@t;4C zzL5X?`iS%=;ZOMX`GMk(?oaq2`zyYD{igcG?_Y@Dv-2Tct9Lmje806p^Mel${1p2m zJx11OIP{RbKC<=c;Wa*O7QSCr=B2*Z1$`xcS(_Ym(z;7epOL@b=C}JQp4>8ApR}0J zDb(jNzx`U~`neD8lg|(KdW(O>hhIM^etrB<{TA2f#lP_DpAVw^N%^;M^ZWRfef;{2 z>R($Qp4+(5*n-r5bvqn)TEI`lpNAjHKg1uz543)YKbt?Mm3Z#_Bhvj{)9l3KLVrEx zr?<O3ROarR^Z2&;v0RU)UBdaAej^`j7W&h%zg(nx?|oa3?prW=zZM6C?_Y0j@%_l~ zd@l0;+I^dx-ShLjzO?$(;y>zB51+)p^n6X@KEC7ry!mCn?EBGn{gfZIe?Pu;e?LDF zKj{8`d{F#Y{Mh~3__5=}|KuO?zv9Eszv9=dKRfQ=oew`F#pkW7+l>$Wto5%?8dtfY zNZIjy3yOU8{JUX1Iq|fC;rUJUPdq=i=Q~3ih41e@JFfpLAwNWZ`>f6fFTc1fA3uao z%Fm>4Xq@_E<bSfS_V4E((r<(xia*Wo_lGEcEdLx)XTlNT`D3@K8z+SCk3{@jJz~eV zdwrA7-xMF(zu#Y>{vYKR<zK%)WA|s{lddOyDEs>QjrM2tmtCLm;hzuM-t`eaNuLnE zM}G102l1ogoA^7+A43~{)IR9n_n&L?ZqP5X@4DpZ7fv{DUb#F!k$$6b#ix&N@n6Qj z*1r@VR3DLj2;amnq`%~UfB*8opPy{~ZtX++i}j6%FM7VQz5GJgYuvXF#V_G2>Pv6` zh3jwl_@wwGe2D-2`wKt+Uf+>@Ngq&sLi&vOo9bKAN0Glg|Hl06jZ=Kdetv(C`hUc4 z(s#c9qki<(Px*=PMfqR-9Y4R2f2coX_2JP+4Vv-C|Fhpap+U$`^3OW=`wyf)slP$` zMDgM4C(A!pA4dNUdZom5HEzm(e}Up#_RI3O<$vO@?bXkuZ^*v3e^>mv@xO-tbLA?> zmk9lVsE=cR!0u1+o%Qej>3HGz*Y6*RKm2iu4~kFKS3bU?eZ2UO@!^dV|I_^`zKFj` zKT&?M@n!ul{>l2kdv3k`oA7?r?0arLCG@YvZ%dNqRfqSjy{&h_-fz|UZ@n<yXls+e zFY@1n#C!fE`}p-E>35C${UeHB(r=_MseUK?6)wJg{YLkv{7d?l_80lrix2U?zkZ4z z!Y}1-vM<#?n&0oQP=1sBvivgd#+lED=Mx`Xx%V-le--0D{rpyw6Cca>Hz+?+|H|fn z8{fjW-#;LH5PvJaefw$setkyxrt1m+R3DOlqxofj|NUB8AJsqPf2!{YU)q0$-+zi9 zif^iK?D+4cj_VfAf7Cr~@NXf%MEyO#@lM_E{W#xWQT+P(h4xSOr*Ylix1Yt=l-Z|D zIxpSd8E4#CFZ=(?ElKUSs{ZHRj(L4c^*6=8`ZIq0VfCf;Kg}<E`|(frr~FU+OY779 zef_ER`T0xx^YKOb$Ku=CSNXxOU&+3dzewNE`YeB4xBU2Sr=<8jy7y}*hvz$SJjUk< zNt;{3^W9>d=S&RoEB^ZIkM|c_@0O2W+28NaP<+Y$+4-G{+rIfSe1E3Pu@lN>=L<Hv z`jp~Z`oUix@ek>H!WZFF`abKge0;#QpM>v|Ouz8-FT?(0ecUn?@VkxA+u!2j;y14! z621?6ci&CFhVQ>fU$09_qy^@n<MR52`WLZ&i2Cu=8|GftAie(^`z?Ap@Soy$Npiug zx4(b*%l!GZ$p7(r8$VRvQ2r+Vp!&3M@t^6RmS;6REj&Mn|IZuiuODBmvUsP@^7bWt zt@(+cviPv})BHaF5dTtsA$>shxBOUk&V{|h^W&vYy}n1lxA5_kiyyi_#V6s1;+ODC z_@erU#ua~l{+E6I{21#OFaE?2zWycq6TV2_kUqBh@5g6OIv|`cIIwlg3IRXj|6kqn zXXGF8zrTMwzl}fYZ_)F?n14P0Q2nO)v;1M#NA@NCK-UXjS^vq-Z}E54ODkK4@1M*m zchIB3f3d&hogbk5N&1QWL-!~CBmXMDW%^^+BU@e)zTb9LmBV%q-}jFE9dH`X$FH7N z`Ka*!5@(hi)-C9>*q`wJpIZC(^MmELRg>SlGV}+ZTHmrpuz%ENoznwukN%#|-_)Or z>+|p%^@}&I{O89X<tMG5_%X}h7N1(5-(Qjc{Bg=J6hDM7;n%Nk?D(3^Z|@ZJ$-XP6 zZw>lA>f?#S%GSE5c3wZm@&DUDzCI!TB7I}|!TLw`^Yx9c&&HcPaQB7b|J}!*@WZ3w z`-oAW9e3u8f%7Zo-!D`A`~DUF{O1#ve>(Q9c*{}g{0nDyy(0AAqdsq({(<d+hI#wj z=MOE%kNG-$U%!0kDiedgj{UFyJ3f8?$iM#n2%i*Rq~FQEq<;!G?)NV!ey#m2{-huL z{t#VH@g;us*RTAXJwJK1{=@Hu`0g-cTCME)&6;HB)0N)rSv`+0(ht->r1eF7d;DSJ z!`hehORNvP`-^{k`^i84xYeguzB==u3sd{ne(B3=L;jWiU69mC3%m{$y#Ah#4_)u) zCyF1kFU6PD?=N0oeq;E5iDExL*CF61_V2y_Key}a^wRfFhWFRr8PR2OxL*9eDT&`- zu>KYQ`uUgQ+v4xr<*&WeI-P&-eJ6h(`Wq3y`~EU{b<=Tqey9GS=J%hkQ+}rWLG=f% zkMyh6AH!DFm>s_VHTsv=_YLo_%0F9@?!_w~`rCs1`vvxT>p!Z0h+l<YI{)vFlfEQ= zvG^;~Z1nzryq|wZ_4`A9jrj5Ye@y(D=?iNgsvlx}{Qu%F;&<YQ?Oh+)pYTogBmJ-V z^z{wp57~$MC;s_rn?Ec*DE`TQl;22y(>Se9`}4n#DSpc8Tf2YhAAg+m6Xj3xU(9b_ z{Kfj)8;|<i8y9~4{ZW3P{7&@``PatBGw1i-`P?)=%-wj(lJNeH_<L!R{ypM-v#!bK z2l?0kK859<w+6I6=A`ug(@Jgm<NeZ@zr6S7NMFmpKL1*MV(};c`teQr(Av-5pYTuq zCH^CRvGH}wEfo(B{n5LhxMX(tf551py#5+JpV0h%e~I*g;@8*56h9RIg{!ap`dI7t z*GKu&>T8P+;nVNWl7A`x(fX)=LHrr@qsM;~Uxo9(pTBAST3_bhadr2v6rP`Uzhut6 zf!~y0*CpQfC2jnjpR`+5Ilca>4txCZeImurs-$hRPj-3dkbHeX`I+#k_4)Bd@kjn6 z{D_}?`$zup{7?Cn)=$qLtbc5LDS!C=Iqlz%Z{lZ)Z_V%jKNiKe?6<=GKD6fdzYj+I zOa3MOL-!|rAM?M5AM!8Zi~LXdjqIcN_2Yx^W7pSe!ktNY{&m-jNB;4ACytk$biqOI zj>(@Np!}iu%=qKY6D}DY&VM}n(IX#(=R4wuMM;yhe=W12b6(#Oe^7lQ|M>ka?T^O& z_>K1Q@FV@{_m`-DL-jAsPuJ7)apB*`7uBycKh+0Re~G`c{A&4^_)YuE^v`qm-?meD zfBdr@_iZ^Y#i#l&YuxWQ$Nr4xf66bie>T5ezm4w}txMl{PP)EQN6lCg;wSEJ{Yld< zZ*^BbeuzIQzsrAqf13D{^p)oKpRd~b?eFd5KYyh83BRQ8EWg?Hk$ts4zkU>d`TBtP zPx0l)hw$(B2S`5_uK(cUTln|q*ZqHV^#{cd@julE#4ogd#m~RDzw)1t58_9~ryn1L zf8uA#Z;_uoeiVOZ`tinM`_v8JH`;K~$bG}}8(sfH(sAIbo=KDZ^Fz|Vgl~GjEPdnW zKkDyLexUf)^}hZfeM|Kf`H%FS;>XuFgnx=Jdj3P>st<g9r}*;MulV-;Pxui&{rQPs zslFlm%0K@9`%wK%^V|Hh;LGz559jlr-8gD#&?nNTbCcZ;c(U#DZS&{1wEpj0eiuLa z{HOTH>f1Y}w_e^fo&S-V58fE&SA48aMqk{r`KTdz{viG&{!sk-@k#iI>+|@raQyG* z7wJd;`K8r|C(o=@{_NC#yIgj|&e`{~)+A|pcKvyc^YtI;7tQbIe~N#_pTB<9xBfWs zL*e+>*I&YCcK&5$&&l70{&x3K>)s9aQ~Z3NbU1dwS$oXO<4^pM;n(U%TEESI%}+dc zK**nMOZ|FH$e$YDka+*!N6!zmet-YMuOFZCzpp>2KSBKbPsh(bad_F#f1NS$xrf5} znOOgO{~t}yUv#~1ALUP9-_khc2kH+|f04$C|1|FVm+V91v_8^TmfviAY21JQM*9;# z`THmTQvRm;QufR8&&)&buN%%ET~@5@$07g4^?CgP%I}1K*`M@H*8dw-_Q%IU|Kg)b z4ekr)qar`OzG2%Jn_K4di`5s_fAWv7&xn5%Us?Vf+xF@Y!}-NZPaN`PIDZrU=Y4-o z{Nv+C_|5!d*DwD3_xh9YBmesTk$wIC3)P3DZ-}2sUz7eLd}@7Jej0q}nx_K)?>w{f zs_gva&q@6L{V}^ueKDMmZhO^1Z-o4*_*#>ETV%I>!&c|}YqUPH5AC1!r}=&S3BP`P zXn#IF=z7w>#1Dios!whF9#r;)U8)CusWAN9aK2vg_kD8ljb|M==$n6jK9=$a^;amq zrGGPiwEUp>_WQ50ug@<wKh~{1<C)`A`#gM2sp|v3Nk7a_s;$~%;!9)l^%?1R`Nzkf z@|Vvqg|lB4zt%paALYM{UymNs=fH~T{>QgkJv!hc#@Co~Z92U5UOv7lKJEQKS=4Vz zct5<@=XH7n`$m24{Xad$2jxG)5B2A1fAoAx{NU@KXkV|swf3|ArTjthA^c_Mrzh9C zq*8c)Wm@Z(o(%pGf2~N?zjSt&vU}(2Gt%FdKS%8~efRKwPw7c_wF>{=A^UE0|6j)9 zchIVZuZHhmZ5iFHXIP)?w<+=7&nevce14FB{rZIJKh5v+m(^#l&7W80{B(a?zkOuy zpikw$W$yD|(%+WfEPfP!etk{+L-?ou1+8EH_xmFjUxSK%IwAajWU1x1o{-h|3zA)? z?tf03aRUnM{waQF|Kk7b|K)f3;H6?gA9XqAfbW9;;&_Af15}@E&Fgo?U#74BetrJ? zxw^lvU#LD5zI=Sr^)Y@u{v!S({*C#;yT7f^uAA`n&7pp}Y1-tjS$(%QseI^d{p*j* z=P$x<tiQbZ>3ZcS-@d}X&o2}|mLDyCDE<{cKK~K^slO%v`}@=V{rDz*tM&W+CF)-i zKWp5NPvTF?52T+JU;o~Iq#p=Bq#t7b{lDYGUqAJ4DSoK_62E8q_^`Jo7Z3b!euD~6 zhWrrmeQmp4rao5m-h!u}-f2^tbiC<xjmC!lOUw`V?Yws1Pln{rkCOeUzhUur-{QfS zhyO1;<(Bqy!~e^~_<Xo`uQn|v<?A!54+}THUq4ZPCVfruDSq<#hw>xE59J@-KjY^U znhsnNp3fC8GJQ(OAL93=$u8+1{7fH}um9wKKmStwPy9mpmH375DgEHrCp16VSN`#z zuhRM`zY3qe{Rw{*KXg6iKU<%U8*|*_;rmH<-_!d2@P0?UzFXzNzwcQjuMep{B>olt z{Qec`tH?hdzZb5*k;RwQCzhXoT3+;}Q2$hJ+i;%{e=)vKo_6`{D;nqdFOJ9cwS4of zhc8I4fAgX5pAY@Zc>j_UYd<#n(){%lpQNw1H~vU}(>TQsjZ=Og`w)NA{gpo`|M>Au z*VFvgzn8rD%dMe)n|)H-|Ag;<M1Ju8ACL4A#SihD;w#fHHh$z^-#*k|Cw`OteEy*P zpzE{uBRXF?aB_G*XYr!8XNB)4$$zVouKn&?-1V(|eCq!G{>VPEudhFeKWTp!Kh{4~ zA6WfiuP6U$et&<KAMO1qe@6Wq`PE)e_M`eu>&yDj_Wp!VsvoSrw)fY#&p(vkY<{=* z7yf+w624-6;@O|-AL2i{zv9z>K0){(eiOg?&qv6<WIyVE(DNtZlh)_khw!8I`TR=w zq5MMmU--%TFPC<G=*MtAaO?UaEB~s$o;zyFu~Qf4`~PGg;&1VX-(S)Ce14<+Pw`Fp zP5AcxPy8%=`}v#vCw|ZTWBEn-gZRtmSE@g${wMym`uO43Z#$rEim$n2?z<^FU$7zB ztMrK<T{xp}!EVFm6bbrk%#|M;6Q1ux{#ahLZmHMndG(QxpQztF{v>{&aq&lXzR~(e z`1IFD`jPm}>hmgnOEd}3Kkll$ZI@u*=-)k;O&E7q*?t8V?6}*j2Zs1QZ+O-4{+7nS zOIoIXXWXcAUVn){eEd=T%71?R68@>bK>3UE<M#IVN&nDz^pA&6>VGNze10MO2tR)R zT=DDo=g9w7|J~YTK*R8Twst#IpAqs)<i`U?Ep75*zdZgZeo5a%{_yNe@lE(6|Iq!d zeJp=aeIft)`jY%FedY6$_{Wc5if{2pcK&?elM6eC@7LYgc-SeS|1SNoD4G6h>rM4b z=Jkc_<MS)UkLBOjs|+b<md@Yrw;T4(zAuq}AL4&aOWgT-KEG)F{{D%dslHQu`TCFg zKf;$EpQKMnzmvYO_O<w>{$k<cgZRz&59yc4Kan3s{dB{@;rvUrdrQ0>^heB(@%*FR zpX^KhZ9hJ(KC<^$eE9oU{ATBO?DdL&-#&DI$`6IR-p42H-}3((V{0B)EA>zDnvLHG z{)zgb$m6>naA1Qxe<*%@exv+F_@Vv_<p;~p4XZx!LU{goU9~5E3;Ip|{UKSsVp9DP z`{eVZz25p?{FL#p9Vh;v_*8uO^@ruJ<cgi@hW{VwQ@-bZf&Zg_y#F65oWAkDZ)WGW z``7yY=M$74<zGMkh#%>Cjr;4P{6qVr{G<Gk@lUHtr}nIn`frzS|64Zv|Ec0{P166g z<weJL%b%}N{P_Gs<D~EG`mBG6UkKlkUt)f+_qX={eCgz0!t=ce*LHq6;5+)S#%232 z`f_VNex+|R``Y`9U;O8@w0^};c7E*8hj&}rB3)nO&j&UL&o{*HE0Q_quB>(J-ud$l z#4i+IvcJ#&vQNezyR7NgA-rEQp>*R;!G5yuTKD_d)L)nX{Q8FMNA@TEr2G5(CwwV> z{rn~W`T9}(liAnei^gStU%%M-f9m?lkf84i_WEg6$j@>A-uJ16|E#~(r2KhB!ujAU z%bj~sIDa1Z@15VH`iS_0@J;oZ_LtfJ#rN9&r(wGOIrpEjKGe6u$JfcGd2{dB@M-@1 z2+dFXBm9!Sk$wF5p!kXB7d(E{{(Sz|`u+3A;s?UNA77*&qW<vKul@V$qx(nvdiU4< zv+sM@_*8wpz52$tpW@%w7t;4xeA@L9{wTlE^9if}|9*bo|F%9U(y!yQ;rq6gPi?SM z_IzVz@@k3e#uUFPAD^^8TR+<M(fXw?eSW6;j`FYY>G%JsJ}3QT?Q8ch{-OQ(_>20< ziyzJJ?~n8$<p=Sv-~X2VGXA&wm;e0z5&uyCk;W;1kp8CnpZG)b`}|M*PW3n8gW^y7 z^ZA4FzqQX>=gpa1E#;Sb9b5Ja?>7nm-z9xE&YQdAE}s7P@k{%oaq3@^|7`w$`=s&b z)=l?!!0#JdJ(uoJ_F0`AecU_E_Z`r;;MFQG931-lO~&4Pbm(7*f4)v`OdDubs^#}j z^AkQOe^C69{|k4$AOBQeYyG~yR{Z$&pZw#`Py8f&X8d&Kw~q`C=O@ShKJ}d7zsRqR ztK3ke?D%|rPxe#%`TxHledzNm@h^?bzW)8izkYs-`}gvXt^fa?|NZ+D{%L)>-tRvt ze*AILH<aH=KiK?w$va)^hv)lCr+son&|jMW=j53M6HAu6DgXS%;{UXUSJn;u+GhUO z<wO4|+V6i~_uKYEojkvg{wDsQ`iSmN{6W{#`V@Z@|9<^K{-^p;@tg72P0u$QSt<3; zjH@5(9_shlAMxHFFC2gP^#}1Q>0^se8^6k5{``tBKfa~UeEnndtDT?LPy46(gz8t- z_x}D#pOO9&ztH_Nd|CTYeX01$@|(S$@}v00_b=%~`QKl^?(f&<r0*y{MSk`2m*uy! zs<wJ1oF6*A!nkw7`zg`C>ECZ&c-#GXekS}-ezf|-`p2H%m|SwN0~@95JL&ZqBSU{N z@{{*{0_s00{(SvU_9y>R{KWj_`G?jg|M>W_`DNzE4Jrr!KDPO{_M!hD`T6NnUf*zQ z?R@{A{6p*0{r&i+{6qX2{qNb2`jZjg-u1$dufJ)1l%J(<eE$(X2w$?VuMa5y()tQF z?&m+szgAyZejxl?e6_f3?6cwj18@AiR{g*qvA^Yge@6Mi?~l{-5z_C(PjtSD^aJ6a z^o8`RpZ_SoYW+UGqy1z2wSM5gpN8`R`;~a{%}^ic{_iIH7d^M+*k1Ymtniz?Uu5wi z|M>WmzV^>YkbctqK0c^E()_-CEPn0&C_hnr7EYh}&!<U$(Eb#^zJF|g^Tkg;9&>q$ zj}D7|>HS!W58Z!lvasd@!@G~n_a|t6!Z-0F`IqWH=_kMcXZfec$wm4cneM;Ai;Zs# z&&Ol_YT3N%@ZHAe&p&B?Uth-jALGyB%f_c2Cw>$D{QMc$ALsA#L51Go{9Uaxd%hOp zU*ijt`xmdT(EP1@{1bnX|1|FBN5Z%ChtH3MFRCAG{vUDucjLqP{ZltBS@~jWpE&=b z^Y@!@&V_mW)BN(UuYaw6wEmZUe14Gse10Q-B7I5vjOs)2ryn1(zwcj)U#fp7zG#28 zezX1|eW3X9_pkf=`IYjcjc>a?;s?@)WIyr0&p*;9et%f|^XnJ+$G=|u>c<D+lj<9r zAOER+DgKCGss1H>O!<fSi};23o#Kb$U;5h5-_maxzfQld?GYEH{Jr%0XO@NME0N#g z^E2x|s_*1KAAgpg&wb|CyTbQ<_rJH<*3jRH`1x|}#?!uPo$v3EzES-7`IGpI_=m;` zA2d$*p!!Ar^Y>5v4~j49FIfK+9QEjB;e6*2wQhVle7`E{pW7!C+<D1cdH-5`Sp3mA z@hiory?^tL=iGB@y8dT7)ZZ=W+Zdm>rY{KH@J(L-k$s5YsQ#h)f%KdB+yDQT!sWM& zKdgVE{)_tAj+6Zf-=vS^KcD|dUsC^A`1R{+iyymxnxDoaKYR97{4R6<pGW%HAE)@I z{7L*v`y>5I_>TPI*@y5+{Hyi(`ith@-u)52h~H`d8uy=1k^kv><zK)4vi$`cKUUu@ zZ8_l0&_CVl<(aF)`;#&Mq@P!Pb49tn1?w*ES`g~f?uXQEnteZfQ}V#@%|~3mD4&0* ze@OaU`pmCibbr5oD_nl?@kjAN_|W`*|BLD?%3l=!TED+P${*5KK7J{`Q2dg<p!`Yu zBmBvK{`n=X-_K7pPWvPLlKv$9LiVHlPV1-Z2_Lk7;z!aiw13La+P@#agm3Ea)BF^F z#P71d-yezfp_kuDe^dP|`}p+})o;YVgios9DSzsE|NnQ1e}!Mae%Jl|?;jBUNPp;h zUmw{1#ntB@_Vp!ces5fV(btdvS)cu!c;`bEU%r2dA2jagC(;MR|CHav|9*XA@iFO* zt4<E*D~6nY$Qz-*6Y*C!Ex?Oho_{_=_@Mkm@gsfV$2ajW#Rt`IvcKQ|r2I(wo%ogX zQQ`83uWw`@e}6W9%2%rUP0-Kr{HyS_J}FuAl_##*kjIC$-(x#mJ39P7(W#?aydR#A zMgH}kkJ<WlX!oJ>13s^8bnnNZ{}=PewNv}dZ2NFtpHqI=-uR03gO^{(e>Ofly#IdF zmg)ZPdw=x3p??(f=d(jTIH>lM`SZaPAHs(pKQX?&^%K5jKc8PH{}R7b{Y?Bv*9%|1 z{w02<aqC}OpIUs|aqZ9dAL$eM*U!(ie&NrrKkfL9^Xq(hY>MAEW`1;KIG+^x&+C5@ zKZ}3-{7d;G@{5P>!tLMxJ|<mH^$qbi*+=?<_}jN1;ZO7X`i1yK`pJ(k@?XS{=RZ4M zZ(6UjPEPUn-MrCX2mD2T^uEtR{6zdn_ObC{<D2ROtIzE9!k^E-!oQ#Yi66x;{`Hg} zD1Iq_kiH}Rsp}WI{cYuMKR&GfvG%8N!iVLLZx{4FD11NZsd>%H27M%a{E%G!^Wydu zi}Wjaq2k$h9G8yYa7DdF;rz4kxi|@SoKZZle@K55zJ(8;U!p$o;*;=A`H|K~{7L$N z_*wJ&^(FBi^|yt8-@c?TDgMa*#Q(HD8mILW|B^nm@nhqY_>JOU@#FXBm0x^($Upw` zPr?uJJK<OS=<^%duW<U(*QXRe<R9V}vXAAzK3i|RA?VXjOYB}h)K@WnihX$h5kIfZ zKc83r_4PC1L)T~h)mxiyY81|g&*?CCm%#5azmBN%=C8Y)ou6O$^!1bM>!1Ht{`c`q z@g;ov`zQV&{UZDO_@w$r`0@1*;e+x6<#+KH#lOElvOn2Z<No`x(%=61N8&HaujD`Z z-~av(<wvrQ&2MjB(P-yW()jxBoNiYK{U7mPf6j+jjh~f|uNZ%xeo=nQ@O5|b1Dl2S z_iBwQ`a!sV)F<Bef2luA{7U;L`^Eal+n@B8U*C~`iN9@rdVAXG_qIyyH|>>U#s>b4 z{P_CaJ*OY}VZOhm^<~d5$A3_wSNJ~Li4UDWc2s)3;_nmp|C5E^jDM{@p!$^TNBNuh zi}D-Q|D>;Ee?Nav|A6dA<1xQ__@n-e@Zskl(l7F_ufJq}KR;@IU*9M{`1ZB@Wbr5a z`0JzmMfpMe<;OS0KjBaKCjVsoY4=b0hx{jf>)W6FL-9-eP5IyIPrHALPqL5IFaLXW zSex+w@~zLixKhYZF+TVEYU<CkrsngX@a^jt(zn{b&#%<KvH8{7hw>x!x3qtMe}#)b zKYoaRNuSdCX?>&*D8G<@gg-yN3s*n;{d3Ll-(UFipFhz2^1pw7;&;kVgnz;Z@rUK_ z<b#s?2Yq|%(fd^n&*vk*eKh~IyMMhU-~S{1q4|CL5dVmu{rZN+l^^~7a@5zJe$e{; z{H*+y_1E@3Ztc%CQu~d)<%VJ5`%9Ytha}+O_6_;>4=w+9d+_?Z%BR<N|F-8>;e4pZ zw<eogd_VGlGWqXMh`)UNQ~p-``uHdR3P0KYEx%I#mFf%XzY{-Ef6C(DuAlOQ#(jK= zfBgKV`1SP#={w>l`Olx<>c4$TJTV~r|4V%TD)P5i-$s0T@k9Qj{AKZb(y`OO4F6C6 zS(_~fg#MQBwLH1_#<LC_^i96L6F>O&wfndJC;JP3e*D?~&ZMT3YaNuX|IJq~8<%~b z?T2Lax|wGzDxP0I@n_-cAHV*f_@ny8@|U$A;a~jk^Q+AdKkj$U4X35{t2OV;3xfZn z{y6BQb(fw#BY!@K{IC4$+lT5C<#)gTBz*b&sBvHaY1}{GNcdEI`SZ&@etl@KuYbhx zAB68KRBJjQ3HFcr()&K)_SPSyj|gA#pKrgy@nhznBW9h`Dg3`jmo4)<g#QPO`oGE9 zzn0n1IiKI7eLQ}o{7L#T^0Rk;vXAiN=P#<yw0^(-E?oTh@lX3NT>aqV+vXR`U!<?M zS3fAeGJM(jWj}wM^bOgE)=&Kf<sV<4EC2c9v_8@|((itKq4@U4WB%~shxD=H%f~Op z7sU^a7cRc2KjHg_>L0Qn<zMnI=}Y0$*IyLhgl`%zT>kdsm-?f^ukSyrk1T&sey4GY zFVY{DU#@RDzT;tO{#-h7=vU$UJaPZt_Z^5I#ecrO*Y%X2eE-D!9{FL{>Wv$P^WjUE zU3F{dj|d;%C3o*}*0|Eu^8FFY&*Wd#m%ct#d}jKy@9b|Hh4b?rZg^oy=+El@OOv&| zK5co@g?W9f>wSDtd=kG={v!Jjzfk=l|M~n(`i%4^@e7R?uKx1-GqFDx@oD2<{NV4O z@(blRvJd4a#gD%~n}7D`-}=rFe;2&>z`f!9jJW<?(+_Abo|=z88^6{*vVRs|b1s_k za5z6xt?{~EA%2AaC5iWZ!}bpwzSpK&I3HZ`tG%8ZpI#s9r=m;xA9~e{dka3C{_bVr z{{wC<*6E|bAJVrA6Yu-%vTwFNyMEhWu;b((jg$WO$F2SB{Ni`N{<QwJ*AqUh{r~Cp zvcJ!N)c@1^eE*O>p#9Uh=Fh&LF}L!{$HM=^wS8@F)o}hHUVr+tyEh*BWj;Q{-~Re7 zJ{rzW&OIx=|LW83cq`yH@>~4A!Qb0I!_UBP4|y<r|DepsNBW2Um*Q(fvhm7uZ#}$0 zzJ8W}eg70LzO(uNetp^gzaP+POZb1f4?d}Pd+2YdzWF{0e%!iWK7VfS`m8>(>mz=r z{-5%rAAiE9ua9V)>Nm<iq<={Nll~<BAbmsnQvUPpOZp_@-^<@xzmH$VXIB4QfBDUa zg#TB)b^kd}2K+{TeDw5v`hWIL9>0{|$v@;@!VlqJ`1boZl;5a+5I_3-68X*Z5ABce zN%}YX&zqm>H(EdWSL1&FB<e43eYAgyZ{f@L4?SP9>l^psjeCatGw9QO?h4OWBfp=U zzF=H_UOxZW>n%T1eIoz)_9Opme!qV$eeI8nU;OwX|5JXIzVq{k{GaiYwV(BWhl?IR z?1<DqBUj8iHoSi%{k1Cb{vU_-Pw{Q{cS?tP6Y8Y%*KG04RpI~JgpXg6z3!UyS;h8w z{v`e(ezp3_+K1woo<A3kpZxqn`d0Y#^Pl3w_dn$~@}KVS*N<eMsE<AVB7H^mm;C4V zr-WbMe!@qlPc1&IerS4Gr|RMP)E<Yw_h$Hi#TZ|0|JSs{ov-&PDBW(=p`m`Bw_}}Y zp*~Q2{*XL1r|z0Jh7TyP_ow-Z--#dT`Ht4_+lTO@_{+{eOs;iFrSSdqX{}#+GSv4` z-+AZjt$#}G+H6#Kzh}$N*Zy%nKk`S__wE@rcT@iSqpr{Ti*+_vJ|*OzyYHX*dhkyi zzk0-uZ}<AftIvFVNB?^GCI3+UPWq1gL-~RDP4oNt)9Rl)$Bx@EeBbq*normJ>;Ly$ zk^=mihx6wvwikcm*UY~*ezZUT`3mj7aQfHhZ_>Yn4_Y7fcWnGw`w+iseLnw5UuE%a z?@#!namBaaKc)B}`%(TR{b2i7<*pmoDd?v@>x<P4{1)T$u;=%l{=uv~zmUGA{sZX? z>YrJDwf>X;eSFJ4etn?*`}$P;=kqJ+Gkg6TcOKiXd20W&52@Ve`PBaL`P2EI)%oCv zBK>pumG(#c5%2HuKjAat!@HjFPxhtjHSWJ(Dt!3$4aEoPKj{bG|72gPpA;XyezE$^ z;$QhK(~q<Fs#K?Gim%~k-rOzpcQpUTB>j7vzO}dI>l2Gldw+^g;V*mtb5_rZzl8J2 zV@|EUYdHU;^{+{$H~MmIx7+gdv&F}M%Xi%?=+8IT?6N-ekE4B`+I+;1hd-9rPg=hp z|H6+S|72gw|I44A+bX=@a{B6bUkm&x{kksk{{Kwt_w&E%3qL<u{5GA^aZ}Lmi}smW zJ=j;{YZLGPYpnjU{<ZhF<FUT=;-BnC^_Td^_fOQn-uw~Y-Z=3K#ec+~cYo4fG{5$j z<)2~yJLTynseeBh-1p#sFRgD?a`FjFzp61OAHS5JseaY<K0b;6v_D^e+x=O5kv^pS zL;OkknfeFB-&9``KiU56$hOJN;rn~n9`xxs+55>GlM)X-f9H%b`TB(Xul4)<Li&yD zNBm*+r}aO@59t%#-`^iyFMRs>m-;tkAHq+}ACX@k>G#A1ho}DUa(T^SA^x@gwMpf{ zzd!KX3HkW9`QO@C{N?YD@Jswi^$YQ{;=`}sWZzZp_p@l6`v0U42tU-nQhfONjrdvo z=ks&yPeuG#|I_+yemnA+7uKGT;_tIzrJHBZ2j{#0A8Pr_&QJRz{t$k$^K170x}L^; zejxs^_ObJeAC|cIq;c8L#|Pz)!u3adeN6mJ{?+w<|AWRYzR!62>j~lg(w>KnIzBs} zvN`ekr@8v!lu<py`Kn@9b=@5JGxEd1S9b4FrB9we?e*5b)W5L$Ztc7MM+SX<f8966 zhVv^C-`@FE;&16AKmLhd>3Y&<h2uwG|H=M-{Y?1R`uzRd{Bz2+d({u`AKf=(`qzQK zBLAkZ|Lwc{jlBO0*I&u%TZ<3jC(Ex}j_Lbz=<j^9rS3Q3|6R1c4N3pgmKPo0Enoi@ z&VN~bVCN_Os{HNeSHd6Vf6_;!PosUj{H6Tn_s0oeieDc;%8x$(QvE~wv;1cLNBATE z5I<9V$$we@$gVH)m**e(&(D7}Zt?Z%(VP2(=Wn;Jc)v%8U)g7NGJCg<2d}&(-~WmF z*jr!W@_QD)cK;Nglz*wdA%3On313>jk8k12KmTFl^RXchG`~3Y&mHGHbl8wT`R(Uq zV(rHcdvti7-_#%S@j>H-v%kN7(!Yw2#jbuM{-pH@zdrvG|ByZ-{ZINu>-Y7st<MT7 zzgR6iKl-g)?bhM>Y0Q5;M%HLJ^pJdhm4AKymVJGFK=mo{pW?@#-}Wcpo_Nra?bH38 z_eQ}t0pBq`N~QoGeQCb`V(WLy9~9rze^7q&@k8~A{Fj~oKDa~Y3&Zn)>DRYf9{4r( zZ~v`6qWZ+<uZx=0m>T|nqx?rrcMkeK;y3os&pGJCi^BK$inW+BCXC1YTCQjNI<sfx z?XUdg>rcwxHvd@vS^V8zwtus_>H6ATc-H=*zKHz1%i4XLOdplcPn6%quRec~J{Lax z`cC6Nxcnyj`v1SA{b%^G_ObclpN`9ZzW$*5Ykhuv5dX&b_Vh!<r#DXeiQ+TXC*J)D zpJbniPw)OQ{=ISP-w2=n^H<fM%m2jRhz}k)JDfkCGUJ4o!}IT$f0})=%kc-iIiR5W z3A1{I=WDf^ExaYfm*!vS_Mgapw0`0L-`5ASzn@>|{x<*E_>uqo@8^>K(DnZMZ2mlD z#f)X4em=d}<d1{>6+c_t_gmt)habW(@fXz}q>qUI75~0{=>8h_^AGu->NDBLKOal= zE$J)iH^09?{cW2cEq=*<)Sn`JS^a#|y6<)l?`L-CKYmNVZ=Ao#<GUVkV1v9qmHqwm zCB)w}9_RnR<D>BU_n6b({WzQteX;&ePlxvtl%G~4-urvvcVAy@Z~aX1OZnaMkHrt^ zOUhrgf8o!s|H;3KZ$JOh{zzX?{-*dNeL(Av^__=b%CCeE*~jNk;nN>ieMR-FuaC8V zpZ|mpf1K(&vR~9co_&cwG{67+h4`EBP4=buE?oZc^_TGR@B3G@KaKnIll_RFgkRr3 ziqDLnOWt-$^`laLzi;FD%R>H&{9J9-9ur?0ldmrcpQN8`eQx<z`PYvhs((n|5<W;D zkiH`Rr{_!JFF!xaKR!Mc-~KpVPxFf(e0))UA$-byzCNbsKZHN|&(FV<U#P#S>;Jv| z$v<R2sy~Q7iJ#=(j6ZDrQhloX`}WuV{QOJ!Bz#c*qWIDEzJ9mYzf|F%D?)u+>4H)7 zLjN=N*V5PDioEb%zCIxRLi}jwxBihn@bi!Ii_brVAK}mMk5T@j{n7Qr|FW;YzUUuM zACY}YKaqb)e-nNwzmR=Nzmq;8{v~`^ePZ!T_M`p}@h9Pj^bf6%>PPC2So~XliS=3f z_fK_q7?FR!itt1G)BJw?Q2jypqWnkrp!`n#E9%e5f4~3PU$*#E{_*t-=^M)56kmiN z%D;*q|NN`?&98sOkG?(>|M>Tp{rvM!R6lI*{$l)i{7?L+{rmcb^d-$t@kRX~;m_A^ z#GiCM=`YHkcKsbDu5J+i|M$AhtB3zpKdoLdss4z4^3P}O^)@~UKcsKy{>s0;zLkA_ z{v`X7e%W4pS$;`w-nUvfA9d%z^{a#Z#s8ls@&7y5O)K5v^mP1zc74wY=MS~MRY}(^ z|5;YASw8=ez9Rc7KluDZ`zQPnf6_SBFWR49A5wj(`7`}~_=po{g!i|O`smR=-rtDV zd*6p7{8Ri}e0*_XtA|2;GraudeMA2!`v3g;<3IUnVE%j-<!{nw6kmnoA3r~7eSZF? z{)V;hxs&hy^~BUZC$$-SQLvB3XC*_QuJmTl>iPPQ>`(Y3{YLqj^poPtk3Y(fHoj}_ zT>HDKseO)F+^T<gJ|F9o^!4<YUtE^AkMN!G>!eOKs)qCTzqi=;uwdVqKl{JgWw)D) z=C3DwX?~xdslKE8%YWJWZGIyElYNQ*#NU2>uj_q&()t(usek*=d1&3asr|3~b=G-- z|8@Vbl6^a$v7zLN`S=&U{O4DMZ}E@6KH8tHkM}uy`TODg-Pgx|Q7W9ji~QWZc;!QX zTaaJBwa>(<Uo~o*Uf*t~k9QCGQT(wa8T3kt>uTJT*C&d9Uw_5<J^d;BWc+XOL-|eX z^Upt7{<8Nc{-ydw{_*3B_*>We=M!T5d-hZP>*I&`(dIvEAFBVgKi~f3U&1%(SMooN z6aT3G@}FN4e&~97{y^)G`pClv#i!PnoiF>R{-^sBzT|)Z`IzwM^SknskALD{(ia-{ z`HAjN{6qfL^}c>1|BD~|`km}Y<BA{OKeT?*7gRsm{>Yv+-a0V6|3CP+CkG8n^H=1L z5=E-_9&}v3evA6diy!&Nx4-a_{lB@5AL5to?T?dwBmJxV?CW2OUmB<Sg05Ho^4CYt z?<ju~ej|Q7eAxJS_MtkT)k^XAc;nTLf_{(ras5ftE^l>LUVjn)(Ky+c`kPvx-=C!V zf$AsW&(EI}AJ%^xlZEg9aX#^jE}epXBR)3Gn|sHGPxI$H#2>ysq5hTZ@9R6tpV9|@ zePHW9%OA=weto6=`TnE&g!CchFRJe>{(jq5zh3CCob+3teS-hQKP!{_7q73-{H=fP zzZhR$e3JcW{gi(wK5c%o{-yY!`iaKHPyasuQ+&|;<R9^iuOD=OzrUsX`}HS{TYj<r zq4odM{9x~|{O9L4%8!Ik;V<iN*!f96YTV~9@rSR!#eY8k+xqhG`#0<y-jAI2`8R)j ze?r&KNh+s*fKq>4K7W$^DZVIwN&oryBK=DIVDVY<!Ux}No$mjPvk$y3^k2lkE0Tj| zUem7kN%{VZ;=@0`W9@7GZ}p2Er|Zf8#DByuw!SWX>iI_=o!Vzu>7P4=_h)1Ns(br{ zf+Cma`=g4V44=!6pV<8D^!k~PbuJhF-zx6!z_h`4ec60{Abj}zL;Pp+XR$M1zaxC# zy7-EZ-pcxG8<L}6IN`i`<?`#N`h@CF?a${|;t#4%qW!%5tNPQ&C-E!A7v*o^!_R-V zK3y^4p1Z^O;lrCWIyt;QtNLzz(j>XH{2N>I`h@tC^cn4s_|xK}+nORzh3A)#jJV*B z{;lr6(*3>w^$&@^RDbyI*AYK!eSZG4@o)J_`1kuWR3B^Hk8j%_xAQCheSA^=CjO-P zseYyY65-3*uhI?E+nt)?YyMZ~9T@a`%&)(exqj}0`{eo4&cA<!MLz}p-g3#qC9>~R zE&TKQR6nl!&+DN+n08h9o3ioEE<bLsexmr({eAzEekFdk_ObY){v`3I%|G`3#GjPE zY5f}a>(iLOz5GG>m+CuOAMrQ!m#Ds`^^t$6{vrQSe8>3p>`(U>zI=Tw|M~GF`}_S< z=?nk)nDFWIzt;cn^$+p$_S#4I^zBFE<UjI1={NGP%@3AeD1Q?_(fWzMX`J#aT~GRm z_DB3p{G|Nj_b0_4zP=)UCH<oH`}{8bNBXev<7M|8`C~z<4=y{h#)?osDL$7b$L@H> z-2?jN^||=L?>`VflfEMV2p_~h{_`c}AAg+k1LarBKU6=GeW<>q_*4A*{7&@?`A6}c z^#?3}(e<*QzdrfLzklKMMb`gc^UQ8V!~X-1+IGt$;e1l`U;26bF+Dow^*7}|@~`&q z?@#&3$EW4LPGe8KEa>~<Z8!eW|Bw7qKYhVt{H%QZ5<d~X==l=ukNU$jKjDY?newmr z%lD7g@AD6>kMsfAm+A-Umki%F{^<VNpP&CIe^dRh`0~%k(DfGoc7No5%J1Sozkfmc zk?cqKBYq=&Nc>^@Th@NmpCo>z_%0m&GyL6N{?J~5-x{BM!PL;di1yvT=(#1w_R8~{ zUEc@mHctuX2adYq)@ecC#PP#_uej~Tlk)r?`QNMGWPiW@B7H4>_VX9zZ;Ef>*Vm_U z|K9!xpH!cb{?q*a`2pg8@sDqR!WZFR{O$86@ekRD^dr?TG*12D7(br>X`J{;_Vx24 z@hjCAq^~GHk^Uk4(E7>$;%6WK6#q28@_WXgmfy8L8u$H2@k#ZW@a5lM`1boZv_BeG zeEZMeHGkptx3w?DALSR)kAx592hy*8|BvEZ^ZWcu^`H3Px3A{+^_S-N^BduZ_=Dn? z{73nP^f%p~>UXLSbbmj;5r4|Qet$~($oCKNEA?Mvee2~f+8<p{{3d+({6+el@TvLz z{Gj~df4^S)_s=KE{yzUxe$x8=^^ty{`%`|?xPShE^aJsy_UH2xjcb2?{v!WVe^>d{ z_aDU{)hFU#KYoedr2qZ?Fxij%NAXGa761D2OZ-dMZ!bS+e?I;wzZWjP{Q8sfBgH4- zL-_Oa59LR~2i0eEf2vP)y&r$1U&y{xpHqL5>Px~0?T`8c)E^;y6MxYBq<=`?P=AK> zG0ji<S^VScchv{}c;WEj$A97Ur9VIM6XhS$hte1R`;D64KmS1fqx?ek8O0ajkNAW1 zG1W(;FDU+LeTsj-exvxJ`cd}v^CQKF=J)jt@jvM+<v%|^5P#ABx3|AQ_^17oev|$E z{7(3w`oZSMxd)B7x@Own@AK|?)57`5$PW(;-+aX7i}L+_@;}v&!XMSYKEDz_(D@gN zZ?d28<>R0Dm*yvZM);%rK>VZi`SvILQGb;9pY%V)KaEp<*8F~cls@$Bqxt>%UirbV zpTvLuxZ>C6Z}FQyuK4lmYw{1}U(!#Oe{BEP+V}s}_U7?l&H4L3A!8kTLYC}Xj4i6+ zoi*~dXIB(4VbEagTT~)jH1?g0J(D$@m?Dg_WUDAiMM^74_?_omx8r<nk29D1OYiUR z@AE$AJfDxp^|-F<@i^za-n(}C?$z{u$=nI&y_vp`5q`hP9$b3Q4d-rI<tH8Y^-28~ z@eB0_gdeIux<276_TLlwP5t5MJbv%obK>%e-;4Rjb5ATbdD#o9-*3hE$NWTo`)-T% zE=&Kv<cuvoyXcAh`bGbd|2)w(@1IuvK92ZJ`snq6^n>`7^qKsL>dV)U*5~Vwp6`%< zj`5HA5x;o;l74%CN%5ijF7of@%gT?xKkYwWf2%c{4o>eU+;aQqrs?~;B0hh3bgd&N zj;QiO<gdfG{`ldo^Yc%C?6&VyeH81<|2<)cC+n;DRsQ_*AM&5Y`doa7e{16}k5AGE z;vd2f@f-0o@n^*Ml)E4Aobvy{vm4)+-fvO-=4bP#O&#)lN0)!E-&Eg}-@-q;{8IkO z{}6vt{-Qo?@aKWEkILh>>^dtReDD9k|9SZbpda<G;$Qpo{)F&L`mg@n_djv{k^jiQ zl0PQ>i~JMsPwQ9xdi>FRLiq9Vmwx%{lRl9@Cj9Dn*}wnz)80*Y&++xkqj&C@>a*}K zFW<GsR>y2z{l1v4Pxzz!6Ms>Db-s_U^6Q`PE5CmJN9&{KGm4M@|E}UU-=C2F)BHK| z-*OKQZJzR9zs~6^Cw(pA+y3jtx4V8|_5DMd9~AoR_?7sD>YMsAia+(o1^(Uoqd$rK zLf5DHhpu1ZbKOH`cTN6%*MX~U_t>xcIX%l?58ZN`<9<K?lm3uDApNED$v+hMbMdG9 z)A__du|8scNuMIW#`B3^$Ul<)kpGGMU$FNBr>5_#&wi@Uv{e7{2cKon%>HTAyhD1| ztv2$nC+?gd-|O3@w@vRC>;5Bt{r|v6-L(66ZPWRi9CB$oU-=)Kb=vf;753V*${(sP z?|-SkCw>wCmHp}11!o=8B41yRF5}-!>o550%USEZ_wBva^+o?0^QZdp^9#y9;h*?L z>nrs;u20ur_~XP6<nOe9?|<m}v_Ik(@^AF~g8T!mpZqoDpYToi5dV39uK0O>ME-{O zkB$?+s(!uyq2rW)(hrI+@fYo%{4?Q?>P!8n_pjnt&%ZR^CVxrzFZkE#yZjsF-_P%; zK7~KePo$sJ-xI!R|HQ9^f4V;LLv8W%`a<(zT3<2$cKD$9Q~n5Fsz0yqq_3n;asOLq z`)|=a_a~3lcR4@#`yxN7kGN!Z)!!4pDSv+bgrDO6F8+$IzdrS+bbaDaI=?pkEZ6_s z-@Y81eqU{9>k~$o{&rT@?Zq?u-TX_{9}@oxAD&;-AA0?z{!sfX*B||#_{Z00oG-l5 zXL$Xw`TozEGUvtg{~ro`x&Qw_`b7OX^~dTjyni8nl79K;E83rrAMpdtFUa4~d_nm4 z-|x`%b-s@u)hFo>^+)7yBK{(N319LTet#5Sx_*Iw$A5~i_g9Lq_b0-a_g{2<9ry2_ zi{JhA6(7Go^0$N!sz2ht+Vs=MpY)&bEB^KTP5e*&Wo`c0=a=R`RDV<-<PS(+Nq?fh z>iNU`zipT6&)Jus^F}#;`p)XF*5|(u()zr<Qv4~tI^W}u@T2vW^WDgQu|MCx+u-&` z=JEOa$hW#De^TgI^Pj#u>)3f!e;EB`ygv0m)c>iz%I}jdfA!`uX?+Lx96U5VpA^2P zW@nGTeZ>tot-ilP{6PIH@fYz6@h|Zw)j#nk`6HTtDt`X`2GTF;|0Dh)eyIN<ewBao z^-1|5eWm)O_)z^*ebaoYHhg>iCVxl#NBAOsB>%1YDgDJCt~vde^nBs&#;-1(_+9b) z{J;M{?}(*()va*<k;kOpZ@*yBr~gdPp9}rGv*V_3U3bv$=Qr|4l%Kf&Q;&OO=d}J- z8?3N&T3^B6eXf}}>#q9h^KtSo#J^O3kv|V@ve{?p_nS9gZqFUk?|T*em;b!i{IQo* z->;$gkiR4UPX2-Lr}+B*O!)Ero#q4HKaoEqe3QQ_;_v#0$S*tY{_kHl&GUETDQE3e zz902ncKV3k?{&Pfnm^JX>Q9Lu8tM<lum1f(@t^PCR3ARS%3pc?O@6+;F3m5lZhhln zcjWk2d}d~&ADw^nv`eb~L-F_br~Fd=&~fq?gg@24?@y$^e*UBR!I!`O|I(=M(LbL3 z;$NRh|KGD!*J~T6_cx3BUwxy4msr2+Rdw-v;j7F~JWl#g@gx61`cC(!`3lt+@wfKp z`-ejR9DnHgzJDNpqWv%Y`NXfa`Cnh(F+WE>&|=<>IsSe)Ve381_Y3A_U%Y<v;MKmV z&S!~#;`;7=zW0cv?@h-1a#Xs0fv*eS`PUI=eOkRf#gF_29VdSf*B|SP^o{15<WK4P zRDVT$9lpgszCP%D;vd?7L+e}oTlQxiZ|v1Py}y3rTiXv#_$u<B!)xwN%UAs)@q6^w zG5^vxA3v%OiXZ7St)Kh{?Jx2}+`sVQzmFz-QhzM`l>JS-KgFlePlx~L599UeIPnwt zN2+h~_jG^i-zomFKa25E{LA`_$4Or)zH~g|fBuwPzuqIS|7HiT^=PSI3$jPA8gtSm z2UY8zu21t3`4{gGh5xd@TIs<a2kexuZ}!)Jf3aNOjO>*+@7ZIA$yNO${-yp$>+}9p z@$>#b`0?+D5Pr#Dsy?P!e=L9H*H8PS=hw==?@x$7HDCAsTl@FdudTjI{Oq})<+L=v zIsD|ee@yr(`j7nQxwl*7zH0wk9C!Rj>mz<p{Jj1VK8PR0Z{_~~H@}qiH|Ozw#~hQ# zXY2mkZkXox!tc~<*?#}L?A=GJ{VDYa!k6banvambr1=%`6X8evP~vlw;Y~-i%i}ZW z`fndg@e#kz%Es=w*g03dUgbx{zdS$2pYo&ld43^(7>_@7b2cu$Khk5#7cWceSA5^i z^2Z+!{CWH8`U(HSr{7=nXJ@YY(@$&V_rLC>MteM(-@oAB&HlOaJ44^E)}Qe0@uTy7 ze@OkG>eKt9sE;v!@<;xB#mBFY{1qKne#-id>m&Zr_5J*w^qb<V{d@jV{rUUH`Z;Lq z=I^EY8+&7$DG9%Ye)Qb&!(r3LRq@-<`XT)mKKy)2{4^2t+1GchpO|08-|L6g=lucU zOXvIb75wM)QRjRALH!5$2l+ei4-|ioKbjvC{%O9U`}^mI)E|(35&zYuuRcGzzkk1r z@JI2X=QqWC+~JG-m+IH^3*nE>r};bahvMt;OZZm)J-(?wi1EF>cbfw@&-wMjQ7@d7 z_*MM-ady|+50C6Hq1s<bUwnT<^`rXs>nHy~_@??&{yqMq{zU$z{m1zJ-t&o{NFT_b z>A2@7;mi9w!oTw4{Rzca_2d748XXtE`2TN1`bYXh$H||O|DpI7{>Sm7<|p2NN}tR8 zT)pZleVXO<|K7yT%O-y={u!OMdFi13_YAE1bJchG{bIy7^;gQj#~<N~_?z^lHh)a~ z=J!whLjIWi7x}BGKO@&3T%YFq-Lj`wPS5X)=NFS6-*Dn$Z&ve5_1n<n;y2$v5&jjw z+VLInsq1_EX?>o5=s4l4q4*X5`2CaqkiR7TB>kcKSASOWPs|U+N9*_fkMQZ|2jWkk zf9j7FU%!6g!~0L+!}EvYTl%B@T8){Oe*a>?uK#!|y+2j(=l$beUVg2=SL>JjBk>FQ zd%_3l8_f^s`h*YKKdq1QPwS)pkLDAUAMv;EA87qlztmq*{zxChzn;ISKI!?e;_v+{ zt)KKo$Nlvw{=|QDJ{_n1QGJkp6#l{aPvSpXzx<{5U&O!EU+8$ruTg)Ze~QP+pXhwg z|AbG{XWAddkFKx$`S{cM#9xY!_kWaM;%~yg@K^5d+-{d%ylbwnKYV=5-Rb#YF~2yz z^|<|)8`G=ql@Dfok$&H(M~}|$Jf0sf?!V)SyZ`0e-Ky_@6aKY6?_b0(-k;F?f%H-N z@&1VFQ`h(Bi(mZzKazfW{UUuO{i68B{KxvH`Xzr)_^0^*=^ynk!e@!^xWB?bI{sFC zJ^rNcett&l)A|1S0{IWpAMzihzYXPQ^7n)<#n0=L)?dbd_K0SqQh)!$Vx#(`{=Uf1 zZ~y+R?_bED(*DSwk-kv<Q~Zek$v@Nk4bnf)U%GzzeaGa!-3J|<=jYS5-|Sm{|1u|Q zcff+xXLqaW2jQFIC;jyGMf|1fdwr(*jQEWFL;4igxBusVdN+N)*=dhGmrVLx=<AT9 z)@^&nVb%Ciev0!Q|B0V{{7Ap({-i&2ocN3MTm0|)FN%-$@BItui~Nn}H`TY-FTywZ zW6B@loA`tBPx?;vANBQ)n+HFe{AuG?cD^b3)50I^kPq-z>szf4$}izd`}6rHekOk; z|5);8<PV+i^^4{&g}*QAzx9Ss_et-+9lY_6yQb%#h5zn+&xhNcc4PJZH_{jKH&j33 zKhM8K|52<z#wR{My|(!S&!yj&JmZj+ze@Wn^x6G?9*S?o&pmH_dB6er^)Fx0{IK-@ zH41#cHumYu7o1<6Pm;b;{0e{L_OJTz{6_s{#7B%T@dNos(m&<L`|l#YZvTXT@^^H9 z!XMQ?@wfQJ*T3}5*9YC7_?z&h^Zoi%Kczp9_=)%)-1>qqw$JNl-)%pgn*5F8KQYUH zKL4;WYgONGBmJWKrTGx$hmObovvHH%mpm}v-`qPo-I(~H;E#?k?7i$|&s6z==99#a zbe#NM^q(<*<j)8nwZ+flo9aXH_s^FUU$5W7kN3Y+|1tkDentKre^LDDIQc)FPx0~n z9pRJekM^(l`TVPX{qdNehrVw;F!fIx95-&i|NH+r-0$B=KNtS_2GtkMmq<Uwe+$pQ zsvrM;BjJncr|{nn-xOc@3%@_ocRF79Tem*)|5RU;Upk-sHSv?K@BLG(kH}BbXWw6_ zetrGL{w!Xf@Fjil_a}ZOeXp(m@XxQvzejyK_VPQ{P2caWc+C;tC4VFQP0SkI`iC{w zZq=)9@j<UGmVUo~%KV+zO2@VT53(g^tk&+G0oC_UiC-gsTyo#4uWg%O|L>DVU0(Kg zbFzi~{!9Md=O^wz=AZbB>W}K1^d<WL&RgHzFZs`{W*v5FijVq>8QH0mfBfee&s5_d z>u1o;_g#?mWsx8Iu9?m+?mzaUOaJy-OV>Yp{~><${73x>>5uT^pI_1SiC>7HsDGpT zQ~ip6eg8}RLH>sPtLoeP2a2ES%lA*DucR-uKI;FeK1shQep<hukCK1Y`uz7l(kFj? z!Vk?a$REY|^zs+&v3cU3YvvsORoVXz%I=x>r%5et=~=gQ-6LQA_xs)cyG=^Zw+jDu z_46k$b?)N5>dt=g-SJKH^V{5T>8$ko<ihv2*@Ulddg|)`Tvd1Bd7C|v=3nbiXuEtm zzle|feq8zU{y*|(<affi*6;a`;$QHq^KaxY2>*l+;t#41?a%u&I-lZ8`b_ww;}l={ zBmesz#4k}_Bfe<9K<ATxB76`&rC(luh#wVS@2@rA^T(yHUVrE~#fS1s{+;>@;n({U z@(<+Cqd$)LB7aKvr}-)AUwnQM*GK$B`cL^G|0evE-v@ly@uHsT`})-nIbqY}f2D6z zvwtmn#-q#pz3QK7eZ;S%|EfQaf0~~YKgId_6{`)ucb$Cyw+;W#66yJ)^l5hH{(my9 zkLL4)KhkIF&x-XseWm_O`SH)MDgVUpiod@;;Ya-L^_PwlKIpjk#rrGTKk1w5+xHLR zN8ewPe<1u3f71PR+{Z`y>+75R3FU|MnfgQWXQV%hZ@ItON6k1lz27$Z(ognF{=JCr z(19)fy8f{0^CR(#?{5e{u|J9WL-i;A@cx9(FZSp7NAdOh6F&TL@^=)UhVqN><Li&~ zLH@w|BdQPLU&Y_|XIh`<Pnti){CB%|o9>6?_&%-uE^X59*B1Gy%RlhC=GyA~jIK}h zr}cY(PW?UgpQ<0PPlV6-d_2}4<%jf(;zRvE`9ta-==$<6UcYGl#9xGe@;6k!<gb+< zk3Z5E;)kMs9DkDj#Qnc_`KUhW`;boUCe$T=uloJ**Z(gZ@hN<Je$e&({>86eKggdd zKK}QI)IXK_8rM(tPy1`=d`s)|@ge{I|2IDhpI#pb-&(()4;A=w_@((6@iX~riXZt$ z;uoFo@lEp!!e8Xaza7`@l=S;HkL=&$U!{MXm2ENV)=78tsrpCq=au>yzgY9*^6PK9 zc=sz4Kj`>8`}>Jh-_(CdKRo`3|D~_qKT&>#5C8m=;z#)t{{8c3@?X^dkbfZmLHj5F zL)Wj(U-<X4X#eEzm4ENw8d{$eKguuh7v-1sPxV8`3BNS|EcnCmKjkO#Q_H>n`Pyzd zKTZE-%azjewZcDqIcuHwzP-0PpA`PQ|BU^4^bgTL#pBA4@BheOMt`^JJ>$>sobT^} zMxWNF{z>tjmi=|ROP(E4U;Y0dq@VHnas9+!im%tV=&w3$^vIp-=j%V`q<`&^o?q(v z!?XPLmjf>NPxbo^n$J-Gq5AXuPy3_ey1wTpsz35~<o}5u2)}fFim&R=`&aS9FZTCA zBR(SjNdFaI&)-yE6o0B8iZAIC9Vh;y{YU<8eADO4rTUvQVVxDz^9$v78q}Yk&yv1H ze;V^E{-OSH;rln`&)28+?~e-~-ha|@@rPeO;g9+o(pSn4)j!>z{4@CzI-k~0{6z65 ze2QOv{waR3zj?mPkE7G?TP@RZ&Z^0u6#VV}e-ilz>ObXA%Kr}=>rejHzaLKijN(W2 zQS9IOKgHMc1NrlU-`w?S{zm+&{>Jx*q#w~gHvVS%X6gOmcUrU>l=^GMXF~SDQYSV4 z=KQLEC4Hp)k$)k6(*3<YQ2$r>^WV;o_s`@XqJL}B>ANq|_pfu#n{-=>Z{eTQ-<^DF z_4$MH<M~_r_wy}^U)1MVpHx2)e~ngueXAq#{T*@p`9~yvk-zvhTlc-wI`wK>-Jjy; z`ya)}A18ks@%8F=O}eH2W#|uIewx0|5r2%&`mEDs`skOc{-5}Xj#GRIf8-zN`dXjI zFZsV1zlaawU*fk|zfBK2daYIS{474CS^cefezd=-*)4<nUw3W&6?J2Wz0tB&etiAI zm$^6LOZ7E8Yx2p6@82I$<tNf#;oIv^oG(0f>7UxC@2}q-I=*rGeUYNRKAtgWpHGgc z&NoS4lpoJu+Q08_6+fR};wSCT_b<YSKTi1-eti8Bzmfl-{)+rrL;WTB1F8?wC-ryU ze^C6We#u`%{Er)Z&k=Pw{`YFvuWhP7;qwdo{Se`Y>XVKuf4)BGxbRWVXI7bW;D-C< z`|B|3;Q{IUY4r!+X2*W{PV=Kqt=2c?U;N<foA`n7q5GHfkG^|$dMQ00Y5$KS#@&{$ zzu@<Cmf2vFpT|}8E#Cj^Wsmvy$@%&7mwl*Z@+Sp;ZvM1iuO(Vk^_%#Ij#GWs_I!`{ z&--KHzx+P=(?vesaQ}S&C#;jLR6bvtVgEk^`48pqD?5KG@a6m`>3@+QcRuk4;g|dc z9oPOn|I_)DfAK?!|L9MIZ{I)Dd?3bW<>&hEk^cYi^p4Z}C44A<KV~0o_wA0uwyF9L z(l5#n#fSWz*5~z`>XZC~@K^F@j6d}c(nsIl)TVD9U$y1m^M~T^=f}Ff|NYI#FC+Tx zdet^Ley;s#i~gzqDEyOqzmoWo@<-2CBEDn(;(T=X+qUf1HedfQ%XE4n>3>n*eXf}} z>#q9h@2AA`<MpLaUcZHJs$ZW!`Iqwhfp~x7&zQe>er@>l^IfWc^}k-fB0t=-)$QM= z{-no@r%q4&r2Njvc0Tv;ho1hps^8)#-~U8^5cjY9`}~o=rv1nL#rq3?K0fjJY&>85 z<KN$<<HEN;pZHhT_xdG$^ZuXsU-9?+uj|wL{re$QKcs)852Vk+kB?t%{OS2c`SJ0m z`6lV7@az2{)tBnq@4w(@=MTwW()>8`$K-3<bxPk4zj5G(r=|D56#p-?#SdM6%WaOU z_8*FmuV1=<(cifJQT_{lbmx;k#r$8;@09*~<@>MybjE6le~bA}=M@g$X}b-o{UhmP zF<)})BmJiM#N+)}nRa~Yf7)#{bFnnv()zy1-2XpOeR%&C`R}u-pZ#Tr{Q4`deqHDC z`|z3Y|HXa(9R1Ja>z1E>P=5Vudv$4);$Pr<&MAjp*rHVxe>7j9`lIt}t3U6b$zRia zL;CIGNBkf8@3D3(J&>Lc9kl({52gGGfA?oU{AtqT545cIKf1sF|8UBW_wS@HQ9nNI z(&+P+`T8c`cG0cLpX&NwX8l?%TEF<F)%A%Vyg!TnWrgM69+18tX?4kV2bKKxLw4rV ztNz%&d(~gX`ilNT`1Sfj^&jycuV3`1jz1#*HeL7HDJgzaPXEJ`seZKoFS0ea`gDVy zZF<(VS#I5%_Q;PnX*J~2bX@#5KHDk(fuBL|SK~|mjOv5(L;ir`C;#C2i{5V_{E~lG z|L5}`>o4Xv>Q6i#^*J7={)&$4`o8~)^%L(;{6+d3?>~Lz9f$lS$LFJ`4BfGuPk*01 z^jiCtOLeH$r|$3lah!k0^^^V*e-S@K{fze~e@XbI_{aF3vdg?t>G!ARU;M%Kss0Q8 z+UVdV?pvvARbOd+s(;VFq+dE-*3XSw&b_;1zP^{6FSTr1U-A5SR@;$XJM^fokK#}K zq5Aj!wW0M*{W0+?`G=^V5nm1UKcr9O&m;cg`s7bNf7AIo?%$sv{w02pzw-T==10E2 zjPs>e2WQjM{BVUUuGo7(j_*Q0>sP&cpKd2r^_Th^>4#sR;#1aFj6da<>Ra{c{V&Cb z^g;FM`GxqA>Ra*k_#^(){XKtB{)nGQKj?ho7xI_%e2kvoQ~i*>Hgx^Mm-h$cZ|HpD zU&YtY-=hDBzmKE(nUS5gQja0~oLc1v$`AQ(s(;eg*ndQRq4_<nPx|HaNB*DqMeFm| zC;rj?eg7-|_5C~X3)Mg2m-w6Ruln`+M#sq?(E6$WqWO8OuZYjW|GNH~?oahY@gaVr z`;-3>Ka|gR>JRv-b9(>ohxS*^PyLnhGt<6*NB*-m{Coc)|KjyG_6IS4gkPF(>U{5C z2p{C{BR;Mf`qU2T_cuRoaq5nb=J8j3f16EQrP&)N^r(J+NB&0j<N1r~i|V5`f9&}| z{@(jj>Q88W<ZsD;Qhdpu=>C3wLi|VgQvS;NjrfoLs_Pjau9V(yY0`h<hN-@_zR$AP z+qb;(m1U~_f&2^Mi~1|-Pw4){f8>A3pR4}8f2ZRVA6g&zH{sv&Bk2p_r+B{Q^iSt| z|4Q`}&);v2CjU7x$LFRWb~+)=cMAWv{L5S4@^F{xd@o+V@yo~VlD@xavFoxU)A!3- z|MYCud-a{Kn_cBk)t7(2hvuWokLOqNXEfg>ekA<H_(Xmn{wDm<{YhUbeyVTpkLft+ z1L+IpU;Fp|faX`^PpH4r^}W85{t*8Ve^dOZKcn?YUp@blJ`jFMzo|bWe=2<V-;byI zAp8{k==hoNqxDa*?=P!<{QE;x|B7$f|E_w+{PUXS{M>lV7vt0KGl+k_$R-@#<k<s{ zuFmhHKaTuG_@end#Yg+|^F>|X^ONek+<#nuoFD9V<r-(D-$z^g<|z}>^XFndRQ!LJ zcs|unoG<_0^9g?q?N8(W<N9cRL+5M#{`+L*&%eJw`Xu~$|3m(r@JIYZ{2lS%{rEng zrSD%}`24-A)AujM`rZ3K+Q08Fs6I&FqW?MSllR+gmap%z(c7<=_@Us(-gCx$wCIvm z|4023;fMU0_{r~I_2=go<gZD8<lnu&r~51Z-k;F^C_dC5Xnmd^b-wS9$)A!xq5hEc zoA5=~r}`xRrv5J0PvlR+pZ2%#{)F;J$Hh-&{%^hb`t>{I^*`l5Tg)q;?@!Ba-}c@? z&)!z`2ef|DFX|tN-zYy?pVxo!zwaN(|HSyk{OkVSzYsoE|DOK{|D<oqkMCckPyYUN zT>9zxPwVs7r}!5B?6>`Q`TgMyT{axnKF9Z459~WEy??9wf1AypHg(AJ9josTlRn7b z`S~fWpRO<d_4uUvqW+8UEqwX+H-umReG45Yexm%+ahm_f`E0CT;vZT+;hXfI`iD3_ zAHM50-|U^^`_awzXp{K6Sl_LGzy03(&g@mU$?&G5+U3XRT>tH3>3G2pGp=~!khVux zzb{k%yuT8D{d|D>1Leop5AkQQepmm>pXYz+v#&4mH&nmczmJdB=Z}-WP<{IRh#&m? zfYvX5FXPklm6rAC|Ks$3;`ElOKPdQTm0eyNyM6DfKOp}je0qPX^L>A(_;~#2`aV9S zUvzz%?-T!!{t~}Ye5rnEexUd)eEjKr>7&mN)d%S-)gSf8G{2_$A%CX)c>EK7iGPV7 zV}E|x87<!4Gq3Nu!&clN&A*EJPW*brQdNB@^yRnt*Yg|c8~J-WPWd5yq5KG6USA0R zRDa4}$-mK`Xnke>7LWg4{knXGEtlw;=YNqi4tpYfKVSGyH~-Q47k>ZZH@`p1pX%4+ zi{eB2qxgCKr1=o_2gLuxPjsC0fsPA*{`VOQe7O3L^QX7}bk%C<_YL;CZl8h4e=0s> zv+MtO-VU30cke&={zCcj^Et)G<CF3i>;JEV_G{iHUw@AsyNyrvq5kUIY(&!oN8k2( z)&J1?Xukb_`M2rtTZY8?rv8okKk|>_FJGUeZ{k;9pLBn^e%$|%w%@;4pXcXaA3m~v z%1^-$`@MVp(HC7??eA6p9$$2v{GIT%$PiZ_G#?TEyg#D+l7A+DME;8Wui{s(zk8F* zZayl{&mkkaZ<q2@=;sb?UOH&CzSa7n{S&`a{n7pvKaYR%FQhND{)q2b|8#%h!_U{q ze~90`|F5ln%lyanD?Wa{r2fnEJK>Y!7yFCZ^M<{geqUg#6RvnY>685Bg6yH~-)=o( zV%7iB^@T4#-xq&)e?k6T@tb7dAJB2{4}~8;|Bd}Y%pd8O?(g$Y{G{ub{^P`_8?`<m z&(FSVjrt_LKdI}_$|mh{|G1r7Ro^e8{*CTW{Q>2N?oag<@fqV^+xh<a1L+6(OTrK7 zH}N0wKjnw!3*x^rKBsTG>mKR<v;KR{-fO1!7mNBHyXRu(T=jadx`&Qw^k8~F<eGm! zd{yd?b^Wiio;!XxY}&XgKM0@RUkD$*{)ykzKY4zq`lI}izoFyt`iCF=e79rs_>G;t z;4g_^i}{xO{TlJ7e}1I>d4ALRWqxD*Q2o;W3V-?A{?7LwgkM@e^`|=S`JM1V_#=Lz z{z3KS=U>#HX?^~D@^93CQ~nG5y8P4n<ZpcalfS0<65*5Phm=2>&j=r7{av<F{h!nC z2Xt!j=eeo=h3}c!>7AAwam(UY)jhQP?%${Wt<Rae{P*{Pi~PCwqX?g*j}%`zPVuMu z6aRaE8~HQx7d@Y#{L*pa2l5Y8KjL4nUo`)q{LuR7IQb94AJq@xC)UrP(Jkhu|NnW^ zf@jA*oYzlr{T9Eh_tV*JtMd)z*Xs}Mzwkef-)iIkh3_AAf8Rf-K1%*Sd}NPXH_YR6 z|J|3|kbb|R(04aqAbuo&C4TbwZD{?=U;F2qsxLZT^2;JmO}-=je(4uy9Jpngzo>qu zWRG4o=A=sws`}R=elGvwAMY=OFCU+V`Zs!iPw^@DANiB|8{ym65BUe0&yfG4^~L@r z?vM80Q2kN-{rraVL;Ozsqx$soxyYX}KEl7p2l1Qo=jYorUm$!CKgar7Fu%(|>HY07 z&!5*R^{<Nmq-@^@m)`S%kE{AX>mz?h{+;|6@dx<>@qeigb9>jfPTwz%opJ2eX+EU< zew?+*9{`M9@2a|;7reUfVfpb5>bswv-v2B7<&dM+ZF|OH)%i2whw78&8+3irAM%IN zAFmHIpQ8Ro`SbNd^-KIf`bYdr_#yqF>#P1e{}8`Z{nxfWpI@!tA18dOe!YGxe`Wne zekJ@8|4@C^mLKmw3Evcd;z!bl$lo!36o0A@^#?wG#J_}Z>c7bU>iRxE#eCqm{imOw z5Wa*T&tIfp+P|+aT0h~N=6}S$!k_oAQ9mR8Vtiisu=Duz{n~q<U2#zQeyz}-wWdzk z;npryf1&t!ex&}FjyIIwsJ|rrp!optBgJ3&_x@7z2hYD$Us`|JKgawFpB_Kd9}+*) z{&anhADS;wd`bVrufD$}ev`lR&o5|xMED_m()%T~`9sfdlz*yU;!oPY^w-Ci^o{N> z{`A);{Uv>r|Mu~v^%FjcA60*Te^ei&U&_C)-$Fl}zAJuSpXJ~D^@Sh*d@$DUF58~g zJ$)bc!n`qemfvT;58sD*evbMX`BnM#`6ql)eG|T^f3M9Sd;KAOq5hNnFY!O=Bl$z} z2fDu3PxAl7{}G=NKeT?rAJqrtht@BC@c(~D`0)54|3K@b`6u}!!awx~lz%!-`Pcq@ z|D*oZ$Cva&{8auv%@)VJF(Azs7wy{R&Gh?-%Fj31!!zHjpRi2z_aWqeynl@SP5%*Z z^hocAcH6i2^J#vk`_IUR-#obg3inm7Fa0R%Z^@@Gcrx`T-(Gs+e}7*?^)WkpbDN<9 zAOEWQe1rIb`WNy)#2@5;Ngq^Sq(9!jl0PGUp!o;wpY)yhpZG)T^ZZlb*ZB|CPl>Nb zk34PTgL8akhaP-i`TxmhW$EuGU0=l))vxg9fB#1M?(2u@n~p2L{{1xZga7>=@^6GM z<<H-r_?P@A^+yyR(jW1guRqcUdVWXvA^a1+YyYJ`KI4b)+BeDZJ@k&QW1skyf5&HQ zE;oM56?X4i7yXCs@1OsPzdZkF|2}>Nf4ll5e@y+2@bC3e`1SKsI<EYAeI|TS{HVXA z^~ryf?`OsQlE0$(kv`FUhV&)Y*N^9pJUo5B_}n)qKbPJw)A=*AR_pI`{$eLr-w&ty zp!jJ2r9RC0VUzV+<oADM*uHzE_k)Y)d+z(Axc(S_;wRz{I!^vr{Oj>g{6zIh{)_mX z*01`a{@T~4?(g+i{8#d4%pdg^q)$}e4Xsb{Bkj-gJNY-|x2%sCAJwPl|Dt{z{}Vr` zK7D>jUsRudzC`&U|DyQ#^%4Fff2_9NzAvWVe|humjm|FlZ*KO&-pe+6<khM_CH#>- zMgEKVrT&Qgq3Xx;55<rAD;@XxNAnfZFXBhySHeH(lj7^~tNZ)o%3t~WSuwwKKIsqP zi}WwXzsa%(FOvR0^4YI_KP>65^k+ske#`6bKIehz`#o{~IdIx#Kc??fI-Psno$39^ z;{5#Q&o{gI?&|r3Z|aYtJ}onQ>^|xDnI63Kylcw({UJNP^|<|)8&j=c<#($6{*UxQ z`785#MfTJx>HGZovl@Mq?l1gJ%UUm5e|g_N)$jAkze}IJ{}+C}{?Kvq541k&pNM}+ zUx?p?KhOWfA9TL(>z|)c{l)r<^{@SVe?a_6{7e2(`0)OL@=x(q{{8jo{^Bq1e{_HE zKWodcuP@49)X(?N`lSEbdHrv={C4xp|9|s+*6x4>tIzIM<-dmFU;f4GyZT>`-{`-; zKJMQw()Yo2pFMJDdjD1XpOuZ;{Dh{RkFNHA@)utJh`)(H;(R665Ah56Yr-ehcf^19 znaw}hJ&)h)W7{5(=I_#v8TS8A#rVhlMSY9Mss8Eulpob+`ThMbw{;(%zVB^4;kxD0 z{uIBjvi4suzTNc$tNJGW^ZG>h*Zw_z$=}g&>VIN=$N1Crg%7`e)qgoZ+w+{4wn+cK zeWgckJwN#e`J<0A_xph4FU8+J{_*~Cf3$w`uQXo}zI^{c{UP<gI_}@kQ2zXJ;venL z&qsuxQs1}xZ1(=?|KqNB{oJim{S^Jhq{la$xY(Q3_y3e%;`dU&X1s912I=|T<4Y_# zEWLkG@XyeJE&jUxu-<h)&e-F#G~fHM(fRwP`>VdjW-EO4>=QlKs6HR0{1bnZzmNPG z@mE{^%ltKce@K1W{|-m*a(MZC>AUQ;u}@#V;QVTQX?~&l@%W7E|9QdHd!+mxG-H+S z<?kEJ$~M^KqN{g$qN@LKK7HUJ`|rI^e*ROdZ@zA-fBBaQ*`VQPzr4<!)%8dIU;48x z*GlIP-FV)jC4YRM?L6g^N6$N{dVairj6eCmI6sN!Q+-f<YJI-G2p?L1iI2EG;*Z+! z@B0t(?-YO1N9vCV-{OZ-pZ@egyXJ`>F1Yf<tkn0p*}g5WY&*VP)&Eg{O#LOTFY5o9 z{a)H9{eIjDLw>$4;amDODeJRNm+7Nls@9kAQNDi>^RN4Rex?42j+1|*{Zo8tz7y-? z<2$ZeX@@+1FCX{Kh?HOX_i@>*Cl5Gzjg_nO5nbQ^K9crd>Q9U>;gkFm`B%l)-#_wm zT%Xoo;y)fIe?sfi{yn}3f3?+*zrOrgdHli)_gU|tJpT*cUoiQuJpToMJAI)3obpfo zE%6&&U-9$bzfgZn`b7Lp{($s_@Im!Y{VUa1^q1@RJ)uMT|0S!xenXGMugcFX%deCl z>Q8jO*LSVo&yN(}(x1)0wec(I|39C8(j~7Xek<~S)cY@fapT9;{*>^e`1|=1@lR1- z?)e+xpYTEPQT!+WI^UkY#tZYe%;WRspP%cW;v;^Xl5PBI&jBCJb@B1@amCLcr~WYN z*N2mi{A0@BGFwlWneeCc^Z8kJVYBDvSJy}Vh4AJ1UGeqvD|&t=e_r<QQ9r2u2_NEL z?_a6@g)drPSwC_8F+aceIPpL6hxpg$uiz(FUld=efAat2FDU;spC<i}{1@}1{ds(o zzG;2s{32eT@I~_hiVxvm_3QOt`o8e~F#6}Xf2t44kFM|W-O%`uzSh>Cl)oPu_h0C1 zQGaj!H1yfjKQ4RDEytDoJv(#%|C;bY_#*yoC_mEtL;CCItGd5GF8uiUf%d=f$K!k` z<}docc)X$hmiUX}+fe<8=btfX=epGY47>7>m(qN&(EtA&(|&lbyQ}>#@jKyH_2uh3 z=KtdRIvt$mmtXa}^r1ArE%edNFX{eq|1rPfM_Qlv589vi$Hbq6Z~3p1-=Euf=(g$m zfkn4pVWSkEg5RH+{nMy<hg9dA)c+{He*MJ1!Z+2Ye|}Bzr}Zhn{`v*J3x1CIr}$I; z$Ulf*y#HvZen))7{gJ-X{i%M4A9UQ~OZ}zqe~bEe`77}6j_dlqzKP!zU!Onfj|ku7 zPig)^$D{wBu+-|$rSCJ|+Wy$7<^Nxsk*)UQThsS`qB`HE{S&^Fe;<G1Z}Mm4Z>YZ^ zej|S?eER*7zQ_4wtY6A6%|8gA<WI;S(fw&YLGclOJU>wVlYbUI%K31Nzw+<DFC+ZO zfBN|y;gimf{wc0s@$vD~^}RpW`JTUpuk!uRcz+!){YyMf`l<NR{Kv1K_=WgG{OS3h z^ofoWehA;x|A{|+|4;rf=4XesK5m|V|Mi92pFK4B&%)n-JY&v2pBz#3pT+#r>9h7% z^5-`fy!Banet*t@nXjb&MERMU-SF1M?RL4PdVPvt)W83Yzw-X^IPoXdALWPqA^BU< zSMoQMe_B8B2i1RV_37uc(l77-NndKikJkrX-}4jQU-|X@CFPI$7t(LSx8mdDPwR{P z5$lVtFMO5vKe6TR8>Qcm==lAi8>IJh3;eB-{{ZVNk5>7C_+9t+`BQ)7^H2C8{-x(b zs!y+P+Mhoz|LFCfo^KcY?)Y2$<MoB~Q}-|P8}UK>LF=dfo%~^;KgIsXp8V1?e@Xb8 zKkJzEep{hmfB5rl9oE^U+CORk9zPM^asR|0sxO~k(kH4<@w1=r(EcL7yfN>WKI!@T zgdcm|lD>~B<}-~p@3q<y4_Dt`BL5Tf6XQqy2l<1z{&;;I_x`ZJM}ePsemwr;)YC_% z`RDU3v*XI&*PoYl|KX2cwQOJIH|h_Ge@Op@AOHM|&Zqmw{m1wa{#8F^e>J>m%h}uJ z@w@f!x8IwdzbHO4vdPT`Oc{OzKR;jVls{jQ-ansudxs8p=I0mtbN?TM{5|<!@;}rc z62Hay!sVxQKWhJcfAjyf&ZY@ps{c9Jo;QBic-(Go{=e|=50ZY8e<OV@_`}r~=>yF_ zNPmPc-#-XHB|am*Ytz?-zdqrM_=Ef@^&ga9@(<!4@9%YeuTP|Zw11j!5<gM?Nk2)S ziGPTHseVZR$UhN2$X`%>X#c)Glpp{5UFvWB?`OsMojYpw8|nMN%NAdE@AUqd_<44g z_POhERsR>ykM&RSqyB~Xho0XQ{O|aa@E85lTjRdpFU^Nqb{cbinhzEF<(^Mc{ZoC! z`aEuIizn0fr%QY@=;HMIQ;P4btoZ)^`QA4!lisg;@TSRKQ~tES8Cka%&+K>eFI9g) z{7L>r_xJpy`+NUR^;uhe`2LLW7yVVlFV#2ox7xq2U-I{gkDo6W{_VH%?e9<eNB$x5 z+a_yYcKSvMe@E=GLBgl@_j&fh=srJvxlQ%^Gvc>cKbOzybbIo5n;(A5xb%Lz@Ug(o zPf0%s-{McN&*V=Fe)#SDl=!W`;Iro4^8KA~!#AfSf3N#bu<<MSxwwA+7H8a>_<OJR zTmAR@QsHB!{r*q*EbkxjPxzqvmp}3IKk~0sA5?#lzvKSsIPnMhBdUM$e=)xEdR=#7 zhdjSO^xL&t;`d^{zTlrT-+TLtK6M+d)c@7=|3SMhKmBj%`9guutDir4sdE>v_CLh` zG{36N|9bu*evR{oSI10hm41Kxqt~|mciLZ3-}9$U9rAp~>ij_a^UpU4U$MR-essQ{ zPsaJo!(XmGIz9i{;m(&2N&RVY|H~%4esk;Y)%BCV(fPjritGFC)}NM0{~xpOwa3m$ z^JT?%T;~42m*Q8>M|uu9=f2MQ`E!SVa8ZhXfuEZ{?bmCG7FB+y{L=hD@%QsZn*S63 zs=hqGQ~yEzgX-V=p8~%He@A?g|5g0``o&Lv{!H^(;z#oTy1%avx_`uPj8BZ;p06Ev zXqvyieA5nHlYSQGAHLI|;on_foxc|Nb@3;B7W(SWkNg$aPyUncPyGYollX)5S^DMq zHTt(x7F^#t`L`h>pF2JEPlY}n`{g^$k2<x=e=)x?e$+ouerf-t@8loJKT&++`fojQ z-mLU|rv9d#1|)nJ{<-HHhrF`M0agC3&A<5PgW8|>hl-!)7m6Rvuc&?~|Aqf?^-26n z{U^OY5dB-kFX4~yLG=;+N4!7j6Zv=H&%ZxK@g@DG{#W?&_!WM9{~Yu4Ro3>%^#4&$ zZ@fX{<d0N;-(|<=9}u)_U#%~~xAyPrNBr%duhkYG?~kZHm0$n;e~eGW59L?+^Xnsj zSj6AeFX4muf&3xWkLusgzsNsDevk2``GfSu`#<@U^7p+iy!y}gr|*NC9s1mtNk5AI z&i(&mieGWQ%MbZG@;6l9!f)B1#Q0Htiod)+C;U_Xg>TP~TEEX9^`E3~#P7m~=TGXd z$o~_5#ZUhEh4Sb72c7SaQ~yl<g7lC0iSA$cUspdAKjqK&|H6l#zmPvAex>*bKmPq` z>R%elkHU}lr;2}BpNH*v%s$8E{J6~3ja#Mpn(#d_yM5@oPtIEA>dOE35dV4nQGY=B zA^)lTdH$pOM|@6R{k>1p?>|1;dbKfW|9U@RW>(CnzUX{&hxGjGx)WX*n&$6Cf6(To zgZkeyu-d;7Ki9@Do}a1yi2oE{|Nna^KhiJ%{WRfM`0@Np{49R(^L5p)_g|#1G(Vv0 z)A}O*qJ9fsWqrou<nM)FU;o5EasRIm`KZhBIsS{^-&6j-&D{Hay1&ma@xPAy{(<JB z<ZsAdkpH9pldezur~WARS9`5EdCkOMt%mL2JH5YJykFHZ{|673JyYc;;nVwf;@60e zh)=E0^OyL?A1C}%e91qMe=6eV{0aH%+WfQUFY%-IH_{iMKgHMA5B1l|KdsO63;FXH zzk3huxN>?ww$saxj7rakivI1cw;vwaVM6u&4dPGYXW~yfuKM@=OEI5x_=)r3SU;3M z>K}iv|B3gf`3d#ER6mp-o$v8Q`4N7~^T+*i{J6t%e9b+r{=f5g;d4QD_Wo<H_Vshs z=fgDrp#GlntK**kDE_2Bgb(s}gm3Y$pD&U>Rea0eZ;SYg{_*0iA0M)5p1&tg*sa}w zoF8=mso9bFKR_ATuKIjS{NSI@=>C5G7?1DvL3U_*elvZaO9v-@D)4ve<RAZe#xqrZ zDvrDQC;lRTK>9%ZP4_4K2>)OH`ulq^f5iV(AH<)8f5pf5r_vvPob-|WA@KvvM<aj5 z_>#X6f0p~Z<oZVMZkOZtg6<t3EBpHy_WJ<E-}?vc&-)XakCQ(W{(b*L{*UyN;!FA_ z{FM3<^Aqc<=T2>JTPu(MN4t(*A^kpw>f__=qGmguIP}cw`^A*s$S;lW+iHb9^Xu3B z@yJ1?|DT(!kiP)X?%}Gw5&q)!<Ng%C5?}E+#fS7o$G!g~{1HEje>}c)+|LiGe~#;4 zvs33cHp%nz$94N2^3PxMzaV@0t~ItgX6tHxs6UZD`S}L*ztMmH@BI1xUH;Ph7p>3x zgBah}Iy8Fv$UHt*{`ko!>HRA4!`IpBH;r0q%G_%ITKG4oucTk%2cKV^@BM-D|Ao~* z+CTX(x<AdIiT|kor~Xp=_wf;ay*`jXB>ko1;@`4ATdrB_htmHq+Ww}m2PFL~;@jt% ziL>siuhyURtK^3^lUAOXo*xc>d5uF$|2f<K|C(6;vA(o^&u_%f@*lpwqJNI}SN(c@ zr|T2G6kpFz6rZRcw?Egl%~5&$=RCgkw#k1N{>uITAi@{v2l1Qq#q*=^?~hadRi6uw z5Axr1obW^Ir~Xj*@c1SFMfE}aM))uA<@AO6EBPnSkJ`U~K1lr!@$>&1f8*Cr^-uE) z;m6M}3x0O-r~Fd=%fEVkBK_8JAD`%NBL9;Ap!y+vkbft96Mkv^wO!xWKgEyci<CdY zXVjmVKZ-A1pN>;~MF057;Vp)w{~t8wm_wVS_xH5^Pwe-rR6ntQjr-U7ef`jUm-v_T zB|iU(>m&V8eR+RE`zL(S{Dk(W^Gp93_owqqe;bd}{pG(r{}R4wz7zd-Tp#&M<<HL- zDE`C`bbr!Mia*si)t~m~->-=Ev-GH8Yn+nTf0Ol}eJj1+Sm?*3UG5*ZbF1oniSSSU zisDQ9OZru;|F`wu<6r)$JpPaK&z*939-qfLUi*HUFBJLR=lmX9{b#-E^8>}->pS5m z-aq1>@Im}W`b7C7{w91z{Kfr=KRmyZzH5J8UkHD?zVB~!+|RFQedKS5U#Wkf{7`>J z_@Vd--yZ+u4{814Pp>}|f8vkWKdidS@*k$}H^157lq-`zD)i;A+g<YPkoqb=Dn5R` zPwS`ocy0CR?@#_l`0&p^l^?IKv_JCy<R8c%X#FLBcfWn{#nb$4%)Xmt1M~b9{5;~} zkso~6vig21?T_$H@ulapgkOp;=^xd%_`8f><Y&@n(iicc=V#(a@{e?XdVWXiQ+`T) zxS?_X0qObN#7i38_(+Z~;d4^<YLkr)zT%=PKhXSx=9?6M$}iOy@w=|?^-uNV`6tc~ z8?XH1nDl;hhked$oxX1^{E_>8L#iL*7uBc7pX$f!7x^32r=P#Z{yWwe`6J=W>mSvR z>cjIl#h3Vv;;-wM^%M6`*QfI%|Htc-{}BEg8Xu3ZLVsL;Lj5=K8|fF}o8m+Mldezr zkNg_*NA*kiCjKLTMfFAcLHnotD?a1x^JA(%^_QNX#6SM|Hr1c*@8?g_-}3v)m|yMR z>kHwJ@FRWo{zmoVpTCJ;D1LtZq>s`Ue|^Q5_|van_2G{bKD0jn{Z!QVm|xYO@9)XK zQv9j@2tPXR`ycU-kDvDEpU=^8ia+(Q<j-oWUyon;GoL>?PX3+vi};E5uj9Uc)c=?J z+iC0T-rFYkr>$ByT`RpGCw`fe-81h`lUm$TeSf#1`a$|e^+W!Y`U~=}G@l}TQvX8y zNc>Lyv99mGpVs;Q_g{&h#UK9nAyj`}UupeuJ~goA$s^PETi@KeeX}&5Dz5Lof1&FO zza{=7e-l2%zn&k9^*R4b^{M;&{*u-g^`mRE^;b^s=RY*y+9B!tT&-_>w#BGhC*9Gf z`u?Es@9{zLqxi@CJ~`&J#%ca|!V+t|o}SN0A0}lR9lXSSD|M|tf6)2<`MCDy`H%QZ z`t0$c{dxaF{+akg>-YMk{CfRXefs{H)*tmD)`$4n$6xy8*H8LL`bYg2>4Vnq=N~lx z)cQQWh(Bx72j5?lK9E0&{BYrg`>dD#Kk|b27fk-Y-|t`YY~5v@2Uqz)*Z29S_)>qO z`lS4n^|{jE3zkjmZ#V0~Q_}m7MSbo5m(yk}(YN~kD)~?1XW|#aH{pZut?T>xqWYuf zH&ow>ug5>>6RnTpL-;8CtJ7cghrYhFKHuMyz7c+?KB<2betmyR_@Mcb{G*=_((?t< zAM!VvA9{Wv{U`iU{AvC`_^16-|F8Iae@XgH&o?MOG+$8sJU>(YQvBlaW#%ora{B-8 z<Boo6{GgoQ3;cHN-Q}30yI)=R{EW9RN#8HbAM?W}$v;ZpCS_l|e)HhfzNz-Fgg>p{ z&(BD|m4AOe`A=FO;g|G@j%)wkKMEfU&kv-J$}jal{y6Cu?VswC^qK0P{E_P0<0sZf z^yktq-+vRoDL(#u;nVXI#h>C!^+oHW=TD?x1-}&jq51X)^i997zu?8$A0&TV)bH3m z7dz*w*Q@@L^jG}u{RinA@iXOD@hSat#E;_R^ZR@GVcJ8TS3EY4-x+leu8{ay{Plfy z-VTrK{89gEf3Nj>e@pR`|MTZl{ZM?U|DyS0vHt>JG5&>q701WCwD#^z^Z4D}uI-{} zJ}Z2U%9?yK;`{eURP~MeD|-G*{8Qk+SYKSf{Hf=!h|m6?*6otMU;Ed2y~d>XPlf-< z*{eMV9JbH$Reb3Ai}&Z+pPzq<e?0!hU;a4p6XjR+<@J;Nuk!EvFY<p;|GMqf@{2TI zo&VV6r_1@<^sJb#wmGjw)06V!FHLRUy8M3r^K6?*k8gPVI@RAl*8V)d(Q$fyEdKM) zSBW3UzmR@XehDA+{E+yc`djgvuMg^9iNDC7ss6oxB>zMDsr!3;kv>L!zv1}(E=s>Y zFnqv@yQlA$3;(`axBA)3?^5NTSU-{f2p`mcDgVB|625%@PxBF)e-VF>zoY%r{mH+n zK0W^teu+P$KE?df`BWd&-xL2+d?`NUze%5{zo+^q{~qfz#-IF$uD{3-=TFGr5x-D< zs6OfWkms++508x4`)}$0GtcdL=w<2s(IUPV9Jft}C+n;H6z2yQjGei}pYroJ{duR= zl76c`-pty6z4&(55A0d@^3}H=zg2#`d56<ZO2?Jo_p<jt8^6rT!>ayL`1SsU^jZ4k z`%A*F;_LmT>cjiD7@vqQ#mDQH;_vTI{-rj5?fGB)<Kw6N`SsEMrGFm3<gbX|m0#bV z>A3eV@<0AK@jqRk`dh`%<DdAS{EzC#&$kHwq+fJ@;&<tTpAS%egdf_U#~;;aZTeR7 z@4#&z9Gm!c=YxNka_6u7_g(hzv4<Qq;I`^~hwwrEUHS9;LjIoo7vZ1qC486hiTp_X z5%ux${^QS0zhC>WwY&67{e7{1_xoPjzvl<>r^g5RGtw90FVc7N55%9uA6mcXf0}Q} zANlx_z6f7lUr0YxA6}moAI~qUZ?BJpUpk-agXa4b|Jvf~@lE_f^9AA`?cdiw-JkGJ z=aW7OA6|cnpU9t4{SiKhf27a8epO!+?Dr3(pTeh~4`}_qz6d{b|Dr!x*#4_F{CWN$ z{wDp<{yhH4e-QtW{?Pu(-&6lX_@nrczZAbtU1<DLeaj#C`H%AN@vr=p`2S*b%Nx`8 z(`SFW$j7Pw75+cYUK{)L<qOWQzW+x3oBWUWx0L^e))(=s?(g+q=llAi>r?#+AO89@ zpNal5`qQYtH+0!>So;6qZ#}T@u;f1r{hRX1qw~jJ(!1`+OKy67xBU2xBi@~po_}b4 zUu2u-Kd^dbm+Jh3^h5RQpHC=0-aiq(YV%)Zf6=qmRh`rO)k8NpdU)EO@INy<srf1A z%zv&rKce}Z^x5Z6{NVAW{gvyB`J?+2KPi9o{+R!Lea#pB{z%`6f2sbdzohzz_>b|W z{)POh^5glJ)<^t8{PF*WAASEo^JS`k(r3+2ygm?qD8E!6)St=!miid+L;SD!`1&V* zMgE=YQ`h(FCw?IOk$)2Z`~1@W$^X&wbFI%m|0wj&`E%;uNWV!RsD8yi9zQg{Q2luR zkNo|?6@6N!_e)P4x%9yFepi8y{_9<H*38Dv|9SnYEx#V0@;AP}m45j7cWwOT`J3=h z`6YZ2|Hb@7{-OFHeIx#&`8M&h{F$HM(DBIc^Xqrq=)fGG*}>2LrTo5SMwb6PS6!p7 z)%i57kMK$T6~&M0kM^(QzP^b6>H5?^2w%QF$=_1^DZY_^d#=0WhWqCEANEVL1Izwp zR+fC$OIK9+so*ci@8qvlf1Y0`zoZXTzmXrl?6S&X>Hm{8y=L;Z>G^lzkMs8BybXI- z@lX6j_*H&AKN3I1`i=ZW{!G{R^FiWw?ceJk;X~(pf2{iQ{VVx5>VN6}%8&p5yfmMu z{Kon`?2%)h+&IVI6VLVgBK?1w;`oT(?|pXcVO9Lm{73uu{HE*s{L5c^d{X|Y|EBzs ze<OZS{Qds4K94WLuj1qROZ?}LNB)iVOa7DeN&MsMOZ~I2U-65_zvAb=-&cO=xW}jX z+xt`MkEwr=zxDV~{(bz&zY_k1Z@)kBi^nJNkMQBwPxz+&E5AN}1%EkzK>SVoL;NQE z`2LvgPxYts{qq}|e~Ul;{Ey~$;t#(+#ozb0biU&2fB!+pJwAz_$sdcqe0(T>)W3=! zXnyYTUHC(XZ`HT=_vHV{-%))K{>4wee<c3ZagTq>Kj{zgJK>l3m;6U<`sw*q_$>MT z_)U(xqEqhg=C40+@AQ16(9b^WbeTT-rRwt$@@Eu(@@F(ZiTIkdX#FDT`^3-QJ#vfG z9~JYD`O~HjdA?({KWu3Jl^>5!(iiGqh#yH`sehvUk-o(KH2OnYAMKC&OYxhJKh+=k z@7nx{=YNV1;h*?B;y=cp^k4k#^;i1m^?{CS{r>#}%5Ur+KD+JAo9grWKBw8>4r%_Q z^JiqsHrl*b|2Eb77JvKSXC!?Qe!PBAeUQFUeyBgE{z3Qm`4j(n{F44q{HTA?{k=ZX zajGxXM~UwZo*Fc7ryM^^58QoV`TKeEvcyyKn^fl)#E<0vB7Pfn-nLD`??-QpT#)oh z_5ba!@7J8O%adc$`@zG`nmjQbSAEXOI_LkOdAkj&_@@06epEkYd?J4k|IzX2Z~xq` zMUV9Vdyic7%>B~*zBu0a(wlZ$X7#GS(E9!QlpjC;k^U^aK2ZM?@fG7o`b6`w+WevS z|KxA9em`FjzWw|~{Nno)(pQ>KQ2(y_@bfF>-}iqsKOlT5f2Dtp`IrCn{i*8D$Dj0} zHh=7|ANl`^o0i^ev%Eh4ef@z?r1$?+pHs5?$GyD#T7R$dkMz;+KlT?fKBOPyf26;D ze>6WL{~>(){pq;(2joA=|J8;+KVKn!iTV`tL-kARi~RB9PkT2_zfbkcqj&C@@Kwym z&U;{s-EQBgs=vga#rbZ&LHbAQr{mh6_b=oR$-mL_X~GZnr-V;BPW4Ikt@wETCVeXW zlgq#O(euCf$=46fw+ese?oa+K)<>*A#ozM_>ASA){XOlEo^L5XK7WKy!ngW2|9&bR zr}&V*lK-ImQGJs?iS;qCzVGfE<@~wx{hRKap1&6Qm3VN{^;Q0i{&$;qz8$@3e*TUt zo%CcnzgWL}f2KI@@J;@M`ak8*<CFBa*uPt!_{Yy5qCe==Y{fg$_y3P}7`)N_d3*}} znA~i@l;KBI-+$NsJpPOG-TGpFWBn8UX#bQyt>5=o#9zc8+P}X(=_BdC?(eTJ{`CHh zjtie&-{qfte<Xk6`%n2Z&+l}8^e5|e+~%u&a{RVz_uj?j{QL3D@q_T;=VPiruaDwy zA791K$A|Ds@g;tz<K%zEZ$5ui|8$)2OXm}QXg)#LCw?Y=qxDgK2|vV7<S(TEem+Y6 zmF}<e{d`9C>*p85--I9XXOut6zv|2DxA@)n=kg~$J`{iL-(R2BANe!tFZo0HTfhI9 zpZ@F2pL9ab&p)rV^$}_Qto+Q#rcWKR(|xN}e?L&i{r;%GC;v|QBmYYI(fxgWQT&L1 zssE(>lD-lDQ2mg<YpDLw{^<I()sNS2<<I*g;z#)#U;m^Jgg=Tu<&W@5{zvhp{=nC_ z^6QV&d?)H(_g}ubH+|o``sXc2rspr>x0%^#EA<$%&#Be^M)>jfr~Z%prQ+-HMfoFs zR(*T^iT!cpf9el(eed5%zr`=Uen=ll--+MIA5;BO{g6H>zP`U8{wIE*^GRPxUm9B9 zq%X97#oyN_)i3c2)hFSf;z#vM&*x}9K-VY!r2dHVuj76`LG?xWp!E^|5dTqq>HZ#n zalRJ$mHa6kC;ve6v#5`8ecGSTpW^HNKV6^rm*Pj~Q+(*S^w;m7j*~tRKTv(DK79PC zJ}G{ruhOsb_x1mDSfAxK&;3>3<G)@i^>@Yb-~RtQ-alx4et+b@#Q$afPVIa3&#C`> zu-h3Ir1yIZeg4n%H~#(V3f2CT_=Vyp{`LA!{yOsC(u?;Ulm36khBs|GDa|*9uNm1j zXPvQT-_5J<57mYr?>~t@NuQ{HCjBCQ(f<7NP2tbui{^7N{*fQaACUeMK6IS?d%6F! zPP(^gdjEUQ{-+O2{f+c(R<`GcXEj=5P!%6qzxUsSPl_MmkMKqDC4C_NBYh`+A^%7H z2gQ%pNBbv!qWIJLgfIVmQRjR9BY#8jC;wO*fB5Gcgn#n4I^REEB7W5QzCOiI{y6zB z$`8el@Jach{+{+v^DpZEh=0kSQU6H&f!61rf2e+aeo3FGf2R7T<Ag8e$ImxO9~2)y zKP3Lu_5J;cUnsxCzl3k~AD(}7etCTIY71JV-zOTf`KQk%|EK<APB!82CeI#tbXDJ} zzae}Oeo0?x|FOQFeCM<F>Gu_Scm79xdOuSBZDw})a{E8A%BI!#Z;SoA_e;c2zJE}D z%l_c^`n%fjRpu{VpZHbv=l!4VU;4jzebNV=@AaGXS^VzTN9&LI|KIEP{R#DFlpp2a z^Dpr$;fLa<`t<oDe?a<1`b_mr{6_pN{`dQ%_=w;A_Z2k1R(*N@MfE}R55>ppGx0lJ zpYlWbCH*FRHMBpc{b_#T`B(Yz{7w8Ke0hGN{p+~zU!-sT`xe3%@ss?o=RckA^@aQ~ z=|9ak<xhXHzwb@_O!E=qH?8067x_E#FFNk$`}F*Y@Jsop<HSF-KJlZ+7sXHc^ZZQy zhV(=0_x_*!1L+H$FaGlUr26pdBmSlQkbkE55x)sPo?i*SRNsUznvW@e{{32-uMoeH zzL9^S;}n0YZ{lzApX#5yeo_3$|Ed0ce(1RN@BJb5Z^EbNFFH>Cfbc=}ul$gHc>d7- zNnic-i9b|--XD?wAbzF#Cx1oyPv@(C{QQUXU-|d=)cpznzW!)FBYyS$Db=U+%j1LU zgRW2drTX{#7k>QnIa;6e)yJRkOZ7|r7p+hH=KVSGx9ZpXTZ%8~5Bd9I{^sUu#E(>e z+P~*N@_$r6gkQ=p`5WrLDZb<{N&m<{QT!=>gkR!+T0ij<`CD2a%?GHzA$%&oo?i)n zs&CH^be!ss@J0TF)=&IJ^Dpt2=YQ$5@4vLal0S~T>%g7U|L=P0>z8(YGJk$h@c#v~ zo;+acOIOv!`7%8pr~Fd=5Pnskp5Li|r0W;^cl=HHBmbrNl<|-8rTQm+(s5rObe!-< z`c3sg=M%n2zv=#}fA4Q~|FXaD@m06aPs;0KgZnzRPw&5pKflgy{<L4OC0bP9e~ahG z{1X2}eK_T!Rd?%}-~X64-H%M~2MS*kvxjHCS3hBy>ix-|(|n2Iul@V@5q{|Y<iE(@ zlmDUmqyCHXNA*kkBK`3H|55ehpPwi{{{Nrq{POwEs3R|)lHPwCwA>AI(*N%%`m=T0 z&g`=9yVc)^ApH@3{Q4+<s$b8K#P8Z)S--LV2%k|O<N1Ui9ryZ6`y+o!{6hFs{JnnC z{Eya8@zZhd|A^mJA0A(-Uw@qZhxFf{PxY(o`}qg)r})j|NBQ;hJ9>YY{7pmaQ~tv5 zpZW{M$NLwmf0~bw|EVp$em<k?dwnGTL;0ip=(xYX^6&YP@J;@L&L@77{`mM(e@Fcn z#gF;};z!a)!k5<P>xcN4_%Zs+sBg95)6c(Yf3ZFn*|g*O>Ho96Ir*(u();%XKOWzD z-2TgrsrnD{XT&eWuhIWL{*S&V@1L*l-Yq`bq5OT_dD-dtKQQWeWA*(yx<1v9^uy~j z)eqsH;uH1jtD~+OocfOePi^u|`Th6YY}b)pKR9vEYX717@%p9scz;)$e*5@P{no~> zo<GUo691FG6F$5@Qv4SFIQbvKC-qn25AUA{pSAfD&yS?<<Uc9D1wXm@knroDKT5wm zzSKXI&#%U;(f8o=|25v+wEfFz{-EoBYybba@a5-&G{2?&>3ko5t<U=l(nsl=$G7U+ zAE)Op!dKb<M*XAwQ2i=Co}Wk`V*fZ~y=UKFCC~qyPabTR@?ZFaTL$;P?%Mh*>TVwS z&=bw_<8$x6dzHuX<Kp+v?fdQIpQ-;MeiOfV|4#EAiZAI4@k@+v%)j>M^GE(O`kNJ( zc;eJHd4BeKW!~~Bf8w8c*)sVDhL^2c{rwc}-}@`o*TVOI^!!=t|NPhY6Pqph{G`9+ z>#sX(#SPN;1v-CXw)NnR|9I6&RsARbPWh$%#rVej5x$9^h<|AQQq-r@ha&&(c+}_7 zi{A7@`hIz(vF$!d{;Tl!tL*aH*zJ2?S=V>+4|5L5kDt@|!>iK&H!1Lc^*&!OKIqKq z_bpUE6d&ck^mpg|@bY$R<@fI~q4`0N=l3uC<E*wLyLRYNy+6g5_=ECG{+Rp~^~buu z?@yI~ukRFpI<EDX{vhJNw*J(wpZd3m|B0Urt=}Qff9nzJZ=d+B@L&B}En2_$rd586 z=g0MvzpO34B|hWz#ZSbq-oGfnUf(GHq#tzs+T!Q;Px&SMiyyqdr|U<4i}|7cjOvf{ zf%t{=QT6HjSK2@2pY)H8D}El|4efta-`@X|e<pt^e0zUG=WG9--zYwmKdKMX_d=hY z{?q(T{NUqH=hOPBKa2SN;}Sp2KQ!n67ykOdHfcUq_><mUjv4z}|LXjX?oa-g@In0v z)i3cY<&XG_=3f*a%75X%9KNVNwLh<a<S%r6|9w}SFTAz%8?(~yOLlwp!20z2`C9)Z z`~TI{zj^+p{1^Vj#fSVa>7VxJ>r?*M>vN1x)JMXf_{U$L@=NCveziZJANg0mKJvem zU-6&EFVz?I7sNkw{n$Un{8Il+`bPel)=&Kr;e-4y`CH-B`%8+i_{sNQQNLpRX+9@^ z;PFNKBY!G>^Ycyezf^y;Kf<T*;p?0H8R3)of$~TCOZrar(a`+T^{M{I-_dcZPvOJk zkMKqO9r<<Z;ltNS?;nqS{PS(o{Gh<!-B&*O`Cpc*&X1@*w13YZq_5=vRlmN!ApcMO z8^tf~zsH%qzy4buzsClBcwGPg<G<bi2OxY%U%h{!{+;|G-Jke{@LS-=`8(y`&u?P? z@$=8W3`_IXHlvPuD9u+3{k`D0Z8|(zU&SZY2jMT~H|i7VAMqRY2c$35A8P$xA83EV zhu2rtN6Alvr$5$i-#kCJt-Z>PX+Ey_OwJBiu=?K)+q3$9hVoOMALC2>9{KC{o=^BB z{L^vLN8%UqcjSKvf5MNSPZ7QdpQNv<Z~uIp{5S1S{NVRT`a$(g`a#!M{Ahjt`%uac z9Vh=w{*CyRj#K|j_ow~U#$TQvX??_>#9tKuhUz={C-I->U*b2yKj}N=hy021v+(n2 z!YAdA__wzHj_~LAr|bLk#h;#EmH$PC6#ncF&)qmM{eRIX25;3Y{eMwie@52r#WVZe z{7d!uVQux{*GKpg|N8x_KD>V<{Of%GehKk2=>y@D{2%!@@~;#h!oT>n)Tc9^9er+k zKltw>-|C+FLmmIp{(nm1Z^Ezk@8^@We!`FN@9|mN`u+N7zD>uqe*gZW_V4dc@l*Ug z|5N`=`bGJn`Xc{K*QfZ<{F?lQ{HM<k`Frxmq>sd()ZdVPQ+`R`X@7)ITA%pU&zC5F zil2XfNBHyeYsJUUpQt|({=Gg^e?<IG^CQ|H^<Szl&mR<jT0fny_?P+=`+w@6NuS04 zzW)+_{r)Mwbbsl$$Dh{c@h5!y_0fE=w)p$|Q+>qwQOqCRU;Fd=NBE-slYWpsk$w`t zQT<bVNngnyQvap<d;TJQqWn>Og%6KE>fgw}lm4pyJpYjXss8<ZmEtda`{x7XUxiQ4 z57gi4e6OG6$p9|kU|8$)CW9{Gj3(|M0f65Q_uhc)0zpt(SJwAz_DZg}F`S<t~ zfBO7Terf$wzr=6EAH<)EkAHuQjw?Pse}rH0r}rP?XFoq7{U!Y({vmy){)^T}{#@(# z{7?B;{(O9?{)s<GKNTN8{}6w8e?|U;>WB1!`g7Vp@h`=Pj+1{Oe?i9yUy8rSA6>sT zee~C-{L}p@exy&tpEO@1{ULrN{-^T^pQP{9Ka#&x|LW_X_(A&V@j>$k)vxz&v_JC4 zlwZ;p!Y}pbG~c52QGZDBug(AX_!EA~Uyy&J_-lWDeZ)T$|Ay)d>7)FGe?CR?S;gPa zm&w17zoq&n|3msHeE9WK{>lH4e;|FK>kD5Vf8_6|KIu5chx%jU_uBZu^SkuR`$MWf z(r-FW{#pF(`$OUv)t^6~=1as+bUx*e^pE^8@dx#Pq)%F(j~~TH_3itA<=4L-K>Z)p zH{pZ$NB+hCekl1r@;?+G9ryJ~=ac@|=3jjNX@BIesXx;7{rzj>e?Q-*`VxNp`J}&8 zpW+8!AEY0`pFf}WC;jmH5c&DIe%IZXem`fM6;_?|Q2zdi^7nbxXPqw7N552kf1CUh z>6iS8pRW*q()?8MseS+d`}vml7sNlpkIx^SPy9>zMEpwnK<gv?slNSulln9A-^4GJ zf8zJruJ8Fn=lkQ-pHY2L{0Tp*fB$@n_=)gE`bG6Y{SEnBiXY`i{9V3(8To<Mr}%sR zA^j(RPX3eThvXlqe<6RN_<H`-{{4K5_(Agl|9pe=kNQvH)31;EYr;3_8}U2ggXXKk zhsP(?7p<T2PyUYhv7z-v>m&S8{SklC{mEaG|J3^Ze2d~o`KSC4e-QpCzSRE`zDU1F zAE|#Jek1-N|3ueU{JsAq{-^kmKa2kI%D*nTUGu!Z=zHz4bJG83QT#s0I=-;?vX?zm z{r-^ZkM<Y)o2cKlJwNdEqx$puL-{3sAbp|wqy5qGhVlc&hxmo&1HzBjFY<pBKUyE% zpYTimkNgASgY;kdUHJY)>+}AI;zP%kA3q<W{)g&|<`aY;t>4Fw@I%LyAMc-azK=iU zhxnW3w{)DIzsW!P`2gt~9jE+}zo7k*zoPzw>XYi5{2}>s9rw@wD1Wp*@-I|>q(77& z@`ur%{BM8YpI=b^bbbH(>C~T7{S*IDe009&7t%+aPx|ZUyHuZAzvl<yU&23KpYlun z3;9pt2U<VP2dF-&{<MDYZyQ?Q+Mmxat)KEEe)Rnh@xS^bU;oliufNg<KVK#MQT_@4 zsxO~E#n-Qo{Dbh}`y<*Pt)Jqr`HA;mx<2vK!mpqBm--j+hhIPWSK@EQ-{Y6&BNRWX zKjF*sKgEx(PyS2(#n&hC7tI&Qf04hZ`5*0%{6FoF<`bk3q~GFK|9*q=OZ?>VL-j%Z zE#*)9^Y^FqD}Mg_R60)m8LglAfu5g}{!o3={dIlce~|yD{E|N+e3Cz*`k?y@zka?! z=j;C7zY{+YzZ3tEf1=|QKk}bcA9Q^>PX34Pul;-fN%}(mhvpwtf6`~qzocJ;U&_DM z@8d)KMEN8CL+jIVuV3Up#UH-D2_IDd%8!p9`Ae!V<!8#T|KBRkN65dB|DyHL{DICV z{-XYbo{wpLKEL8u&(Dg#_ZPMCkN3C2kH5b1>+wzTBY#Bosq6dok-t-XJpQTw5<mL> zko<-2@8d`K*ZzI~P52;vApVg4_}>T6{e6E-_#pnH`k?yM^?iR!`bhji{VQFc>X-0G z{TbCC^(VA`(l_PL&o2}|k00&dpHKdyq4}ZuCjUVF7u7HMKgzG_+w%wEkLClykLPFU zpRYf<e{K8o{*?Ti@ZsY_^+)<o{6qXj^`ZLv3jCKpuK0gr&)53>^C`-&^5^4A{gL$D z<A>^B`}6wWP<>PV`u&mr)&0FcBYxHX{rS>g|NA3U-=r_PzOO&xH(lT7hx{4Ehx{e+ zm+Ig9bK)=6ho4_j{K-F&za#x3e?#?2{*CyX_DA{E`Cfl0KJqsnf5b0Tzoakn|GqyU z{v-TQf28w0zmor>`3LzQx<1t(o!?M?A^$-9OY<q=$K#LkD}U$tm;43cgZvHQpZJmd z0nNWiU$uWff6@N^aq*+)f2v=?9~~FIeE&`Op!m~qs$c5QNngo7l0Hy>qw{@zX#bvn zNk0@He?IMx{5|ml)i>3z{29f^^ON}5Kfk2;mg3{z?;(Fd_|x@$eN%r&{)qey@xS!T z<A?Z3{?^YYNgt{H$v>*T{rpDw^!|eMRr~Y&D|~qT5dO%&5I%(ukALE4<=4kY_37hF z{SE08<xlnD=WmohsxRVqt<U$@#NVn<A3yT<#2><+&mYwn=?Cc#^+)7ih+l|bi63>o z=O@ZvjNc=BFSS93{QIzf%{bt+^#213fA`rLeXcqFqU!%gkLSndlZ21j_}S;5;!pc0 zeW&`P<8*)0H`*WZGvy~<|KVv@Ht(G0zt#Rd=RA<-U-~pN8+63n=Z{?es=5_6>U_s3 z`SG@IkA61&|MQ|gd%khVE1Mk9r!MB7<_GeZe!igfdw)dy-O%_`e8r#M-w7Xn{o23h zPdZNgO7jQ0KIsSXkND5~2g;A|>G@6j^S>V@{`T{E(r?la9ryhs^#{^#@4vJ@fBjg$ zvHoa2EPvzumEz~)Px>bQ@aGdhQG6&r<PYUPyuQ%>b^nR>`A%*8<ev{w{HXsR|4I8- zf9(4w)xY<z#P8&<$iGv4(fo|`pYBilr}+Zmzc&2(=ZBPk;nVwnsz2?|^AjBxe*O96 z&!w;ae9|xKKS&?R|A`;G{wuz|ernTqKYyY5fUfV~FO<G`eIWl%@h$vi@&7fWeks15 zf2cla|K#uJIO#v-m-vs)SAF^T)TR$#Tm7Q>DfutO-{X_`iTIK9neapTrTtTU#UI44 zzW#+T|Na5Rm-a{VEvj#w@BN+l#jjuSEq~wbrzw5@uzlWNcDldumFfSdia);1w&}3- zW}80It8Vn)b~t_S{P@Zn-+oz|PY6E~vW;KuIpCwY)&IXs^-unn_?_mT)c=q^NdJ6) zL;6hkq2t02)vxd0Y5qg_qxus*e19o^^!TItAb+R)`1ojl)Zcl3K>aoCpZu}*@B5$H z&iC;bzPvtBe09F}cjPbW`h+j)pGm*Se^UIZzUh4B&*zu?2le;jcaLA1|B=2+fBf}n zebm2^KcN1V;xB#h>!<uueN%kp-@U(3{yjgDzft{o{#SkY<8(gFzsUbk{ZW5M`Yr!U z{O{vW{-~k;pX!VFi|()Zd;TZ?Nd1e}@9RhP=imR-alby|chWzKFY$}&&-d5z57TUa zM*dX$_wyl|9~1vkeNuka|NHu&_>jJlzbAi2{+Rqf@u&FR^9Ma2r2LToq4>~zko1p^ zYyTdf+Q09gY5(FcUtfeT<<I+1#n)e-^qu&D>Ra_y_Rn#CM*WxY>-{<T57n>t5A^(k z{5!2r_38DYw)vpf2lAJcANddee3<ly@K5_Ae<A#P{uO@xd`J27@mGBOapDKMKgC!6 z#Pf^p@AEHz>iI|b^Uv?dU&%jsej$9-Hs31qd&4{Lti5eMKYMq-CVxxwvtReW*XQTm zcy9Io%TRvhA3Qz?-*lYtP5y!6L-^Biug|3a<R3`i6@Nd!BL6LY^876Q^!!BpPyHp; zr>^hk6Ai@&<%jU2{CRyOe?|OD{2+hp`y1iI^N;w$ub=Wm`xpLvebk0uf4=y?<ge&& z2*2VFk1w6?-@l^%K>PFYC44D<KEE`dr1=WzCmpB$o%&<dx8EPdPx|QNOZXOky}pva zQhj)Q{HmYNbiTOh@LPsNe2O2uK9ar&KfeE``Xv8M@uU0_ekgwwAMzK3A6g&rul&D% z{zms#e!c&czIpv6{-^mQ=^y1s{6p*W{4M<Y{+Q~Mj#GTdKT>_y#(#eQTEF*iTEEvP z>4V3Q&iD7H`X+uL{iFD*zC3>De5x-xU-d!p^~dS{u|D3NxXE$p|LZ)t?j|b@$onhB zcSd&Egx7Cw-M#w%b;M7lzq#~~Q4epNpFd{W(C^aw_2R#;vUb^p&7PZIeZPVH5BX23 zALZZckK*I|d-9j!Kd-OkA4q?xe;|FJ`3M~+eIb6P{YCsl|DpVN|3m#9@mFpBv&45? zpYZ4BFBCtT-x9wGAAY_=$5kJGf8t+XABwL(PW?5-kMOPIem>C9`j)?5c>bsUTKMq! zBYh-&r}~h;@%~=?=bwKo{|n#WkbjQ+|3LR;c2D1Lec1H!j!9pN`R31~&iU%WHr4O9 zXud@HtN3_)2_K&Sss9x}`u>vmRqONhOZr6ouj3vcgg=T8`8%!O*B{-V`Y+0V^w*6x z@3q<yIsSHCyX&Yle=g=Pb51$*!WONn^Jnp^k013vlt1D};mi9&U7zaP`+w56h~LwC z{^Qy7eeUKHMz+5@k6%&W(~sPB=aU|&exFP6A^xHI(D~k9Q2iGC<KF)#{E44@e&{&G zKOVoU@1hrNlgEGTjAOS>{8{*`;|@7!<8^<!qVoMK#b3uge--uN;-mF>{0SdkUsS)o ze<b}T{Sm+T?@P$Pkp5GAg)bkU$WPIq5`WYEg%2Np;%}PI5Pwm8$sg<fp1%lR)c*-z zK0ma7^4Fx##NVVJRG;KOb-v$!<mdYj@74IwoPR!=v&ZD5pT+ej9Ny&F1COriC-Do_ zFYS-`S@`t+ijGtLlRp>#c>LB@zh2)cezobJ_rHW+9rxe2)BHgE<ewi>e0ALGm-NZ| zPl_M$6ZOXwf8F2rC#pZ+pA)}R|D^bN{U!b;ekT7a{rCQf;#>Gn=TC%BKmVut)BgPX zZR!vF^(lVBr=K4X{}F%1`u+LmUxpo$^LLw3M?IAITlkuno%g^NyWPG~)xT5!6ZIkb z7t$}`)7P)|Px0~f-O&1{`f2EK@)vY{@r&O-@h9Pz`hVqzzTfq~Pc45o$-ZA6`_G6k zI!^UL^-1`r>x*AJzmon?{ZM|$ACtb3zDj?*KGA$e`0@Ue=9|(7??1#(-d_~__uKm6 z{UiBL@sF<$;otKc^~b^|`3K+s37=kn318$t)E{~OO8iIqP5ra*?e9<XC5k_-U*~&$ z)BgN?k?<-0@#j;2Px_$!`Tj-mE$1ue&R%+c+cckgb-!iPe5&C0quzh<iyJ?#K0l`Z zfb@;<N%0~7LH=Fw@%*Ct_x+Xf<KruQ`uZmSNd2ew=k=NDJNoZg+Z_H#nh&pi|A67i zU+VabY`aUIt!vb^>Mx@|jrvaYNA*GbBmF0Sp!>)8#Qh1sUjI}--rtdbApb$}r}fkP ziu@VvpZH7n_xefw9o3)k;r*NH!`CnM_lmFgPn178U-|X?q5AUrPx&MNM*f8GrTX>t zLF*@fPWdN)MEt7#d;duMLiJ7jL)Vx7`TSG;k^ia9UwHkb{V6{F{V>8Ot&i$k>+}Aa z{0ZTo>X-PlHhuH)6Mp=Bi}t7Z`TWYi`1&UOru<QSRi6vLKbp@_e<=R)@1GHWQva*? zc>NMTdVLW8dwtUVJ--PbUZ2T-(EX|Yb-u4p>L0~#e*Ze3_UHRE;&<r_t>621;(zjQ z;!oed5dMijNngYd-v8=+pC95s;ls}dX#Eslo$vEU{*taw{1WT`)D_Mjvw7a1J$Ud* z-O}&dDSk7un@;H6<<oK1_eZEdC;usYdw!`6U!K2|KkvV#&mJG-56HjK^_5@muasXO zAM!uSufM+d$?Gf4CkUV9e}zxKKb`OML;5XzdHtsSQ~yZ#CH<rNC;vwNK>PFjFZ_D_ sq2t1z_iq$m;!pCo<bMbsRG;*Gn$}14sr`F=Q~i@a7CycIit+#d0BMXHvH$=8 literal 0 HcmV?d00001 diff --git a/data/Hydr_FORGE22.h5 b/data/Hydr_FORGE22.h5 new file mode 100644 index 0000000000000000000000000000000000000000..fec635a4a65e7a70e785f6e3150c8ea2c7d50d36 GIT binary patch literal 308752 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̗ohZSTPz z`8j_-+?intm$5C%8;QMtHo3wsC;Bwepo-%FybJBoB&NjQ!**NojmWj%(GB)BJV``* zEwO{}uGnNwESXw`9h%DH4tJ(xs~>iccRtZKbEyaH^f&A$Hv4s9CyPmW!kwvZ5`)dz zTThIhYj_BDw)sKCp>Jc@MWO0maA%s8+`*RE{)LzoVSgBQJ_-p$0lS&r@ZR*tl<2aw z0$Z(W;t{wrD<>Sqj*8DE%GEFSf!(0XUSe=kJGQBo#8J32yWB5eXHI=d)LpCZ3p@VS z6U4+Bzp<S&Rgb})Io^2-yTb1i(K^S*4|cL9am4(<>Br$caPB6e=+-jqj&J{nUJDNU z!(OK(o7nJk(Fu4@h}cb3DR03ZvlR`1J2N8s9JbZc7sP%?-IK7(o8U(@TJaNGq+U4? z?#y(aRBX?rP9krURS@jz-J^+)sZ)dDU3u*WVwradcKD1jqVxujQ?T#r%q04Y$%eqY zVU8WK^>Y(;YM}6GxHC2L&tP+JeMXE6)eeQ7!vY`Th}C!O(w~ZF;LfyANXC{bZzJaX zu?T~mUvwl<sA}?AcyDoBM|6uX#MW3bLacE)5DxoTo?ApkE$MUcKKy0}F?8x{Z1YsX z2)HwQ-k-wG_I^Ut&(t^%JHZWJ#ALs(*sfxWBH_;DG)cs+`uvV)J9o<k*vaRI6N|o0 zih}o$&^1Jfl058gt0AIK#J-EL*HgGjY_gS%hWDgD+lXpQ>##Yh_+#MCjG7RLZ4+Ni z9IR7|g<YYGJJB@hGq$+af=h5`X1d2?drxg5@~<_CgI(kMP@?k;&dczwnyE#s=*+>6 z^cx_`=In`w{ebaxVql>76?iwEYeDQVug1>!#+v|lrp^L?Y`&5LV!}_AtFUv5a3zjC z{fJ#|J1-ILOsnWvY?-AE#5~81*I*Yg;S^D1#W;3*-O41mGd+3kVrwV$5$oUVx(>T| z_p3zZRFPzOAJsJ@hI>E9wwy8P2Hcr_2EN$2oezkHVoOqBC!FI<O#S=;+dXj3O}I0; z^P{k9&1;Dcq3cs&r?lWCvD9i5JM8E3G`KUR6mDbpKJ6j;{n?ogJA>%U#FiIAx8Oa+ z(U_<a{}h{R#e@vFGh<!6vF&+sh{Ku+w_#WE#*t_~wG~@3RV)+k%<T6O*uLIXM8V9p zcVO3SaGdDsH;k<=rjiABW|eUocJ${iqWoOzyRaL27()#CCXfy9W}$|}?&8PTSyq3E zdJ&%YU@xGMMNG0?m;>)Ff9#1IOPjGPU(CD@cc#sRv)FR+6~w~2)w!?>b~#EEPa4GT z(o}i?cc!=d4Q$=1ABc^*mU*yCe1CzcI%CR1cpty5PmJt*gl+Bjn>cXKEg$yz#u-H8 z!1)F6E;@H7F~htO+w0r(Lbx;e7M#XzC@v#9{ap13b}A8viRDlGu_J8di{Q?biN1#2 zul$}E;Amb9JEI8^#CA2F5_nIq(<N&2<YV(D{UpY}ad`}TNB30X=*_vM@Ls07ooMM@ zk1ahz;0fHBxduVl{+%U6VKMbG*tOpCAi96<#nudzeF}GG?ZYeBaprG{N};CZup5yH zBZgT`d<O3pKedUy^10YKPrnll{y0^@UMM=5nDS!wb9i@i{Ex^LUxQtv##ae<roGDv zY(<_c)_7qAO`bATv0^%Hi_P3bDQGkxD*!q)eGO>DkxR1LdigAk&+-#=_lu~jv2 zXGR-mW7~fIN*t2h{StOX4-<)I-)7aqyF};~Vpee_wvQEe9o(4$5y!Bb<R21UY?bR_ zr}k$bu~NAcJL-kxE4VY|CPZToUalhs*BLax&eSE4*mdm>cBbZv*KlX*x@ThZPwgcp z>e@BJ&iQ>jaa>6F4ZK&}HX&MfmSfBMaW=u7nSbvHcA)WnqG+JvTiA6-IuX6h+pu-M zi8sTY*&q{%olsm&RQaj*4t8Vb{D~1ye_>nME^C21v;Sf`cAj!K(a3Sfd)SFgxI|1> z6KsWd&$^97UY;k|_1DIUj&BaN!Cu+@F0t&UTsypn>pBpnz29N?3C;Qdcc#BVIJRNu zb7HILnhw~d-t#4De*S^Y9k`?u?##G{DcBC?9mJ8-+qz&^Dsz!&Va5Lu-lcx7C+5f( zWBWZFB?|pH*bV!Zi?@kxFJwN!yN07JvF7p{>{zuKJ#c3#x`bj6bC(lCHMKs&&isux zv4?*EJNu?WFWi~>?~||vy<3UNx3_+QovXolBBvj3AG}wI>Je>?3$W!s4-<<dUBALU z<Y5|7;+s@Iymz0rCi)b=!q&5z_6_dLrgOpAN%EycHQSW~u;cjSNsLnN!?t;`@H^a@ zgB(|}3okblP3txf!cN@fEHU#M*AIC2*3=>LyFb8g<o`i*)^#3&z3TfL#0sG~KjA&{ zwk1)v^CkAcu_?oFX9nI2z&186B6gfy{tI>)k_U-8<~`Va-{z0NotYqW8QZD2kvKNA z={M}k&z&Y(J>?jMcNtqvV&27j*a6Dlh$4=Te_-GKzh7qmUr#l$F=*{Nb7DPr6?XhJ zp1*KsD!=i=9zB>(48OT_9Cntv`-y#ryRdVGr2fI3X=o6GE!<g8Ocgcc`2N40`@J9{ z_vbO}+LP)N;Ldb-cn4d_{0p)4v^^*6!ekPNQdTo3!h7$KDbY{90^8u}L@u~9TSk4b zQ!eHbHC`;91UoLry~Nnd?b!Be65McS4)42wUBdm6Xs)Tx13Sq#Cy3enzp;I9s`A2} zDfs>tcJtv+MAzFklVPWB5J#*!Hk}XNqeV9n<&Dd*hkE`ILnIGRfxX$oY+`r+B7S(! zI=!2ySKNXvU?n;g?#!ff=dfMmUl9NI0a5|jRgNAb+9?0TmV2Q*4ercBj#TX6%bi5= zIx9igb?u8LdS9D59o}^{HxL^SmS89Hj}cXMJ%nIC-jYd-6q20*@7A~Nhyxu>*!jnV zh2hRLzIO&&)c6@O<D~XX*m+6%5c$l%V>k3Giol)eB$JG-Qrt!?AF`MQyNGj<M46|P zMd7`F=Q?7*#X@W&<q=~0?gL`5Pv^Kr)K-%ghj-q(9mII<*VvBN1ZTsYIofy%yX@c- zqUB8u3D`;NdJ%IEf5r9}S~LglOksmW?ADHVM0e3GlCaaf7f!70nKT#P<4&$2Dm~1@ z9@#QP3_HC~3icK<H;KL5B<I0<&d@fZfqWgd&{KYCxHD5mPhz`WEGBZjP@50Cn%(Y1 z`^%rP71b8Vz@1sLFCIITyNM{NX|e!zJ&mD6Uw%$mc-OzFMQm=#!A?FrKvciIXCdr4 z4XzWTkBQ5{yRE1NacEODc2N)SBDgcnB>k}^9u^R@`c>p%=X2VXC{X+nyJ_1z1-LU^ z&c$M@$u|%ycWzXKUDRkWQBHXrd$4llVz@JdIqqVcUhX4y)$US)UFN>4MBQs5OW>Vf z(~OvS@Hw_K|0HF&GsoBXVpp_0AX*D8SqeMZ+s?%Njt|&@$L6TOohf=R3cF)dEz#@b z`em@wkvvIk*fNTp(7#+2?o1V#+t_18J;aEioy%cob?!2;zf4FC-t%@E6OArD#THSX zumbMP^xfXro*X$uUNr@E*wxoM5*@i)v6Ziht%N(XtT6&R{9qMP`sP{<*!8VBPV_%K zjBO~SvI_3Z*7a%FsU2NJO;Kx2*m2*BA;$FxXu-R~NkigD-ec_2Eq{p?r#-b{FC~*j z%-ObZHN5)`*%O82o3UHUX6nG5={6dMt#Pq}SW~%r4eVlfA0;YY9>gAAuA~chX6U{f z*yh|Hh&`(;*TOEl@d8nwe~KQw3*OWxCbvAoc0K%?$a&js9qg;tXAo_V&DV!_dC{H3 zqD_t1AwARA!<{K1c^bPruZ-x^zsdl1dZ!N)n~M6eleWokfICy|+%;?t`S--Ao#uwH zvl%@{99+V)5#9?cb%~}N`Pkx@e-blmU5sGwy)Tu>e{Jq2cyC;_o#=e99$S@Pz!>h# ziZwylku4=eSs`^3*bQWO5Cc1Uv5k+(n!=sgk$nX_W7Aur&PmhFu;Y^qBPMK_Xa?_2 z{o2H_`MKETMc;{5Lrz;@FLN%Lm{&I29Nq(V{znwKScBcZgl{X{nV!2(U~6+cBGxZg zwSZlG?E#`P_b2SpMCt$F&J1t7gl&27HL)+n$P#wBYeI;IhyP&<3$5A)cV_DPY;5<A zuS9Oq-Bz%x%}yjb^vv20?@A}P5KHqavBS1-Tf?0xb@~`~@BD{EzirApU}rG2kJz%P z6Fa3$(gyBKjnRwPTo>zzv6TipVQ0TPkT@Lo2fJkX3R}1{&G%(uOLF%Tvsc;K!Opia zo+!vKY!C0vDJDeMmU3+M!<@U|&aBEff*rm7K2iRdq66%PW;qc<Hnm}!^@#6=JF|OE zBz9I_HBql$&k=S4r~QdZMZd6Jwk_KOcP7WVbnMDS-9($6JDgxAHyTSUTq3v^-h(SQ z62&>5V0Xoh6TNE>Im2Fe-(6y3qTD`sPh90dR6Y0(dwj|)7q~Mc*MwtRw>&2fOkcAf zcKI2;MB|Ph*rLalxWb*8k)49=wW)*1cXHbS*fq?#NOao5?*{KG{p*S4^NX<~ibjbt zLkADSzCZjnF`!Jw9o~(0+7jEN-e9LMnc)F<ruOboY+jCXV*GL~PuMxudJ{({4Pcig zDjb44)3PxMTl!!tF*jwa7wr7koF@t&<~<DWt<&|0?&}M%H9LlhwX<BkVIP;BMpWvN zIs)$_0oKH@yjR#3Tc-KIo!J`_jGZ&TlxVPR<x$uP4S5n%7WHAfl`ZszJCkcP0lOxu znP^|R`55dJcb_Ge#Buq-d+2f<qU62@*gcbe5PerUABVku;|*f-lsW$Jo}6MyRBw5S z&3Smr3Ai((GXk(}*B23oe3u8nu4vXlqS>Y%Y>A%vC*jV_nsXW3C$Etx(7!1Vc1<Ct zi7rJPLGZ4&O_Nv|eh)ip(Kn*pPRC%_5B|PJ3|=C33f@gC&52$AUSMa&@r1ygsaxxZ z&A%_7n3%ZqH0+#L?I(`AbzxUbkqU)7(|Sz|wrop1F@L(@8Q2A81QA6$#;`kl)x+S< z^vb@2t+VM1u_3_zEbJ2IBoI}$%nXP3v9G4Yi1`)RRz(xf!JXOv!v{MrJeO!xwm1TI zB0KjI)1%t4J(ozFhdYyZ_XX_we>FtM<@%AZQ?5NhESvNjJ3LYK0^FI>jkmD-+&&Tg zQ*5GOXSgPg*y=U?BD|+g-$c}0Uxv-y@sAic>u@ye9kR2DBcB$<z<X)HZlXnA3%1l2 z(O9@Mb3)Ex`^|qr6xybH33e?%juG7!{lwNNQ;vf>v*!0r?AWMIqGF}hW!McnL=!{f zrpCj&`SK0K9_JG5>`7xp{Z$@UU@zF1Nlcz1n*i^wDRxB8mL}{fFX5|jXWC|*!IoeD zj9BEWod~;-Sw2LGP2aJ*KPg^=JJV-QGPYh`8?ouDMH1|iLL!N3MU$_?JIA(l#HjE> zY@0<R#6g<_$*?c{olZ1eB7Fni#VdCZGygSUd&dc;z@5oodkVYJ`3ccEQR61;R9ATs zE8M<fM^0Ik3U{XLnndh@ckhUS)3>C-&Nw5S*zsXfI=pB2t|97V=V9}08X_hH?7Ibf zr#Ux?V`h>W@Lv9P8_{Zh9kxsn|82N4^M0Jf4hSzMij=8k!mi!Mo#+|$8C!eFf;(_$ z);q*w$NzgnR9<e91-sFgp~Ub>oOj{fGEs}z_c{kV*KL4kn6f7u_QGqf6H~p!@4>tK zbPFQ)`fBXj54<^WXFAOC$5zTNAeMeoxevRr09T?^-bd_Svw692XZnT2VjIkFAhuX; zd;q(YAHhV8MdR39Wh?XG&W!z?g>4_zM;v~>>mlq)9Ig`0<3#e|U2?e@G28h$w(q1# z1#o8yuJXlhe*J*xI%P>A?9@}7iB<1DU`Kn+c?5T+d`1-ZkbW&O#CLrW?967JBz7B( zVrP9?UJQ4p-kjUm0(m{eq^~<mVCNEYnaEKj^cdbNEscpb;ZL#U7ELIHJG0Qn8$0;- zJ)-y$g(tA<dhST{{`VeRH%_b!?##xQ5!i{&RYcXqwNGI;u5p|g={AgQJw>G)?#uz5 zH0=C$T}0#Q*3V!knh`_H_#jXL?_R!!M853D*bPR1iB18Y&tb1JCyQ8awy+Z3Bfi=b zW#%_y_dlBX0`AO!A7R)=;T6R8C#$Pqmu_>Es2w$k&AUXY8t%+^ha1?A|JsS8s+Kjd zD|>l?XgO)hOL&(~)F<Y?euVAs_M0f2;#Ld$R-Fu@yVv|Wc-Nf1lUS?Yh#mJ~dOh5k zO0!O5kK8RIhJ9M~3U(F&hl#xp`muA&<Qw45GzhtdEj0f<F~!pSHSFAeoFj5A;%S8U znkTwM``-_-6{CI<OP;&Dfqke$Dp4|SZWFxssBS0vI@e?CPZD?wcV@Fj5O(tG5~BJP z^=8;{rg#ve-}PeKdda?nJ9FsP73?DYw?s2v(-zoC%nBoB8BKf-?>?Wji2`$Sv6~)z zC%SxfYK6U8NHVeV(d;&OkFxxaC>LIXJt)W54tHj-%?WJN--X03CDjkG%Y1%-sQa%Q zn?Fvv1MbYkmzS`eonI5juNrm2u0kV(Xzlh7TXxE-F1R!Eb+WMo-+d*DPT&0zb{)48 ziC!OOb;G-k?-pXi-Ae2PBkoUdXQ~7o!yc1(NQ^L3?tz`v*L}o(=}zptN0Oi6&NTXQ z5nCj@j+p+$pci(YHi1Oms6W{CN-Ms=o$2V1iLLzaGqFt7t`BzMFXM^QlZ3y*d*4+P zqW|l1Y(qEBez-GRZydo+)wxg9^iuo=JMQUD#5nynY=;lx18`@Kh(uzS-mNBDeA4?4 zJE;JFV$OqK*nVcq2I0;W3Q5Oqk?tnCS?>4&JB=T)#2PulA$X5{vXQ9xyA*r)!Z<PX z`Jtb%H+Q&8?71X24DZ>h4n%$Dci4iHX8nRYGg%`X+x7KxBIlGfBe1Kw;Y+lA_XAtr zYsqi8GmCDeV29{;5G8!Kjl!;5<Ra0>i2o0~>wQ{JY?3I(PI@p(RQq~x4E7u$w~0}Y zWd6dtjioJd@a!AxLb(~^aA%s@gkp>TeoD+#()tHG@8{k`{(s-F8!stv4F2!VbbgtH zt?JxLthl;$0_-9+&J$(bcsb#HfKQJYs8fJ#{BD@oA?P|0_8GU*h&msnxZs`7*P57c z_Z7C2(X>f$XO5i+#x9pAC0d!S<c6KhS5IP|bRTxWqlG+hXNvqtz-~X=O!R!RnHP52 zHfM?T7q}+Fd%ThkQQ6@E_UQN^F<jM|5B8QXZxH*q=1hV2+^d#E!`Cmdh25s`!=0IW zBLLf7r-;bywR|e<Y6TAx9rSy!l|IZDfIG8P<T7^H-A1C+r%lsf*L&hL(eD9=AiNux zX%bsb-NR0i{zlZWbes-*t{>Nkv2tQU@NWOaoH#u40=wh_&kVRT&7b>WOFHBevo9?b zhMlkKexjgr7j`q3)J(WDT{U8`)nC^WtN08>U>AKOh$#PV414I1`YgCJLvG!{Hq-w? z>^^EQ3cD<k1frhNOfh&D_+&~<lBmFTc`#8N?o5uaKG>C~a)~yN7SD#AoaJ6(;n{ZV zU^xj1xHH9VE?{?!)DXRu^yk1%_xTB8<M;@6;w4o{xHDB>-ohT=`-vEN)n+d2tTp0@ z0|%x{!FxX6CZe%U8Mf%Vf5Z&I!}DP8bt{|5_hFGVyf+-(O?0~3f~{gCIv?)L@)PH< zBP3oBWz2MCVAtPwj2IyO6Wi#K@&dRs+XruAr=RU4YCo}(g&nU=G%^0d)P?ZwsI-AN zx~l}cZ2S+=Qq@Ba_R=piiMd>|i{Rb=svS}IbrW{$0bzN#Gu>~T!PeAyMyx%gtpK|? zK_8-${&(z=c11<FGs8rZu`TYl5qrBW7Q-&*L?qGR!DJ<P7cyH%OgUAE?It}!<gz@l z1okz9=|p=uX=Qj<e6oXBGSYw@dO>h0+?kTkPht1$dP4NQq@e;keN``F^WLx6$y|$; z!JVnDk%-Ot`W-QvZ;LAIY;S}UhngoXhxejGYlvpI@~|cJhlp86_o>0&N8~0^z({fh zyf<}kBf3b`VXHmhSBE>ZvhO5z)Tv^k+#|J>up9i(ofv%fGq$PR0u8t`yLQB5XO6rf z>MEJ6f*t?!P-5cv1WkB%zNAGQugSr#*gHV9zPd*X_Ocq+iTMY_wc$OG&w?nbQ;prx z%)1)yOfNxyY@J&L#D;bi9oQutbtS6Y{fIrbao!rZGb2vKVp~Zx5c@Z8)P-GMUog=~ zdK_Ei(aN=OXQmHkVSAqKBl14kr3btE9ao8t7ev;<yRwoQv253K?C^0eeYi8FReiDh zY90{%xt6Slo#9nyVr#<(?9>Bu4B*bxyb*=Xty4>kJG6cS>>LD75=YjJVwbirH-tOW zLgY5K)ZHFpPWR4@u=6`{nJDx?$OztBHX9S&PCdoeke;v!?#!D1ys={k?-3Q{6pUdv zT<S;+9eIy!enHFx?#!Nw2<+@#RYd(uYfWJ%sCt~3ymuJel}lwa+?kvjY1mZ_T|`?x zYctr%--sa=H4AKk_mD$|M2TCEvAfs(CHfroG>5&ONEWea<HD`*p44qmRFi1N=6EpE z0`APHzA$W?Qx(L)!qxx5uJFI3MANf_*y3_ZmT+fg?zn;NJ<?9(SF+p&yT*zOMCWln zD|lDEq))7<d4wIg_cu}Ys@rzh53I}}1|FDi4e!Q$JBb~u8?iH*r|*C}Q%CSLHs7r> zVnX{W8`wD=Jxm<S>c=kMD8Cc#Osf;uuw^9P6Z1Bk+rloO?;KG?n#T^_+Y5Dxo`Vmu zwa@+})|a~2!#;jTDpC2u++FZKx_CP=d{;fT<@i(wxHJ2f1!3pbln@QM)OW*9_^Jmn zwV@Z={eY|^+?m`ru3*=$eoJ&XWV#1-N`hg;(sdJ^;61Een<yoci`|>`o#@x?v={aU zCz6RRxwD<&J!SKMM2%B5*j&<l`{2%u{qF>}{a_(+c%iBb>`F=x5Y0!ru_Z4^?}s}x zyW$eI@2=NG!AnN2uxnlxLUi5x4_lpU)d9FOt5#-XM>l*W%Jc1ZgWXVaA~B?S)<JkT zJG6z^onDEZwT{~z?o7R-$FK!N9uku_Dto}rrF$QdL!uMAGFQ?Q?o6A$i`a6f>WGDf z28Uo5{9hnZ{Olj>u7xYS;Lh~kk%_H4@|oDU*zPdw5-Z|~s^c@f;e9;Tgcw;<j%~e{ z^9bCT0|`g4^H<&{8Xr*fft@Iy6ES0T8@5-o_))ks`2-`e8`7(ZPVIWWuv0nePb|;+ zg&nbR*)g~?Wlp4H_s{Mo25jEp2Roy_SYrD;!Q=3rUbvB{Jy?p(dv=@{UwX(N_KrL5 z5=SHDPQZKFVh5t-u6Nkd<01iYXXY*o$M&yzP88-^a}su~3BE-4h9B6P2bKiFomrcl zf*rTIgQ#?9TM+C<rd=e4t>X`dcZ>G*#NL_3*g09FM1$^wr(iF1;x;iQS0)7B-8S12 zxlX;ou9-LEG~Ai?|Ak^J4n8H8EYu2xU1+H{QF7!Pc2A_j8MrfjE0VDFceN6mW4DIE zE_vB`qWWImv+&NzrALfjS%7WZFiaep>>3XHqU1E9S+mqRc$YY2P0UJvh3&I$S_Isg z0!M?fn`V|0T{f;f4?DGPPh#clKJ2L6g^_S)%Jn5+4+b|Ag9|rbfSu`oXNg^5Tv70z zxlo6wyW;^i|HvRQak2A7*gIF;Addf)h=%uySWBXH%}Z?Ay;EY~&dg5;zz$qlL=-)+ zJQj8xlMfQTR`+1*G|#^TcV@%1%h(C&jYO69O>wXr^Epk7$l|yR?^YW%iT(cfu=8er zBN}aXjEB8Q-!)?TJh3bA?pbI~<Q;s0T_47i0C%QisUNoTj(lQS<kG9K3tzmSD7~u- zyYKJZM7T5km&ITk*3=VQCmLRZU1~xQQL|wToBM!z65N?_$#<|FR(~Omc-miwUFoz0 zqQ$zI$?z`KZc5CVS%K}BHSq@AnL^z@*e(9KM7P|<DX`Pnyq8!L+>RYPPvR!rnTr2i zz#jfyLkwN0p9(wk(i6m<UnAJrk*aBMXX;nn!WP{1iI^N~lMXxAWpPB#z0+^Od)35E zMB9~R*zyhkh((hRXTUxrIh!cayy!N(cYE$8`lPpD>#Y;bggdjz=Nxv@%ojwpjk<SW z$I*R^7&ZGRwoR^b7TlSGUv6R-26qxo3$5<LPW-=UVrJOXY<TxxxPi#OqXfJ0*B_$u zVvl>USFOk-R{UL%1MiWsc0}2lChP$x;rnoB1}2=rHeUIR*x{<33%iWTK17|>-?90c z6(7KznJ_IG+bO+`IM!y72fK2gNTOBN<cIJsvvD0U&%Y2mVD<=6Wb=W1*tdU4Cwk74 zE`WFK!X3o=?+w`TVS<HlXDXMT!XCALLJW`8cmzAk#a_fd`>)u!f8~nc&NN(>h%H?6 zj+i=eOEK)+6T*qy4U<aXz1DRN(IGhxTWR$WvD9<lW7vmHyGfK<Cs_*by=~iwelzQ^ z4YK&3z@6Fh@g#PNe=$)bSFH?oT$|mAvB96Q?dL6c3U}tPMLc%N_cuiIg(l^&lPnD- zX8)S-4BmYswTOZhIoQqi14P%@Jr%H5Uv`~X<s|+b-lHd45am}^V-LOJt%N%>WU@cD zS#klf`>o0g*kyUT67|wQVhgOBR|R)wl20tQ%ghEM$HtA-u&ewSOthIjjxCqFvIg$V z!Y^6a!NGk*@xom%Vb^7GmFOKNQVZ|83(bg)*3YpMe{t2povFIm7km8K17hS~rFz&| z$2t=Ssy|@oJI#3occyVd6t?KfT4ILl`Uco}O+HEFTRn>1@OJrYxHFxm-Nsf)?;)1A z?QDcygwJK7OqS3ac<(nfCI<LF#WtEfp$YEHc2jTc^e^{_+Vd3N!j8Alkr@B|J+@<* zSTo$2qmLu7%dD%2mXT}U!A^Sdabm9hFt-2Sr7du03NK5;ZmsSjx=*xz4?E3-7-H=! zfmV2rb2TI?B|pX<(f&&e^Ym<ky~VUFVz1u9c6iTevnLwNY{nMKn)w0l%#@E|*lzw6 zM6TS`9k8o0Jxa6>9>i9hr_>2|W{JfO?9lJ+M9GDgU9jtUe1Yiui|-@6>qqJno1Z<x zPPYF|RF8G*hCS!93}Up?{7>+1J8>s*NWBre=+*QdxHHWrpT?F*E+b~WUG*7uKAwk( z0_pwOO?vXZaA&&sT*FqI`JPy5X#NFuQ6J9{<!1Br!TaESU1IQ;huEgUKZ#uhE?;4v zX^~3Q4V&8!@B9n56BDiLv7LWS{RVgDxMC1?#j_Hk_1_f(u#=7TAm&&1Vh1|Oeuq0# zG~o(%hx%Khm#gU@>~toF5gW88{($#{x7tLNX}Q>AY2S$vZB9e5xAI9Q_TQQP6W;R- z|05dt*I<jx<{O4PGu`wAw&#~ZBJVuaU$Cn$I6!p#-i@ssCOraoX4&IQ*x}Z%iPDiq zzhT#>7((>7|A%e(S7Q|J%vP0b?9}S7M9qo2|G<trA(0sOYStLMJGgEkj$E(AF4gA# z3wNf4=P_)lX%C4xddlOl^K08j6q?zI-Ev3rAKaO4A1`8S_}39@?i+CY_}?zpG?1tm z{0DnjYQ+S&Gea#hvCY4KCickMal$V9aXeA~*NlnqE*NP-Onz35?P|}-1$QQA>=EoL zmHR|nC&fvylb`5BEK+a74tXWc4R@x*<Vfu9>(xY`w|YFV)ARHvHl_W-PSRV(3wNfP zPdYZo%x+?o;f~3$v-ucH926JigZIMw8;Pc0O0mU*$BCH*ho->Z+u|;fKTM7v-Wz2d zh|bpUuvLGFOocnMLNOdW^4W8u>|Y%L*bT(^5(BG$U>iFvnFe=e$CVW94D}A8j_Wo- z*zrxiNKDY?pAPR%Z`TvY1d6fC(?*F_Z3l&5FXMBYn0H5J2D}Ft+7d<l-(a_k&k%+? z)6+B*Tl>pXV!f2sOxVR2coUVsf5RR<qaXrzX87YIY)k7_V&D0#vtXC2c%Eoz&npV= z!hhEiQ&kGE-K&R*+!I~JU|)MBjp*=7N*vymT&;<v*I!|WX-}ICcczqQFm|s%DbY`F zr3CB@+B}IZ!hP5&cNWfpJ5%Fh0ydX_Gcor5W=YuDo1P^O2XW1X_Yx@`qPfKbY{~C~ z#B5n-DcJiyzCjfHB{2`)o6lPkU7x+gR=1xb4R>Z$OaOMYN)b`sY59EE4RIbMhN$;o zo4uMZ19xUO?`7<)>y1Rcx0@EgPQddtF)58h7T#U-G>IHO_pmF4zY%Q=9T&o0?&CFL zp}3eFya(SmCyIZ0f!!6vvk2}??*cz;U5k8T<C&%MuuGKPPgJ$;!X6)<s{nUqq+$%V z^|N~7z}N;w*yYCr5sj<IutlBJ7sH*IapexSm--hXpR2tR>>79zh)&uwm%zKqTT^1W zKm~S0+C*izGiBO*u=|hX5(DlmUJ5%S!@b1z<L%h#;u0!wXKI^Xz~=o@LyVWwUj{qJ zf)m8iff4MoGped^XIehKg)MFUiI{udW;yKq72}A)_S4niy>-lp=&n+Rty%q#Sj%~M z1?=OlWD}KMEmDW~k^Q@gVb@!*Ewn{f!kyXcaSl62;04h@PgetWLT$&0DZ)Ro-R>x_ zf;*Gz<4x?E<DEqN`&OE;Q#6exmIO`Jg7;9V4Ma(c66~IVKSW<y4{g}%Kh7jJ4=-2^ z@5$%wi0aRpusQ98b>Pm7jyZ#EtMZIEv`2dl?20&jh-T{Fu_az9>cX9w#hZ-nbG?ly z@YZ52?3z3xi7siA_26AiZymAnNFjEV@CZ@P@W49Q4|b&!gT<xw;obE94q{ht19oPR z;Ci?-bqh{m^IJS2CZ5qSfSt3f7jb<1SL}*mxeah<S}P`E%RYNY%pWr|gk4}vI8n5E z(nfgi*t3S{btMm5M}3Icuz#Ns>=Srz5>>P%H^KW@(>7v+KpnPK8ox2znf<LNvGa}; z6OHbunZQoO(4Clm{4=(v_ySY7GkHzpvFm%^5FMpVHp5Q2Ae2}(Fu@Go!_R0Dr61>D z_iY~_`k&vk1@?xD*NLrm;^y$4I<}RlsZx#2UCp}{?#wt&e{6><1;mkh6${vv?sp|x zT>pqIr9JOIxHEG+VzK=M8i+!A8!chi(i%*36CTIbxU+H_+?h39S=h11`-qD7cUi%1 z*yJiPG)QDSyqimz5qq{i$Ic$$vW7cTU)C2}@bLp;^03kl*two}CUQRefL&!b#|G|9 z+n6Y9d6imX(Vq1?VHd)Ak|?1*irrnm+!pRkAKu&8de?i1O-(!PV3*`^nW&Z~WDoBg zdd9@4BTunygeUBRJ9BV@H+EsyJ))_&f&=Wt?>iDRd*5Sw2Z`;5JCna40=sc*718<3 zT1VKa${r_HY#+vs9A3Hy?o3(5H0*)$E@I%=b|=^w$HWjjss#4Jd&V9^qRy4a*nH}L zi3$5Xoni09n?)ScTDTA1%bV<pRszk~GHEki;Lglz4Z{vNQb82CvwA=5+BX~}dLAFd z))rTCg*&s}<OX(pZ#z+0%JKm0M)NNa!w2}>;N9|!KC!Rl5q9qO-$cXnZU<p6te8Pe zwVUq_@9twZL~fNv?Aog79&l$maGu6ix>80gtzYE{yRiL-iBi}5v3s@T55b-3=Wz|& zK;S*GWv#gv>{43K5jBK)4#PXw9bIB<*F$Xk<3EYRIWFF?FEL3ang`820`HPi+lkp* z>#=<Yrux90DJUC+-CR;abRAxC6n5(8J&0B1z1Y!qvc7O<%Ew&69$NaA7_!Io80^eA z!-(B0Ci=m9R=qY+k2e=v;QDuBQj^nh*t>Wn6FJgm`@?(X+W&|)M{2O;g!xXuomsfy z1a@#&AyHghH2`*9IR}W|z1`TlLDDDT&TP!Tgq^tcHBt49Q6TKb7laTaxBtVo9@Yqg zJ99uG8#}-JE75q&AsBX|F^R;Cs#&Mt-D}SlBHxut?1mNGA#i6p?LUUC!uya|uBCh$ zb`eech%y45*!`)Jp>Ssgv|hwEI#Ne$&onp#yYvl#MD62$uzAH-gu$H|Z<2}a*!!6{ zI@j(j?8@@viIxL1!r@)|j0rKfq#WCSJLfsLGlkC|!ERN!Pjt6ajDVfy*dAi-(l+e4 zD)IAhXDV?<VvodE6T|BDB4KB--=El<^b0#jYuN?3GYve_v4sS>i79J$M8VFjHI~RF zEO-&#Yce+y?Yl~`6_1Y-OL7iH!#>pHE>SW_E(YFv<~k64x4y&H9}tO!JF|H~ICgT$ zbE5jN&L!A!p7$k2m;b=FwObMgcji!Z3U<-b4x-tfZI@vu!FiFGwSqq$-hJxV69ssS zv73@ci7rhCufSf-<2JD}RVD%6qt@CI<&M0;9-J}bD%_dD8$z*7yPgue#IzD&mzm>D z)b0I-%^#$24erdu{3LAWt*ylI(5*?Zt5|TJXuX~HI=sscuO;Ry6krFI4--Yl_9w%> zBRY-fRV8%;-gWj^6C2`RVJEDZmI8OC%Kl*NF`iOlgx1QNu(N9NB=%43!_G@xm<o5M zQELLW$dP7ZdgkUd*m-U^OXNMyl@9OqVmd@elLy$!y@SNExz4v>AD(}MC_NyN0q=dG zmPG%Om)M5er`(1+vo#_BJ5`~GsA;!66L#EVZp65yJ=hLa^Y6f&IWplgc4>Sg(V~7+ z7VM<<pC;xcaomM>KP^q7kjFjjmZ{%}ZfhO0VXx78jaV~7>>j+wW||WfyIx=q`|;$! zof(?rhiz_>PwWX?dLMS#bN3VVw{~F*4$RGkJ2QDf47O`YJ&|*G!vok=MFbIT%g3<g z?bP$&&Mb<)gB`N;3sGW^{X^JwPe>s8teBY(?|Sv7#3r5!?4+cL1#oAoHTht3c;phJ zQWqD(&Svdi;-GgscHs<(M{sAFZn%Ig-c>`)6w@z)op;U&B7g4)c4MGwG2EHX`M0oD zw|*j4gxZwAE^<K}QFi<E$M8Pz(})<TP=;+>{*T!4$Ey_f8PVB9ovKAo;GJ*JZel`w z3%1h=(K5I*$6U@~m-D<JT50J%g`G^(F=F1-pV$GZ%H?opinQLuZujmadS+TZgPrz< zXkxwJ)Czcy7u!HoHYvd#{rra*KG)+p>@D*%iGAM|RKk01s2$O;qzPMiyYLIRGgBkZ zV7n_kBXZkmSHZ6K&k>@-((l+xRf^ScXO>P##tw^bBTCg<)WELSC6efuH2EdG8)&T~ zwzwB!r%W9oYOFm_3wy5CbYkob={k6~&)h*A?rgv=@e{0vJJUSp6t<+v6JmCt#w*zQ z&h;V+ZvBeg{7tR_?o8JOiP-8T?}$}D&0fPUIwG7XUp}c3-iK`05JRH#u+5eZ5xX7t zy@7q!gquXY6_QQxE>ORXn8Z_u?UKa*7Vb=rrjyu}?!`o#RJCT<$*pxK7J7fi4xX{# z9o(7X8{)CMI^Phz#Y|dYr<)T>Z2UaoJ-jCdY7tfQbFjzF2Z)iOds<;{z2G`=z)HLg z-t&KMB^oPKV~dvaw!@v7@#i?US9Af9uS(?u>>3<hiB9n!u~k;g>wr76+$9z}f~SEf zqqVUUcKvUHi2+l`v5it!cEO$5{yqyk-Mf#dow@5H?07d^CC2-Sbi=!&m>F@@_&Ijj zXRc3hXIjqn#g@*0K+OH7)B`*JP-miW$p`FKt2v+H&UBB6!q!x%CDz)m?}c65p8%rL z(oyV@7t6oEof$UaHnv5453#pyXCLfxTrLw0l7zm(yO5SKF~$8Uw%gPR{cvY;t@XyP zd4G>+KSSXg>=ZK{i6x!yu|xgD2H?(=%!$D6F|H!|2Cn@MJN>!GiOuH2*va3P4#J(O zz90>ov!sg{{d4;d*x5$J5Qm-$48ePmts&7Y`Z2b|(!azkN6(+I_nDAI6j-rv7~Y%e z?1?Ts&Dd&5Gk?LIS@|XmJIcL+D3`i=1a^bEM~T7SgV?4slzzjV*=2A8JF~N$s4HeU z3OoLs3&h0Fe1G8GIZ&TC{_qiYh52uyb*S4I>}3~Z5c93(|AqI!pEg8Mg+}a-r_;yb z&h+{df~^x>Mr?So>L2V991jy!;`_13)Z{sa{�axLm`w;(1T(*EF91ySz8&h(=R+ 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≤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 CJ^VfZ literal 0 HcmV?d00001 diff --git a/data/Scenario.h5 b/data/Scenario.h5 new file mode 100644 index 0000000000000000000000000000000000000000..5ae7586ff9d88b4f6043167b5a9e858f5ed5c4fb GIT binary patch literal 7152 zcmeI04{Vb~6u_?=e+mrO!G?fQ3yN%_O}F46MAvSxKM1bPHW;wQwQgn9b!}-okq~1E zI0qVN(4Y~78dOkFDomU>wd&CEXHXPSkUs?kM5C4%gL9Jk-re{3nzA7pV<2!zzu$Lv z@7}xb`tI)CEh?Ch*T3)3z6_I6$$Bsqf2BvKlp?o?63SD(NqSL8Y>>DvPP`~sFNSr4 zrE-;|UmY(B!cuujQEn~+NzzZ0s#&m?cvDir4PI9xP>`E##1Eb(eKmP$tK?@i7*#XH z8~I}aRs2gPN&Xt^*9lC`HKKpxtSOmTG8r704TO%NZRi&7SprLql2fwrle3G9CApqJ z>SunDVG4erEUyH;N;WmOsCc5Gkn6=ML-OewE#y#sET;ly7|I)`mt^Nm&MmIUGZa0P zT~g6q`wUIG)GmqZjGdpb6!7%DWbp6iC+jEVNsq|gcwR3f5IaAGS28wBTDNH&%#T~$ z=($Mrz(;J3${KCOV`f{O#VzNp9!o7|FZ#P0GhL+OLc;_FNJ;L>U@G!N^CVTu7sT|V z3su*35$(%kQ^YXfT7>E9S?9!hr+^;eI_EUotIX~S&s?X4_Y>FM==F4_%Up{!35?n$ zMz?#+;&NLZcClWgYmmQaHR<<hGNRk{;q5H;N=KE|Ud@fcBi7!OlDvD-=jHXgw`k{b zIb7h$C?9Rd?QvNvJ<)c0@-MSjS!>aT3LIMav>vk;`$yZI{9QM3JA7WjG;&!jp1B~8 z_IgLPb6KkEY-SheNff%I52pXUAQ`PN77@7kj0f!~IuL%Sucwrci;LqLlu~3DuP8_m zjZjKX1EjA&;qs<(vphbyZ+5>QW)~G@Plq<LJW6-JA7*GqbE8-4uhc`ae)Is%B1QU8 zP1l5B<*7lMCtXW1Y1fCicW8GKqMY{2RC>9*_*Gl$aX4q%9CMiW*KrTL`rsfIY5u7d zX{z^^yao&zio;0#kY2Xefq@fE=aK3SH4D}PeRa1bt^+dN-j|S0<-)t(0EYKwZbBMY zoPFR;V6bZCcBEEgn6e(|Kd(5BRDIHD+W_<~uKpbvDIU7;EuiVvw#2uAq0>*UK<Wb- zBR2vAb5CtTs>i>W6#)7YChb770~e;e19Ywq97l#{Rn~3-8Z!p9BZD2S3pWF`+vcen zf&L|$l}OdJ<0Ib%dWSu~85#K@PqzhVYHZ(u3_Y=7>U%(ae#Hr7KsCVL1XLetX-E3j z%z5g4AgjGQX)Dl~d1NIr+_^OM1E6txP9rk7>^EIAP+PukC(=Kntn@>m>X-f}k=~}D z{UcyxzWWcPY0_Qw9|J?l2a|$8{n2M$Mh4bqrF{Za&py|P^o@H}|0$65DBXp0w)L6z z88E!O`6SY4ayVLm!L;EWNbRrt>bC*?%})>b9H^=vw+iVs{FL?uFf!QxF4A<OD7zIH zTHmt`sjq9AwjCJAs`(D7R^H~^0rc$+bs*V_1yAn;I;%1V?gEDIJ-Z5NJip@ZHefJV zxCN<QtjO67^cOd_Ayv0lPu~Odo*r@v8QHkY83LN-KKUmyl#|i07pPA-HSkMdVE+rN zk?PeCj`|Adn{{Cel4S&P_5qz8kL*T<TT*812O5{Oo<aso=gmF<)DF{JK>B|OH+&6L zH9nX84bb~Uo*x;>YaewGXi{x>4;ec6@c2VO{hFjb$bhY7#<xIq=A6?=UuT-@FpzCO zd;#fPwsg@EV7M$N<tWfN;x|7s`19I(jsdkzGn$b8`TZw^fvQQtJxFh|yX-hHa%99A z;4tkNbFeyJx8~Uo#xDZa?0NCgT~YZ1zWt?*QTa#j|1tF(<mZ{{%eMk2mfH%J0!fZY z^{=$|k9#|+p5)0c$&-Dmr}k7%a<L@&*m7zgTfVLHjOFvF{*WAz^iiJL$M%=XNgv76 z_{7RnJ(Uyb`^rk)CoFg7>oP`Vbu90KCtn+^Dpcp|4vq=z9DYZ>ZvF7v(+3R7*KIxO z9qT-|IqRxj_iuFUAB_NQlmDpEwIGc55114R5m<_+9Jk7GoQR9_CTCAI6kQre+v{qb z7{AK*8vS@&>~WdxZl}X-sp4iBhO5Gch}^ojhY_oi)mZJkWmj=HM)h+4guGoGA9&o0 zF*oTi)Cl_&H-B@p$QuPfkCwkFm>id<Ur}6s6Stw40{qzVbV>S&@o+DNeTqFNbRVA^ zr1;z?-Mk8gS8IGO{~!OCztI17slVXmIQ{=sW{<^Vt+ix|<3{&>0|y1XdWdd^BQE=g zILCrpS{|>cw3*%fx`UtF(4(W<p*?v#ME_>GEVEG`p35%hpTQw0CEuIM_La~VCA0Gj z822T9MD}I&<$Y?93KVp&DUN}R{F3Bj^YO4gU|o`0C!MwQY;-?1x>NGT?)~;yBL4t( z!*6jMXncuuKOK9|C9j_;eEpN|+4#L$)N*v0dx8XRt5q@-yB?8!;+5YMIM8JwT^siV V^1S=M)}d5BItqT%^55@Ue*w4SVY>hT literal 0 HcmV?d00001 diff --git a/data/TrainingData.h5 b/data/TrainingData.h5 new file mode 100644 index 0000000000000000000000000000000000000000..7bde2a1c7c4f4d450f386568c94b3ad92fcd3eef GIT binary patch literal 17864 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 literal 0 HcmV?d00001 diff --git a/data/TrainingTarget.h5 b/data/TrainingTarget.h5 new file mode 100644 index 0000000000000000000000000000000000000000..13e1e8f17af2f0806e1a1ca28dc53579a8066356 GIT binary patch literal 1078792 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 zp`8rfWauG7ybOb6cuR&!GR%}=mJG9HSSrKEGOUqdoeUdg_(FyqGJGvVh71Q~_*RDF zGMtp*lnke3I4{FB8E(t)iwyT=_)UgKGW;cjo1X~oGI+?~EkiyT3dm4IhGH_5l;K$! zo|B=143%W4EJHOJf@P>JLme3+WQdd@N``0|T8a=a#{S?ZCgAqIPrT#>0tg_000Iag zfWW^|Aou4D>+660+`#qukpHpIW7f}i{_gWc-PL~T{P^dI$|autJm;zZ@5tQz)>{id zaissA=Q*C@o%(qHZ~uQsT+fOAt3KB_$aK-48~mUBIoMC2^8x_`5J2F6oPfN~@AHzi z+j=hiA9oP!Faii5fB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} z0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*sr zAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_0 z00IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@ z2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000Iag zfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s} y0tg_000IagfB*srAb<b@2q1s}0tg_000IagfB*srAb<b@2q1s}0toy+75EqE8&XsN literal 0 HcmV?d00001 diff --git a/data/seismic_data_full_located.h5 b/data/seismic_data_full_located.h5 new file mode 100644 index 0000000000000000000000000000000000000000..650ad34c6cd55146b1718f0413dd181ce6a40c7b GIT binary patch literal 1179552 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N Q0t5&UAV7e?|Czvl0l>KrIsgCw literal 0 HcmV?d00001 diff --git a/hm1d/FlowModel.py b/hm1d/FlowModel.py new file mode 100644 index 0000000..b48817f --- /dev/null +++ b/hm1d/FlowModel.py @@ -0,0 +1,960 @@ +""" +Flow Models for the HM0/1 classes +by V. Clasen, A. P. Rinaldi, F. Ciardo (2024) +""" + +import numpy as np +from scipy.special import expi +from scipy.special import erfc +from scipy.optimize import differential_evolution +from numba import njit + +######################################################################################################################## +########################################## ANALYTICAL FLOW MODEL ####################################################### +######################################################################################################################## + +def Analytical_LineSource_Solution(InjectionStrategy, t_grid, r_grid, h, nu, S, k): + """ + Args: + InjectionStrategy (2xNt array): doublets of each consecutive step: + duration of step and injection rate + (only Neumann's b.c. at the well) + t_grid (Numpy vector): consecutive time moments + r_grid (Numpy vector): radii + nu (scalar) : viscosity [Pa s] + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the analytical solution stimulation factor (Numpy vector) for the + input time moments and radii + """ + Nt_end = len(t_grid) + sol = np.zeros([Nt_end, len(r_grid)]) + Qsteps = np.array(InjectionStrategy[:, 1]) + Qsteps[1:] = np.diff(Qsteps) + TimeSteps = np.array(InjectionStrategy[:, 0]) + NumOfSteps = len(Qsteps) + + for step in range(NumOfSteps): + JJ = np.where(t_grid > TimeSteps[step]) + sol[JJ, :] = np.add(sol[JJ, :], + # StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + # Diff)) + StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + h, nu, S, k)) + return sol + +def Analytical_PointSource_Solution(InjectionStrategy, t_grid, r_grid, A, nu, S, k): + """ + Args: + InjectionStrategy (2xNt array): doublets of each consecutive step: + duration of step and injection rate + (only Neumann's b.c. at the well) + t_grid (Numpy vector): consecutive time moments + r_grid (Numpy vector): radii + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the analytical solution stimulation factor (Numpy vector) for the + input time moments and radii + """ + Nt_end = len(t_grid) + sol = np.zeros([Nt_end, len(r_grid)]) + Qsteps = np.array(InjectionStrategy[:, 1]) + Qsteps[1:] = np.diff(Qsteps) + TimeSteps = np.array(InjectionStrategy[:, 0]) + NumOfSteps = len(Qsteps) + + for step in range(NumOfSteps): + JJ = np.where(t_grid > TimeSteps[step]) + sol[JJ, :] = np.add(sol[JJ, :], + # StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + # Diff)) + StepInjection_Green_Function_pointsource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + A, nu, S, k)) + return sol + +def StepInjection_Green_Function_linesource(r, t, Q, h, nu, S, k): + # def StepInjection_Green_Function_linesource(r, t, Q, Diff, val): + """ + Args: + r (Numpy vector): radius of point(s) in meters + t (Numpy vector): time moment(s) in seconds + Q (scalar) : source term [m^3/(s)] + nu (scalar) : viscosity [Pa s] + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the 1D analytical solution (Numpy vector) for continuous line source type of injection + REF: Wu and Pruess, 2000, IJRMMS, 37, 51-61 -> Theis solution + similar with Diff REF: pag. 261, Eq. (2) - book: “Conduction of Heat in Solids†di Carslaw and Jaeger + """ + + X = expi(-np.matmul(np.reciprocal(t.reshape((-1, 1))), np.square(r.reshape((1, -1)))) * nu * S / k / 4.) + + return (-Q * nu/ (4. * np.pi * k * h) ) * X + +def StepInjection_Green_Function_pointsource(r, t, Q, A, nu, S, k): + # def StepInjection_Green_Function_linesource(r, t, Q, Diff, val): + """ + Args: + r (Numpy vector): radius of point(s) in meters + t (Numpy vector): time moment(s) in seconds + Q (scalar) : source term [m^3/(s)] + nu (scalar) : viscosity [Pa s] + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the 1D analytical solution (Numpy vector) for continuous point source type of injection + REF: Wu and Pruess, 2000, IJRMMS, 37, 51-61 -> Theis solution + """ + + xi = np.matmul(np.reciprocal(np.sqrt(t.reshape((-1, 1)))), r.reshape((1, -1))) / (np.sqrt(4. * k / S / mu)) + + X = 1./(np.sqrt(np.pi) * xi)*np.exp(-xi**2) - erfc(xi) + + return (Q * nu * r.reshape((1, -1)) / (k * A)) * X + +class FlowModel0: + """ + POINT SOURCE MODEL + + Initialization with radius, numpy array with time and flow, as well as + crossectional area, model parameters initial guess, and their bounds when used for fitting + Model parameters are the storage coefficient (namely porosity times compressibility) + and the intrinsic rock permeability + + Simple usage for forward simulation: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + time_out = np.linspace(0, 1e8, 2000) # time vector for output, this can be different than time_Q as long as is larger + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + QQ = np.vstack((time_Q.T,Q.T)) + S = 1.e-9 # storage + k = 1.e-14 # permeability + h = 100 #layer thickness + rw = 0.15 #radius well + A = 2 * np.pi * h * rw # cross sectional area + Model = FlowModel1(radius,A,QQ,iniguess=(S, k)) + Pressure = Model.predict() # numpy vector of pressure solution at time and radius + + Simple usage for inversion: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + TrainingTarget = 2xN array with the time moment and the pressure in Pa + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + TrainingData = np.vstack((time_Q.T,Q.T)) + h = 100 #layer thickness + rw = 0.15 #radius well + A = 2 * np.pi * h * rw # cross sectional area + Model = FlowModel1(radius,A,TrainingData,bounds=[(1e-15 1e-5), (1e-20, 1e-12)],iniguess=(1e-9, 1e-14)) + Model.fit(TrainingTarget) # numpy vector of pressure solution at time and radius + Pressure = Model.predict() + + For forecasting future pressure after fitting an injection Plan is needed + Q2 = Q*2 + time2 = np.linspace(0, 1e8, 2000) +time[-1] + Plan = np.vstack((time2.T,Q2.T) + Prediction = Model.predict(Plan) + """ + + def __init__(self, + Q, # TrainingData for fitting + r_grid=np.geomspace(0.1, 2000, 30, endpoint=True), + A=90, + nu=1.e-3, + bounds=[(1e-15, 1e-5), (1e-20, 1e-12)], + iniguess=(1e-9, 1e-14)): + self.r = r_grid + self.A = A + self.nu = nu + self.Q = Q + # self.bounds = np.log10(bounds) + self.bounds = bounds + self.params = iniguess + self.model = Analytical_PointSource_Solution + + def Cost(self, x): + S = np.power(10., x[0]) + k = np.power(10., x[1]) + _prediction = self.model(self.Q, self.t_target, self.r_target, self.A, self.nu, S, k) + self.observation[0] + # _prediction = self.model(self.Q, self.t_target, self.r_target, self.A, S, k) + Coeff_R2 = np.sum(np.square(_prediction / 1.e6 - self.observation / 1.e6)) / len(self.observation) + + return Coeff_R2 + + def fit(self, TrainingTarget, + popsize=10, + polish=True, + disp=True, + maxiter=100, + seed=22, + tol=1e-5): + """ + Args: + TrainingData (Numpy array) : 2xN array with the time moment and the injection rate until next measurement + TrainingTarget(Numpy array): 2xM array with the time moment and pressure measurement + Returns: + + """ + self.t_target = TrainingTarget[:, 0] + self.observation = TrainingTarget[:, 1:] + self.r_target = self.r[:len(self.observation[0, :])] + + self.iter_results = [] + result = differential_evolution(self.Cost, self.bounds, popsize=popsize, polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol, callback=self.fm_iteration) + self.params = np.power(10., result.x[0]), \ + np.power(10., result.x[1]) + + self.hidden_mechanism = self.predict() + + def fm_iteration(self, xk, convergence): + self.iter_results.append(xk) + + def predict(self, Plan=[], ): + """ + Args: + Plan (Numpy array) : 2xNf array with the time moment and the injection rate expected from that moment. + Returns: + (Numpy array) : 2x(Nf+N) array with the time moment and the pressure due to the plan and the training data + """ + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + t_grid = Plan[:, 0] + + Prediction = self.model(Q, t_grid, self.r, self.A, self.nu, self.params[0], self.params[1]) + self.observation[0] + return Prediction + +class FlowModel1: + """ + LINE SOURCE MODEL (Theis' solution) + + Initialization with radius, numpy array with time and flow, as well as + reservoir thickness, model parameters initial guess, and their bounds when used for fitting + Model parameters are the storage coefficient (namely porosity times compressibility) + and the intrinsic rock permeability + + Simple usage for forward simulation: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + time_out = np.linspace(0, 1e8, 2000) # time vector for output, this can be different than time_Q as long as is larger + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + QQ = np.vstack((time_Q.T,Q.T)) + S = 1.e-9 # storage + nu = 1.e-3 # viscosity + k = 1.e-14 # permeability + h = 100 #layer thickness + Model = FlowModel1(radius,h,QQ,iniguess=(S, k)) + Pressure = Model.predict() # numpy vector of pressure solution at time and radius + + Simple usage for inversion: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + TrainingTarget = 2xN array with the time moment and the pressure in Pa + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + TrainingData = np.vstack((time_Q.T,Q.T)) + h = 100 #layer thickness + Model = FlowModel1(radius,h,TrainingData,bounds=[(1e-15 1e-5), (1e-20, 1e-12)],iniguess=(1e-9, 1e-14)) + Model.fit(TrainingTarget) # numpy vector of pressure solution at time and radius + Pressure = Model.predict() + + For forecasting future pressure after fitting an injection Plan is needed + Q2 = Q*2 + time2 = np.linspace(0, 1e8, 2000) +time[-1] + Plan = np.vstack((time2.T,Q2.T) + Prediction = Model.predict(Plan) + """ + + def __init__(self, + Q, + r_grid=np.geomspace(0.1, 2000, 30, endpoint=True), + h=100, + nu=1.e-3, + bounds=[(1e-15, 1e-5), (1e-20, 1e-12)], + iniguess=(1e-9, 1e-14)): + self.r = r_grid + self.h = h + self.nu = nu + self.Q = Q + + #self.bounds = np.log10(bounds) + self.bounds = bounds + self.params = iniguess + self.model = Analytical_LineSource_Solution + # for callback + self.best_x = None + self.minf = np.inf + + def save_iteration_step(self, x, convergence): + """ + function to save history of parameters and residual during DEA + """ + # check if equal + np.testing.assert_equal(x, self.best_x) + self.dea_vals.append([np.power(10., x[0]), + np.power(10., x[1])]) + self.dea_func.append(self.minf) + return + + def Cost(self, x): + S = np.power(10., x[0]) + k = np.power(10., x[1]) + _prediction = self.model(self.Q, self.t_target, self.r_target, self.h, self.nu, S, k)+self.observation[0] + #_prediction = self.model(self.Q, self.t_target, self.r_target, self.h, S, k) + Coeff_R2 = np.sum(np.square(_prediction / 1.e6 - self.observation / 1.e6)) / len(self.observation) + + if Coeff_R2 < self.minf: + self.minf = Coeff_R2 + self.best_x = x + + return Coeff_R2 + + def fit(self, TrainingTarget, + popsize=10, + polish=True, + disp=True, + maxiter=100, + seed=22, + tol=1e-5): + """ + Args: + TrainingData (Numpy array) : 2xN array with the time moment and the injection rate until next measurement + TrainingTarget(Numpy array): 2xM array with the time moment and pressure measurement + Returns: + + """ + self.t_target = TrainingTarget[:, 0] + self.observation = TrainingTarget[:, 1:] # gets rid of the column in index nr. 1 (so the second column) + self.r_target = self.r[:len(self.observation[0, :])] + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + result = differential_evolution(self.Cost, self.bounds, popsize=popsize, polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol, callback=self.save_iteration_step) + self.params = np.power(10., result.x[0]), \ + np.power(10., result.x[1]) + + self.hidden_mechanism = self.predict() + + def predict(self, Plan=[], ): + """ + Args: + Plan (Numpy array) : 2xNf array with the time moment and the injection rate expected from that moment. + Returns: + (Numpy array) : 2x(Nf+N) array with the time moment and the pressure due to the plan and the training data + """ + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + t_grid = Plan[:, 0] + Prediction = self.model(Q, t_grid, self.r, self.h, self.nu, self.params[0], self.params[1]) + self.observation[0] + return Prediction + +######################################################################################################################## +##################################### NUMERICAL FLOW MODEL ############################################################# +######################################################################################################################## +""" +Solving the RADIAL diffusion equation using the implicit finite difference (FD) approach with backward difference in +time and second order central difference in space. +""" + +def create_con_matrix(n_el): + """ + builds up the connectivity matrix + """ + con_mat = np.zeros((n_el, 2)) + for m in range(n_el): + con_mat[m, 0] = m + con_mat[m, 1] = m + 1 + return con_mat + +def times_step_func(i, t): + """ + creates the time steps in case the time stepping is not the same + """ + return t[i+1] - t[i] + +def create_radius(r, dr): + """ + creates the radius taking the radial position and half the distance to the next radial position + """ + return r + 0.5 * dr + +def tridiag(nx, diag, diag_above, diag_below): + L = np.zeros((nx, nx)) + for k in range(nx-1): + L[k, k] = diag[k] + L[k, k+1] = diag_above[k] + L[k+1, k] = diag_below[k] + L[nx-1, nx-1] = diag[nx-1] + return L + +def Nonuniform_Tridiag(nr, con_mat, D, dt, dr_array, r): + """ + -> solves for the matrix entries for the 1D linear pressure diffusion solution + """ + L = np.zeros((nr, nr)) + V = np.zeros((nr, nr)) + for n in range(nr): + elements = np.where(con_mat==n)[0] + nod_rep = [] + el = [] + for e in elements: + el.append(int(e)) + nodes = con_mat[e,:] + for l in nodes: + if not l == n: + idx = np.where(nodes==l) + nod_rep.append(int(nodes[idx])) + if len(el) == 1: + el.append(int(el[0])) + nod = sorted(list(set(nod_rep))) + beta_md = (2 * D[n] * dt) / (dr_array[el[0]] * dr_array[el[1]]) + L[n, n] = beta_md + gamma_md = 0 + V[n, n] = gamma_md + if len(nod) > 1: + beta_ld = (2 * D[nod[0]] * dt) / (dr_array[el[0]] * (dr_array[el[0]] + dr_array[el[1]])) + L[n, nod[0]] = - beta_ld + gamma_ld = (D[nod[0]] * dt) / (r[n] * (dr_array[el[0]] + dr_array[el[1]])) + V[n, nod[0]] = gamma_ld + beta_ud = (2 * D[nod[-1]] * dt) / (dr_array[el[1]] * (dr_array[el[0]] + dr_array[el[1]])) + L[n, nod[-1]] = - beta_ud + gamma_ud = (D[nod[-1]] * dt) / (r[n] * (dr_array[el[0]] + dr_array[el[1]])) + V[n, nod[-1]] = - gamma_ud + else: + beta_l_u_d = (2 * D[nod[0]] * dt) / (dr_array[el[0]]**2) + L[n, nod[0]] = - beta_l_u_d + del el, nod_rep + V[-2, -1] = 0 + V[-1, -2] = 0 + V[-1, -1] = 0 + I = np.identity(nr) + return I + L + V + +def Numerical_Functions_Kf_change(sigma_n, pn, K_n, ap_0, ap_res, fr_s, dt, S, nu, dr_array, nr, q_f, con_mat, r): + """ + -> solves for the pressure solution for one timestep for the radial problem including changes in permeability + """ + q_inj = np.zeros(nr) + sigma_n_eff = sigma_n - pn + enc_rev = sigma_n_eff/(K_n + sigma_n_eff/(ap_0 - ap_res)) + wh = ap_0 - enc_rev + kf = (wh**3)/(12*fr_s) + kf_max = (ap_0**3)/(12 * fr_s) + if np.any(sigma_n_eff < 0.): + idx = np.where(sigma_n_eff < 0.) + kf[idx] = kf_max + q_inj[0] = q_f / (wh[0] * np.min(r)**2 * np.pi * S) + b = q_inj * dt + pn + D = kf / (S * nu) + L = Nonuniform_Tridiag(nr, con_mat, D, dt, dr_array, r) + pres = np.linalg.solve(L, b) + return pres + +def Numerical_RadialSolution_Kf_invariable(S, kf, q_f, dt, nu, dr_array, nr, n_el, h, r, nt): + """ + -> final pressure solution for all timesteps for radial problem excluding changes in permeability + """ + q_inj = np.zeros(nr) + p0 = np.zeros(nr) + p_num = np.zeros((nt,nr)) + kf = np.full_like(q_inj, kf) + pn = p0 + con_mat = create_con_matrix(n_el) + for i in range(nt): + q_inj[0] = q_f[i] / (h * np.min(r)**2 * np.pi * S) + b = q_inj * dt + pn + D = kf / (S * nu) + L = Nonuniform_Tridiag(nr, con_mat, D, dt, dr_array, r) + p_num_step = np.linalg.solve(L, b) + p_num[i] = p_num_step + pn = p_num_step + return p_num + +def Numerical_RadialSolution_Kf_variable(ap_0, ap_res, K_n, S, sigma_n, fr_s, dt, nu, dr_array, nr, n_el, q_f, r, nt): + """ + -> final pressure solution for all timesteps for radial problem including changes in permeability + """ + p0 = np.zeros(nr) + p_num = np.zeros((nt, nr)) + pn = p0 + con_mat = create_con_matrix(n_el) + for i in range(nt): + p_num_step = Numerical_Functions_Kf_change(sigma_n, pn, K_n, ap_0, ap_res, fr_s, dt, S, nu, dr_array, + nr, q_f[i], con_mat, r) + p_num[i] = p_num_step + pn = p_num_step + return p_num + +class FlowModel2: + """ + ADD DESCRIPTION: same as FlowModel3, but without permeability changes (read below) + """ + def __init__(self, + Q, + r_grid, + h, + params_fix, + bounds=[(1e-15, 1e-5), (1e-20, 1e-12)], + iniguess=(1e-9, 1e-14)): + self.r = r_grid + self.h = h + self.params_fix = params_fix + self.Q = Q + + #self.bounds = np.log10(bounds) + self.bounds = bounds + self.params = (params_fix['storage'], + params_fix['permeability']) + self.model = Numerical_RadialSolution_Kf_invariable + + def translate_training(self, TrainingData, TrainingTarget, params_fix): + + self.observation = TrainingTarget[:, 1] + self.Q = TrainingData[:, :2] + + Q = TrainingData[:, 1] + t_grid = TrainingData[:, 0] + self.t_grid = t_grid + dt = abs(t_grid[0] - t_grid[1]) + nt = len(t_grid) + r_grid = self.r # node positions (radial) + dr_array = np.diff(r_grid) # spacing between nodes + nr = len(r_grid) # number of nodes + n_el = len(dr_array) # number of elements + + nu = np.power(10., params_fix['viscosity']) + + self.args = (Q, dt, nu, dr_array, nr, n_el, self.h, r_grid, nt) + + return + + def Cost(self, x, porosity, Q, dt, nu, dr_array, nr, n_el, h, r, nt): + S = np.power(10., x[0]) + kf = np.power(10., x[1]) + p_num = self.model(S, kf, porosity, Q, dt, nu, dr_array, nr, n_el, h, r, nt) + p_pred = p_num[:,0] + self.observation[0] + Coeff = np.sum(np.square(p_pred/1.e6 - self.observation/1.e6))/len(self.observation) + + return Coeff + + def fit(self, TrainingData, TrainingTarget): + + self.translate_training(TrainingData, TrainingTarget, self.params_fix) + + self.result = differential_evolution(func=self.Cost, bounds=self.bounds, args=self.args, + maxiter=100, popsize=10, polish=True, disp=True) + self.params = np.power(10., self.result.x[0]), \ + np.power(10., self.result.x[1]) + + self.hidden_mechanism = self.predict() + + def predict(self, Plan=[],): + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + #Q = Plan[:,1] + t_grid = Q[:,0] + self.args = list(self.args) + self.args[1] = Q[:,1] + self.args[2] = abs(t_grid[0] - t_grid[1]) + self.args[-1] = len(t_grid) + #r_grid = self.r + pres_num = self.model(self.params[0], self.params[1], self.args[0], self.args[1], self.args[2], self.args[3], + self.args[4], self.args[5], self.args[6], self.args[7], self.args[8], self.args[9]) + if len(self.Q) < len(pres_num): + Prediction = pres_num[len(self.Q):,:] + self.observation[0] + else: + Prediction = pres_num + self.observation[0] + return Prediction + +class FlowModel3: + """ + ADD DESCRIPTION + """ + + def __init__(self, + Q, + r_grid, + h, + params_fix, + bounds=[(1e-5, 1e-2), (1e-9, 1e-5), (8, 14), (-11, -7)], + iniguess=(1e-4, 1e-8, 1e11, 1e-8)): + self.r = r_grid + self.h = h + self.params_fix = params_fix + self.Q = Q + + #self.bounds = np.log10(bounds) + self.bounds = bounds + self.params = (params_fix['zero_stress_aperture'], + params_fix['residual_aperture'], + params_fix['frac_normal_stiffness'], + params_fix['storage']) + self.model = Numerical_RadialSolution_Kf_variable + + def translate_training(self, TrainingData, TrainingTarget, params_fix): + + self.observation = TrainingTarget[:, 1] + self.Q = TrainingData[:, :2] + + Q = TrainingData[:, 1] + t_grid = TrainingData[:, 0] + self.t_grid = t_grid + dt = abs(t_grid[0] - t_grid[1]) + nt = len(t_grid) + r_grid = self.r # node positions (radial) + dr_array = np.diff(r_grid) # spacing between nodes + nr = len(r_grid) # number of nodes + n_el = len(dr_array) # number of elements + + sigma_n = params_fix['fix_normal_stress'] * (1e6) + fr_s = np.power(10., params_fix['frac_spacing']) + nu = np.power(10., params_fix['viscosity']) + + self.args = (sigma_n, fr_s, dt, nu, dr_array, nr, n_el, Q, r_grid, nt) + + return + + def Cost(self, x, porosity, sigma_n, fr_s, dt, nu, dr_array, nr, n_el, Q, r_grid, nt): + # parameters to be calibrated + ap_0 = np.power(10., x[0]) # aperture at zero stress + ap_res = np.power(10., x[1]) # residual aperture + K_n = np.power(10., x[2]) # fracture normal stiffness + S = np.power(10., x[3]) # storage + p_num = self.model(ap_0, ap_res, K_n, S, porosity, sigma_n, fr_s, dt, nu, dr_array, nr, n_el, Q, r_grid, nt) + p_pred = p_num[:,0] + self.observation[0] + Coeff_R2 = np.sum(np.square(p_pred/1.e6 - self.observation/1.e6))/len(self.observation) + + return Coeff_R2 + + def fit(self, TrainingData, TrainingTarget, + popsize=10, + polish=True, + disp=True, + maxiter=100, + seed=22, + tol=1e-5): + + self.translate_training(TrainingData, TrainingTarget, self.params_fix) + + self.result = differential_evolution(self.Cost, self.bounds, args=self.args, popsize=popsize, polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol) + self.params = np.power(10., self.result.x[0]), \ + np.power(10., self.result.x[1]), \ + np.power(10., self.result.x[2]), \ + np.power(10., self.result.x[3]) + + self.hidden_mechanism = self.predict() + + def predict(self, Plan=[],): + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + #Q = Plan[:,1] + t_grid = Q[:,0] + self.args = list(self.args) + self.args[-3] = Q[:,1] + self.args[3] = abs(t_grid[0] - t_grid[1]) + self.args[-1] = len(t_grid) + #r_grid = self.r + pres_num = self.model(self.params[0], self.params[1], self.params[2], self.params[3], self.args[0], self.args[1], + self.args[2], self.args[3], self.args[4], self.args[5], self.args[6], self.args[7], + self.args[8], self.args[9], self.args[10]) + if len(self.Q) < len(pres_num): + Prediction = pres_num[len(self.Q):,:] + self.observation[0] + else: + Prediction = pres_num + self.observation[0] + return Prediction + +""" +Solving the RADIAL diffusion equation using the implicit finite volume (FV) approach. +""" + +@njit(nopython=True) # activate NUMBA +def flow_model_nonlinear(params, Rw, Np, nu, h, q_f, S, t, dr, x): + # Here we unpack the parameters + sigma_n = params[0] # fixed normal stress + K_n = params[1] # fracture normal stiffness + a_el_max = params[2] # maximum or zero-stress fracture aperture + a_res = params[3] # residual fracture aperture + fr_s = params[4] # fracture spacing + a_shear_f = params[5] # constant shearing aperture factor + a_shear_max = params[6] # maximum shearing aperture + p_t = params[7] # threshold pressure + alpha = params[8] # scaling factor for shearing aperture magnitude + w = params[9] # weighting parameter for numerical stability + # setting up empty matrix diagonals and the variables to store + lwd = np.zeros(Np, dtype=float) + md = np.zeros(Np+1, dtype=float) + upd = np.zeros(Np, dtype=float) + b = np.zeros(Np+1, dtype=float) + pres_step = np.zeros(Np+1, dtype=float) + kf_var = np.zeros((len(t), Np+1), dtype=float) + a_vals_1 = np.zeros((len(t), Np+1), dtype=float) + a_vals_2 = np.zeros((len(t), Np+1), dtype=float) + phi_vals = np.zeros((len(t), Np+1), dtype=float) + pres_cum = np.zeros((len(t), Np+1), dtype=float) + pres_total = np.zeros((len(t), Np+1), dtype=float) + # # # set an array full of phi: + phi = np.full(len(pres_step), 1) + phi_ = phi # delete this to include porosity changes + # # DETECT SHUT-IN # + # v_inj = np.cumsum(np.maximum(q_f[1:], 0) * np.diff(t)) + # t_shut = t[np.argmax(np.round(v_inj, decimals=5)) + 1] + # idx_shut = np.where(t_shut==t)[0][0] + # S_shut = S * 100 + for t_step in range(len(t)): + # print(t_step) + # dt = times_step_func(t_step, t) + dt = abs(t[1] - t[0]) + if dt==0: + continue + # PERMEABILITY CHANGES DUE TO FRACTURE APERTURE VARIATION # + # Elastic fracture aperture # + sigma_n_eff = sigma_n - pres_step # effective normal stress + a_el = sigma_n_eff / (K_n + sigma_n_eff/(a_el_max - a_res)) # reversible elastic normal closure + # mask for all normal effective stress equal to zero or negative + mask1 = sigma_n_eff <= 0 + a_el[mask1] = 0.0 + # Shearing fracture aperture # + if t_step==0: + pres_cum[t_step] = pres_step + a_vals_2[t_step] = np.zeros_like(pres_step) + # PRESSURE DEPENDENT PROSITY CHANGES # + # phi_ = phi.copy() + # Cp = S / phi0[0] + else: + # set new pressure array + pres_update = np.copy(pres_cum[t_step-1]) + # create an array full of zeros + sf2 = np.zeros_like(pres_step) + # mask if pressure increases w.r.t. the previous time step + mask2 = (pres_step - pres_update) / dt > 0 + # modify the array to mimick the step function with mask2 + sf2[mask2] = 1 + # create an array full of zeros + sf3 = np.zeros_like(pres_step) + # mask if pressure is above the threshold value + mask3 = pres_step > p_t + # modify the array to mimick the step function with mask3 + sf3[mask3] = 1 + a_shear = a_shear_f * sf2 * sf3 * (1 + alpha * (pres_step - pres_update)) + # mask if new (cumulated) shearing aperture is above threshold + mask4 = (a_vals_2[t_step-1] + a_shear) > a_shear_max + # modify the array to mimick the step function with mask4 + a_shear[mask4] = 0 + # add time step contribution to the shear aperture history + a_vals_2[t_step] = a_vals_2[t_step-1] + a_shear + # apply the smoothing factor for numerical stability (here only for a_el) + a_el = (1 - w) * a_vals_1[t_step - 1] + w * a_el + # # PRESSURE DEPENDENT POROSITY CHANGES # + # phi_ = phi * S * (pres_step - pres_update) + # phi_ = phi + phi_ + # print(f'{phi_[0], t_step, pres_step[0]/1.e6, S}') + # phi_vals[t_step] = phi_ + # compute the total fracture aperture + a = a_el_max - a_el + a_vals_2[t_step] + # save the history of the fracture aperture contributions + a_vals_1[t_step] = a_el + # a_vals_2[t_step] = a_shear + kf = (a**3)/(12*fr_s) + # save the permeability history + kf_var[t_step] = kf + # boundary conditions at injection point + md[0] = - kf[0] * 2 * np.pi * Rw * h / (nu * dr[0]) + (S * phi_[0])/dt + upd[0] = kf[0] * 2 * np.pi * Rw * h / (nu * dr[0]) + b[0] = - q_f[t_step] + (S * phi_[0]) * pres_step[0] / dt + for j in range(1, Np): + r = (x[j-1] + 0.5 * dr[j-1]) * dt + lwd[j-1] = kf[j-1] * (r - 0.5 * dr[j-1]) / (nu * dr[j-1] * dr[j-1]) + md[j] = - ((2. * kf[j-1] * r) / (nu * dr[j-1] * dr[j-1]) + (r * (S * phi_[j-1]) / dt)) + upd[j] = kf[j-1] * (r + 0.5 * dr[j-1]) / (nu * dr[j-1] * dr[j-1]) + b[j] = - r * (S * phi_[j]) * pres_step[j] / dt + # boundary conditions at the far field + lwd[Np-1] = 0. + md[Np] = 1. + upd[Np-1] = 0. + b[Np] = 0. + # Setting up the matrix and solving the system of linear equations + L = np.zeros((Np+1, Np+1)) + for k in range(Np): + L[k, k] = md[k] + L[k, k+1] = upd[k] + L[k+1, k] = lwd[k] + L[Np, Np] = md[Np] + # if np.linalg.det(L)==0.0: + # pdb.set_trace() + pres_step = np.linalg.solve(L, b) + # store the new pressure step + pres_total[t_step] = pres_step + # print(S) + + return pres_total, kf_var, a_vals_1, a_vals_2, phi_vals + +class FlowModel4: + """ + ADD DESCRIPTION + """ + + def __init__(self, + Q, + r_grid, + h, + params_fix, + # bounds=[(1e-5, 1e-2), (1e-8, 1e-5), (1e-7, 1e-3), (1e-10, 1e-6), (-11, -7)], + bounds=[(1e-5, 1e-2), (1e-8, 1e-5), (1e-8, 1e-4), (1e-6, 1e-4), (1e-12, 1e-7), (-11, -7)], + # iniguess=(1e-5, 1e-6, 5e-6, 1e-8, 1e-9), + iniguess=(4e-5, 1e-5, 5e-7, 2e-5, 3e-10, 1e-9), + forward_model=False): + self.r = r_grid + self.h = h + self.params_fix = params_fix + self.Q = Q + self.bounds = bounds + self.params = iniguess + self.model = flow_model_nonlinear + # for callback + self.best_x = None + forward_model_ = forward_model, + self.forward_model = forward_model_[0] + self.minf = np.inf + + def save_iteration_step(self, x, convergence): + """ + function to save history of parameters and residual during DEA + """ + # check if equal + #np.testing.assert_equal(x, self.best_x) + self.dea_vals.append([np.power(10., x[0]), + np.power(10., x[1]), + np.power(10., x[2]), + np.power(10., x[3]), + np.power(10., x[4]), + np.power(10., x[5])]) + self.dea_func.append(self.minf) + return + + def translate_training(self, TrainingData, TrainingTarget, params_fix): + + self.observation = TrainingTarget[:, 1] + self.Q = TrainingData[:, :2] + + Q = TrainingData[:, 1] + t_grid = TrainingData[:, 0] + self.t_grid = t_grid + # r_grid = self.r # node positions (radial) + # dr_array = np.diff(r_grid) # spacing between nodes + # nr = len(r_grid) - 1 # number of nodes minus one (which is equal to the number of elements) + + self.damping = params_fix['damping_parameter'] + pt = params_fix['threshold_pressure'] * (1e6) - self.observation[0] + sigma_n = params_fix['fix_normal_stress'] * (1e6) + fr_s = params_fix['frac_spacing'] + nu = np.power(10., params_fix['viscosity']) + K_n = np.power(10., params_fix['frac_normal_stiffness']) + + self.args = (sigma_n, fr_s, K_n, t_grid, nu, np.diff(self.r), len(self.r) - 1, Q, self.r, self.h, self.damping, pt) + + return + + def Cost(self, x, sigma_n, fr_s, K_n, t, nu, dr, nr, Q, r, h, w, pt): + # parameters to be calibrated + a_max = np.power(10., x[0]) # aperture at zero stress + a_res = np.power(10., x[1]) # residual aperture + # a_shear_init = np.power(10., x[2]) # shear initial aperture + # gamma = np.power(10., x[3]) # shearing damping factor + a_shear_f = np.power(10., x[2]) # constant shearing aperture factor + a_shear_max = np.power(10., x[3]) # maximum threshold for shearing aperture + alpha = np.power(10., x[4]) # pressure difference scaling factor on shearing + S = np.power(10., x[5]) # storage + # params = (sigma_n, K_n, a_max, a_res, fr_s, a_shear_init, gamma, w) + params = (sigma_n, K_n, a_max, a_res, fr_s, a_shear_f, a_shear_max, pt, alpha, w) + p_num = self.model(params, r[0], nr, nu, h, Q, S, t, dr, r)[0] + p_pred = p_num[:,0] + self.observation[0] + Coeff_R2 = np.sum(np.square(p_pred/1.e6 - self.observation/1.e6))/len(self.observation) + + if Coeff_R2 < self.minf: + self.minf = Coeff_R2 + self.best_x = x + + return Coeff_R2 + + def fit(self, TrainingData, TrainingTarget, + popsize=10, + polish=True, + disp=True, + maxiter=20, + seed=22, + tol=1e-5): + + self.translate_training(TrainingData, TrainingTarget, self.params_fix) + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + self.result = differential_evolution(self.Cost, self.bounds, args=self.args, popsize=popsize, polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol, updating='immediate', callback=self.save_iteration_step) + + self.params = np.power(10., self.result.x[0]), \ + np.power(10., self.result.x[1]), \ + np.power(10., self.result.x[2]), \ + np.power(10., self.result.x[3]), \ + np.power(10., self.result.x[4]), \ + np.power(10., self.result.x[5]) + + self.hidden_mechanism = self.predict() + + def predict(self, Plan=[],): + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + if self.forward_model==True: + if len(Q) <= 1: + Q = Plan + else: + Q = np.vstack((Q, Plan)) + else: + Q = np.vstack((Q, Plan)) + t_grid = Q[:,0] + self.args = list(self.args) + self.args[3] = t_grid + self.args[7] = Q[:,1] + + # params = (self.args[0], self.args[2], self.params[0], self.params[1], self.args[1], self.params[2], self.params[3], self.args[10]) + # pres_num, self.param_evol_fit_1, self.param_evol_fit_2, self.param_evol_fit_3 = self.model(params, self.args[8][0], self.args[6], self.args[4], + # self.h, self.args[7], self.params[4], self.args[3], + # self.args[5], self.args[8]) + + params = (self.args[0], self.args[2], self.params[0], self.params[1], self.args[1], self.params[2], self.params[3], self.args[11], self.params[4], self.args[10]) + pres_num, self.param_evol_fit_1, self.param_evol_fit_2, self.param_evol_fit_3, self.param_evol_fit_4 = self.model(params, self.args[8][0], self.args[6], self.args[4], + self.h, self.args[7], self.params[5], self.args[3], + self.args[5], self.args[8]) + + self.param_evol_pred_1 = self.param_evol_fit_1[len(self.Q):, :] + self.param_evol_pred_2 = self.param_evol_fit_2[len(self.Q):, :] + self.param_evol_pred_3 = self.param_evol_fit_3[len(self.Q):, :] + self.param_evol_pred_4 = self.param_evol_fit_4[len(self.Q):, :] + + if len(self.Q) < len(pres_num): + if self.forward_model==False: + Prediction = pres_num[len(self.Q):,:] + self.observation[0] # somehow this was a solution before but now it is wrong! (20.08.2024) + else: + Prediction = pres_num + self.observation[0] + else: + Prediction = pres_num + self.observation[0] + return Prediction \ No newline at end of file diff --git a/hm1d/SeismicityModel.py b/hm1d/SeismicityModel.py new file mode 100644 index 0000000..d571d2f --- /dev/null +++ b/hm1d/SeismicityModel.py @@ -0,0 +1,305 @@ +""" +Seismicity Models for the HM0/1 classes +by V. Clasen, A. P. Rinaldi, D. Karvounis (2024) +""" + +import numpy as np +from scipy.stats import foldnorm +import random +from numba import njit + +""" +CAPS model +""" +def Caps_Model_linear(Moments, Edges, MidEdges, max_pressure, CapsSettings, NSim, retriggering=False): + # get and rename parameters + sigma1_mean = CapsSettings['inter_sigma1'] + sigma3_mean = CapsSettings['inter_sigma3'] + sigma1_std = CapsSettings['sigma1_std'] + sigma3_std = CapsSettings['sigma3_std'] + cohesion = CapsSettings['cohesion_mean'] + # cohesion_std = CapsSettings['cohesion_std'] + mu = CapsSettings['friction_mean'] + # mu_std = CapsSettings['friction_std'] + # crit = CapsSettings['criticallity'] + stressdrop_coeff = CapsSettings['stressdrop_coeff'] + p_hydro = CapsSettings['phydro'] + seed_density = CapsSettings['seed_density'] + dw = CapsSettings['CAPS_sigma_distr'] + + # parameter uncertainties + if NSim > 1: + sigma1 = np.random.normal(loc=sigma1_mean, scale=0.2*sigma1_mean*dw, size=NSim) + sigma3 = np.random.normal(loc=sigma3_mean, scale=0.2*sigma3_mean*dw, size=NSim) + else: + sigma1 = np.array([sigma1_mean]) + sigma3 = np.array([sigma3_mean]) + + total_events_all = np.zeros((NSim, len(Moments))) + total_rates_all = np.zeros((NSim, len(Moments) - 1)) + + for nrun in range(NSim): + theta_opt = np.pi / 4. + np.arctan(mu) / 2. + + sigma_n_eff = (sigma1[nrun] + sigma3[nrun]) / 2. + ((sigma1[nrun] - sigma3[nrun]) / 2.) * np.cos(2 * theta_opt) - p_hydro + tau = np.abs(((sigma1[nrun] - sigma3[nrun]) / 2.) * np.sin(2 * theta_opt)) + + # if crit!=0: + # # attempt to account for criticallity definition + # min_fail_pres = cohesion / (mu - crit) + sigma_n_eff - tau / (mu - crit) + # min_fail_pres_std = np.sqrt( + # (np.square(sigma1_std) * np.square((1 + np.cos(2 * theta_opt) - np.sin(2 * theta_opt) / (mu - crit)) / 2.)) + # + np.square(sigma3_std) * np.square((1 - np.cos(2 * theta_opt) + np.sin(2 * theta_opt) / (mu - crit)) / 2.)) + # + # crit_check = NormalDist(mu=min_fail_pres, sigma=min_fail_pres_std).cdf(0) <= 0.05 + # + # n_crit = crit + crit/10 + # while crit_check == False: + # tau_temp = tau + # if (sigma_n_eff - min_fail_pres) > 0: + # tau = np.abs(cohesion + (mu - n_crit) * (sigma_n_eff - min_fail_pres)) + # sigma_n_eff = min_fail_pres + (tau_temp - cohesion) / (mu - n_crit) + # else: + # tau = np.abs(cohesion + (mu + n_crit) * (sigma_n_eff - min_fail_pres)) + # sigma_n_eff = min_fail_pres + (tau_temp - cohesion) / (mu + n_crit) + # min_fail_pres_temp = min_fail_pres + # min_fail_pres = cohesion / (mu - crit) + sigma_n_eff - tau / (mu - crit) + # if (min_fail_pres - min_fail_pres_temp) < 1.e-5: + # # print('Error: tau cannot get lower than cohesion: criticallity criterion is not met.') + # break + # crit_check = NormalDist(mu=min_fail_pres, sigma=min_fail_pres_std).cdf(0) <= 0.05 + # n_crit = n_crit + crit / 10 + + fail_pres_mean = cohesion / mu + sigma_n_eff - tau / mu + # the standard deviation is calculated differently -> check this -> different than for criticallity + fail_pres_std = np.sqrt( + (np.square(sigma1_std) * np.square((1 + np.cos(2 * theta_opt) - np.sin(2 * theta_opt) / mu) / 2.)) + + np.square(sigma3_std) * np.square((1 - np.cos(2 * theta_opt) + np.sin(2 * theta_opt) / mu) / 2.)) + + # differential stress: + #sigma_d = sigma1_eff - sigma3_eff + + # scaling + seed_number = int(seed_density * np.max(Edges)) + seed_spacebin = seed_number / len(MidEdges) + + fn_cdf = np.zeros_like(max_pressure) + fn_cdf_rt = np.zeros_like(max_pressure) + tau_array = np.zeros((len(max_pressure[:,0])+1)) + tau_array[0] = tau + for tt in range(len(Moments)): + fn_cdf[tt,:] += foldnorm.cdf(max_pressure[tt,:], np.abs(fail_pres_mean)/fail_pres_std, loc=0, scale=fail_pres_std) + if retriggering==True: + stressdrop = stressdrop_coeff * ((tau_array[tt] - cohesion) / mu) + if np.max(max_pressure[tt, :]) - fail_pres_mean > 0: + tau_array[tt + 1] = tau_array[tt] - ( + stressdrop + mu * (np.max(max_pressure[tt, :]) - fail_pres_mean)) + else: + tau_array[tt + 1] = tau_array[tt] - stressdrop + if tau_array[tt + 1] > tau_array[tt]: + tau_array[tt + 1] = tau_array[tt] + elif tau_array[tt + 1] < 0: + tau_array[tt + 1] = 0. + else: + continue + fail_pres_mean_trig = cohesion / mu + sigma_n_eff - tau_array[tt + 1] / mu + n_trig = int(np.sum(fn_cdf[tt, :])) / stressdrop_coeff + fn_cdf_rt[tt, :] += foldnorm.cdf(max_pressure[tt, :], np.abs(fail_pres_mean_trig) / fail_pres_std, loc=0, scale=fail_pres_std) * n_trig + + fn_cdf = fn_cdf + fn_cdf_rt + + total_events = np.zeros([len(Moments), len(MidEdges)]) + for tt in range(len(Moments)): + total_events[tt], bins = np.histogram(MidEdges, bins=Edges, weights=fn_cdf[tt,:] * seed_spacebin) + total_rates = np.diff(total_events, axis=0) + total_events_all[nrun,:] = np.sum(total_events, axis=1) + total_rates_all[nrun,:] = np.sum(total_rates, axis=1) + + return total_events_all, total_rates_all + +""" +Seed Model (after Kiraly et al., 2016) +""" +@njit(nopython=True) +def Seed_Model_linear(Moments, Edges, fm_r, fm_t, pres_t, SeedsSettings, NSim, retriggering=True): + + #np.random.default_rng(seed=np.int64(datetime.now().timestamp()*1.e6)) + + # create the seed locations + max_ext = np.max(Edges) # furthest distance for the forecast + seed_density = SeedsSettings[0] # seed density + seed_number = int(seed_density * max_ext) # total number of seeds + Rcoord = max_ext * np.random.rand(seed_number * NSim) # placement of seeds + + # get and rename parameters + sigma1_mean = SeedsSettings[1] + sigma3_mean = SeedsSettings[2] + sigma1_std = SeedsSettings[3] + sigma3_std = SeedsSettings[4] + cohesion = SeedsSettings[5] + # cohesion_std = SeedsSettings[5] + mu = SeedsSettings[6] + # mu_std = SeedsSettings[2] + crit = SeedsSettings[7] + # theta_std = SeedsSettings[10] + stressdrop_coeff = SeedsSettings[8] + p_hydro = SeedsSettings[9] + + # b-values and corresponding differential stresses + b_min = SeedsSettings[10] + b_max = SeedsSettings[11] + b_min_diff_stress = SeedsSettings[12] + b_max_diff_stress = SeedsSettings[13] + + Mc = SeedsSettings[14] + + # setting arrays to be calculated + # optimal orientation of each seed + theta_opt = np.pi / 4. + np.arctan(mu) / 2. + sigma1 = sigma1_mean + sigma1_std * np.random.randn(seed_number*NSim) + sigma3 = sigma3_mean + sigma3_std * np.random.randn(seed_number*NSim) + + sig_check = np.where((sigma3 - p_hydro) > (sigma1 - p_hydro)) + while len(sig_check[0]): + sigma1[sig_check] = sigma1_mean + sigma1_std * np.random.randn(len(sig_check[0])) + sigma3[sig_check] = sigma3_mean + sigma3_std * np.random.randn(len(sig_check[0])) + sig_check = np.where((sigma3 - p_hydro) > (sigma1 - p_hydro)) + + sigma_n_eff = ((sigma1 + sigma3) / 2. + ((sigma1 - sigma3) / 2.) * np.cos(2. * theta_opt)) - p_hydro + tau = np.abs((sigma1 - sigma3) / 2. * np.sin(2. * theta_opt)) + + crit_check = np.where(cohesion / (mu - crit) + sigma_n_eff - tau / (mu - crit) < 0.) + while len(crit_check[0]): + tau_temp = tau[crit_check] + tau[crit_check] = np.abs(cohesion + (mu - crit) * sigma_n_eff[crit_check]) + sigma_n_eff[crit_check] = (tau_temp - cohesion) / (mu - crit) + crit_check = np.where(cohesion / (mu - crit) + sigma_n_eff - tau / (mu - crit) < 0.) + + fail_pressure = cohesion / mu + sigma_n_eff - tau / mu + + # MidEdges = np.zeros(len(Edges) - 1) + # for i in range(len(MidEdges)): + # MidEdges[i] = (Edges[i] + Edges[i + 1]) / 2. + + diff_stress = (sigma1 - sigma3) - p_hydro + + # open lists of parameters: + b_val = [] + mag = [] + time = [] + R = [] + pressure = [] + trig_index = [] + differential_stress = [] + sig1 = [] + sig3 = [] + stress_drop = [] + + Rind = np.argmin(np.abs(fm_r - np.reshape(Rcoord, (len(Rcoord), 1))).T, axis=0) + + # comment previous and uncomment next 3 lines to make it work in a different environment than in the pycharm setup + #loc_dist = np.abs(fm_r - np.reshape(Rcoord, (len(Rcoord), 1))) + #Rind = np.empty((len(Rcoord))) + #for i in range(len(Rcoord)): Rind[i] = (np.argmin(loc_dist[i])) + + events_map = np.ravel((np.ones((seed_number, NSim)) * np.array(list(range(0, NSim))))) + + pres_map = np.empty((len(Moments), len(Rind))) + for j in range(len(Rind)): pres_map[:, j] = pres_t[int(Rind[j]), :] + + # total_events = np.zeros((NSim, len(Moments), len(MidEdges))) + total_events = np.zeros((NSim, len(Moments))) + + t_events = 0 + tt = 0 + + for t in range(len(Moments)): + # for t in Moments: + OverShootPressure = pres_map[t] - fail_pressure + # OverShootPressure = pres_func(Rcoord, t) - fail_pressure + trig_event_tbin = np.where(OverShootPressure > 0) + trig_event_total_array = trig_event_tbin[0] + + if len(trig_event_total_array): + # go over all triggered seeds + for i in np.nditer(trig_event_total_array): + # if differential stress is higher than the differential stress corresponding to b_min + if diff_stress[i] > b_min_diff_stress: + b_value = b_min + else: + # otherwise find the corresponding b-value + mm = ((b_max - b_min) / (b_max_diff_stress - b_min_diff_stress)) + qq = b_max - mm * b_max_diff_stress + b_value = mm * diff_stress[i] + qq + + # idx_pos = np.argmin(np.abs(MidEdges - Rcoord[i])) + # total_events[int(event_map[i]), t_events, idx_pos] += 1 + total_events[int(events_map[i]), t_events] += 1 + + # save for each triggered seed into the catalog the... + # b-value + b_val.append(b_value) + # magnitude + mag.append(Mc + np.random.exponential(1. / (b_value * np.log(10)))) + # time + time.append(t) + # x-location + R.append(Rcoord[i]) + # pressure + pressure.append(OverShootPressure[i] + fail_pressure[i]) + # triggering index + trig_index.append(float(i + 1)) + # differential stress + differential_stress.append(diff_stress[i]) + # maximum effective principal stress + sig1.append(sigma1[i] - p_hydro) + # minimum effective principal stress + sig3.append(sigma3[i] - p_hydro) + + if retriggering == True: + "1)" + # the stress drop is proportional to the normal stress + stressdrop = stressdrop_coeff * (sigma_n_eff[i] - fail_pressure[i]) + # stressdrop = stressdrop_coeff * (((tau[i] - cohesion) / mu)) + # shear stress on seeds after triggering + tau[i] = tau[i] - (stressdrop + mu * OverShootPressure[i]) + # change/reduction in the maximum principal stress + sigma1[i] = sigma1[i] - 2 * (stressdrop + mu * OverShootPressure[i]) / np.abs(np.sin(2 * theta_opt)) + # differential stress on seeds after triggering + diff_stress[i] = (sigma1[i] - sigma3[i]) - p_hydro + # normal effective stress on seeds after triggering (no effect for now) + # sigma_n_eff[i] = (sigma1[i] + sigma3[i])/2. + ((sigma1[i] - sigma3[i]) * np.cos(2*theta_opt) / 2.) - p_hydro + fail_pressure[i] = cohesion / mu + sigma_n_eff[i] - tau[i] / mu + # stressdrop + stress_drop.append(stressdrop) + else: + fail_pressure[i] = random.random() * np.square(np.max(pres_t)) + # The following lines are commented (not really necessary) as they do not work with NUMBA... + # ind = np.where(fail_pressure[i] < np.max(pres_sol)) + # while len(ind[0]): + # fail_pressure[i] = random.random() * np.square(np.max(pres_sol)) + # ind = np.where(fail_pressure[i] < np.max(pres_sol)) + stress_drop.append(0) + + t_events = t_events + 1 + if not t_events >= len(Moments): + # total_events[:, t_events, :] = total_events[:, t_events - 1, :] + total_events[:, t_events] = total_events[:, t_events - 1] + tt = tt + 1 + + EQ = (b_val, mag, time, R, pressure, trig_index, differential_stress, sig1, sig3, stress_drop) + total_rates = np.diff(total_events) + # total_events_noloc = np.sum(total_events, axis=2) + # total_rates_noloc = np.diff(total_events_noloc, axis=1) + + return EQ, total_events, total_rates + +""" +COMMENTS: +1) The version: stressdrop = stressdrop_coeff * (((tau[i] - cohesion) / mu) + fail_pressure[i]), +is not correct because the stressdrop is related to the normal stress (not effective normal stress and also not to the +normal stress reduction necessary to reach failure). Then, the stress drop is directly related to the normal stress but +the magnitude of reduction in the shear stress is actually related also to the amount of overpressure for that given seed. +If the overpressure is large, tau will experience a larger reduction. +2) +""" diff --git a/hm1d/Worker_HM0_HM1_1D.py b/hm1d/Worker_HM0_HM1_1D.py new file mode 100644 index 0000000..c27c833 --- /dev/null +++ b/hm1d/Worker_HM0_HM1_1D.py @@ -0,0 +1,1322 @@ +import numpy as np +import copy +from utils import (Calibrate_Observed_GR, b_value_Lasso_calibration_1D, Refine_An_Edge, + LL_cost_function_1D, LS_cost_function_1D) + + +from FlowModel import FlowModel0, FlowModel1, FlowModel2, FlowModel3, FlowModel4 + +from SeismicityModel import Caps_Model_linear as CAPS +from SeismicityModel import Seed_Model_linear as SEED +from scipy.optimize import differential_evolution +from scipy.interpolate import CloughTocher2DInterpolator + +import numba as nb + + +class HM01: + def __init__(self, + TrainingData, + time_col='time', + flow_col='flow', + press_col='pressure', + source_times_col='ts', + hypocenter_cols=['Rs'], + Mw_cols='mag', + dM = 0.01, + max_iteration = -1, + cost_fun = 'LS', + inv_mod='seq', + seis_model='CAPS', + retriggering = False, + forward_model=False, # True: FWD, False: Inversion mode + flow_model='line_source', + params_method='Chi2crt', + NSim=1, + seed_model_version='1', + workers=1, + opt_algorithm='DE', + max_grid_ext=300, + layer_thick = 100, + cross_area = 94, + sensitivity_analysis=False, + init_params = [], + Settings=[]): + + self.Columns = [time_col, flow_col, press_col] + + self.opt_algorithm = opt_algorithm + self.sensitivity_analysis = sensitivity_analysis + self.workers = workers + self.retriggering = retriggering + self.forward_model = forward_model + + # self.TrainingData = None + self.TrainingData = TrainingData + self.training_catalog = None + + self.ts = source_times_col + self.Xs = hypocenter_cols + self.Mw = Mw_cols + self.mc_bin_size = dM + + self.cost_fun = cost_fun + listOfStrings = ['LL' , 'LS'] + if self.cost_fun not in listOfStrings : + print("Cost function '",self.cost_fun,"' not found. Possible values are:", listOfStrings,". Using default mode (LL).") + self.cost_fun='LL' + + self.inv_mod = inv_mod + listOfStrings = ['seq' , 'joint'] + if self.inv_mod not in listOfStrings : + print("Inversion mode '",self.cost_fun,"' not found. Possible values are:", listOfStrings,". Using default mode (seq).") + self.inv_mod='seq' + + self.flw_model = flow_model + listOfStrings = ['point_source' , 'line_source', 'num_const_perm', 'num_var_perm', 'num_var_perm_FV'] + if self.flw_model not in listOfStrings : + print("Fluid model '",self.cost_fun,"' not found. Possible values are:", listOfStrings,". Using default mode (line_source).") + self.flw_model='line_source' + + self.NSim=NSim + self.seed_model_version = seed_model_version + self.workers=workers + self.seis_model = seis_model + self.params_method = params_method + + self.seed_settings = Settings[0] + self.seis_bounds = Settings[1] + self.flow_bounds = Settings[2] + self.ExSolSettings = Settings[3] + self.CAPSSettings = Settings[4] + self.SEEDSettings = Settings[4] + + self.CostFunction = None + self.LL_Edges = None + self.LL_Moments = None + self.Training_MaxPressure = None + self.Training_XYZ = None + self.Training_Volume = None + + # input for the flow models + self.max_grid_ext = max_grid_ext + self.layer_thick = layer_thick + self.cross_area = cross_area + + self.maxbval_bounds = [(1., self.seed_settings["b_max"])] # upper b-value limit + + if self.retriggering == True: + if self.seed_settings['criticallity']!=0: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'stressdrop_coeff', 'cohesion_mean', 'friction_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['stressdrop_coeff'][0], self.seis_bounds['stressdrop_coeff'][1]), + # (self.seis_bounds['criticallity'][0], self.seis_bounds['criticallity'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False, False] + else: + # self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'stressdrop_coeff', 'friction_mean', 'seed_density'] + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'stressdrop_coeff', 'cohesion_mean', 'friction_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['stressdrop_coeff'][0], self.seis_bounds['stressdrop_coeff'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False, False] + else: + if self.seed_settings['criticallity']!=0: + # self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'friction_mean', 'seed_density'] + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'friction_mean', 'cohesion_mean', 'seed_density'] + # self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'criticallity', 'friction_mean', 'cohesion_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + # (self.seis_bounds['criticallity'][0], self.seis_bounds['criticallity'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + # self.logscale = [False, False, False, False] + self.logscale = [False, False, False, False, False] + # self.logscale = [False, False, False, False, False, False] + else: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'cohesion_mean', 'friction_mean', 'seed_density'] + # self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'friction_mean', 'seed_density'] + # self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'cohesion_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False] + # self.logscale = [False, False, False, False] + + """ + 4 different flow models can be choosen: + -> point_source: analytical point source solution. Two parameters, storage coefficient and permeability, are calibrated. + -> line_source: Theis' solution. Two parameters, storage coefficient and permeability, are calibrated. + -> num_const_perm: numerical solution without permeability changes. Only the permeability is calibrated and is a fixed value. + -> num_var_perm: numerical solution with permeability changes. Three parameters are calibrated that control the changes in permeability with pressure. + """ + + if self.flw_model == 'point_source': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] # parameters to calibrate + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel0(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.cross_area, + bounds=self.FlowBounds) + + elif self.flw_model == 'line_source': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel1(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + bounds=self.FlowBounds, iniguess=(self.seed_settings['storage'], self.seed_settings['permeability'])) + + elif self.flw_model == 'num_const_perm': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel2(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds) + + elif self.flw_model == 'num_var_perm': # HM1 class with FD + self.OptimizeKeys = self.OptimizeKeys + ['zero_stress_aperture', 'residual_aperture','frac_normal_stiffness','storage'] # parameters to calibrate + # self.FlowBounds = [(self.seed_settings['zero_stress_aperture'], -2), # zero-stress aperture + # (self.seed_settings['residual_aperture'], -7), # residual aperture + # (self.seed_settings['frac_normal_stiffness'], 14), # fracture normal stiffness + # (-9, -7)] # storage + self.FlowBounds = [(self.flow_bounds['zero_stress_aperture'][0], self.flow_bounds['zero_stress_aperture'][1]), + (self.flow_bounds['residual_aperture'][0], self.flow_bounds['residual_aperture'][1]), + (self.flow_bounds['frac_normal_stiffness'][0], self.flow_bounds['frac_normal_stiffness'][1]), + (self.flow_bounds['storage'][0], self.flow_bounds['storage'][1])] + self.logscale = self.logscale + [True, True, True, True] + # activate the flow model: + self.flow_model = FlowModel3(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds) + + else: # HM1 cass with FV + # self.OptimizeKeys = self.OptimizeKeys + ['zero_stress_aperture', 'residual_aperture', 'shearing_aperture_factor', 'shear_scaling_factor', 'storage'] # parameters to calibrate + self.OptimizeKeys = self.OptimizeKeys + ['zero_stress_aperture', 'residual_aperture', 'shearing_aperture_factor', 'max_shear_frac_aperture', 'shear_scaling_factor', 'storage'] + self.FlowBounds = [(self.flow_bounds['zero_stress_aperture'][0], self.flow_bounds['zero_stress_aperture'][1]), + (self.flow_bounds['residual_aperture'][0], self.flow_bounds['residual_aperture'][1]), + (self.flow_bounds['shearing_aperture_factor'][0], self.flow_bounds['shearing_aperture_factor'][1]), + (self.flow_bounds['max_shear_frac_aperture'][0], self.flow_bounds['max_shear_frac_aperture'][1]), + (self.flow_bounds['shear_scaling_factor'][0], self.flow_bounds['shear_scaling_factor'][1]), + (self.flow_bounds['storage'][0], self.flow_bounds['storage'][1])] + # self.logscale = self.logscale + [True, True, True, True, True] + self.logscale = self.logscale + [True, True, True, True, True, True] + # activate the flow model: + self.flow_model = FlowModel4(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds, forward_model=forward_model, + iniguess=(self.seed_settings['zero_stress_aperture'], self.seed_settings['residual_aperture'], + self.seed_settings['shearing_aperture_factor'], self.seed_settings['max_shear_frac_aperture'], + self.seed_settings['shear_scaling_factor'], self.seed_settings['storage'])) + + if seis_model=='SEED': + self.SEEDmodelKeys = ['seed_density', 'inter_sigma1', 'inter_sigma3', 'sigma1_std', 'sigma3_std', + 'cohesion_mean', 'friction_mean', 'criticallity', 'stressdrop_coeff', 'phydro', + 'b_min', 'b_max', 'b_min_diff_stress', 'b_max_diff_stress', 'Mag_Completeness'] + + self.disp = True + self.maxiter = max_iteration + self.seed = 42 + + # for callback + self.best_x = None + self.minf = np.inf + + # self.init_params = [5, 0.2, 5.2, 0.44] + + # currently not used: + # if self.opt_algorithm=='LMFIT': + # params = Parameters() + # for i in range(len(self.OptimizeKeys)-1): + # params.add(self.OptimizeKeys[i], self.init_params[i], min=self.SEISbounds[i][0], max=self.SEISbounds[i][1]) + # self.SEISparams = params + + def update_seeds_settings(self): + # would you rather the Mc was calculated or gained + # from the QuakeMl data? + Mc, b_value = Calibrate_Observed_GR( + self.training_catalog, self.mc_bin_size, self.Mw) + self.seed_settings["Mag_Completeness"] = Mc + self.seed_settings["b_value"] = b_value + self.training_catalog = self.training_catalog[ + self.training_catalog[self.Mw] >= Mc] + + if (self.seed_settings["b_vs_depth_range"]): + a, m = b_value_Lasso_calibration_1D( + np.array(self.training_catalog[self.Xs].values), + np.array(self.training_catalog[[self.Mw]])[:, 0], + bins=100) + else: + a, m = b_value, np.zeros(1) + + self.seed_settings["a"] = a + self.seed_settings["m"] = m + + def Seed_max_bval_fit(self, x): + b_min = self.seed_settings['b_min'] + # to be optimized + b_max = x + self.seed_settings['b_max'] = b_max + b_max_diff_stress = self.seed_settings['b_max_diff_stress'] + b_min_diff_stress = self.seed_settings['b_min_diff_stress'] + # mean differential stress from seeds + diff_stress_mean = self.seed_settings['diff_stress_mean'] + # b-value from observed data + b_val_obs = self.seed_settings['b_value'] + + mm = ((b_max - b_min)/(b_max_diff_stress - b_min_diff_stress)) + qq = b_max - mm * b_max_diff_stress + b_val_model = mm * diff_stress_mean + qq + + b_val_diff = np.abs(b_val_obs-b_val_model) + + return b_val_diff + + def ll_score(self, x): + y = self.CostFunction.y + log_factorial_y = self.CostFunction.logyfact + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + y0 = CAPS.Caps_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], self.Training_R, + self.Training_MaxPressure, TestSettings, NSim=1, retriggering=self.retriggering)[0] + + LL = np.sum(y * np.log(y0) - y0 - log_factorial_y)/len(self.training_catalog)# Poissonian LL + #LL = np.sum(y * np.log10(y1) - y1 - log_factorial_y) / float(len(y1)) + if np.isfinite(LL): + return -LL + return 1.e20 + + def ls_score(self, x): + y = self.CostFunction.y + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + y0 = CAPS.Caps_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], self.Training_R, + self.Training_MaxPressure, TestSettings, NSim=1, retriggering=self.retriggering)[0] + + LS = np.sum(np.square(y-y0))/len(y) + if np.isfinite(LS): + if LS < self.minf: + self.minf = LS + self.best_x = x + return LS + return 1.e20 + + def ls_score_seed(self, x): + y = self.CostFunction.y + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(TestSettings[self.SEEDmodelKeys[j]])) + + y0 = SEED.Seed_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], + self.flow_model.r, self.flow_model.Q[:,0], + self.pres_t_fit, + SeedsSettings, self.Nreal, self.retriggering)[1] + + y1 = np.median(y0, axis=0) + + LS = np.sum(np.square(y - y1)) / len(y) + + if np.isfinite(LS): + if LS < self.minf: + self.minf = LS + self.best_x = x + return LS + return 1.e20 + + def ll_score_joint(self, x): + + TestSettings = copy.deepcopy(self.seed_settings) + #print(x) + for i in range(len(x)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + #end_time = time.time() + + #self.flow_model.params = TestSettings[self.OptimizeKeys[4]], TestSettings[self.OptimizeKeys[5]] + self.flow_model.params = TestSettings[self.OptimizeKeys[4]] + + self.flow_model.hidden_mechanism = self.flow_model.predict() + + Coeff_R2 = np.sum(np.square(self.flow_model.hidden_mechanism[:,0]/1.e6 - + self.flow_model.observation.T/1.e6))/len(self.flow_model.observation) + + self.timesteps = self.TrainingData.time.values + inipres=self.TrainingData[self.Columns[-1]].values[0] + self.PressureFunction = self.create_interpolator(self.timesteps,(self.flow_model.hidden_mechanism-inipres)/1.e6) + + (self.Training_MaxPressure, + self.Training_XYZ, + self.Training_Volume) = self.Interpolate_1D(self.LL_Moments, self.LL_Edges, + self.ExSolSettings, self.CAPSSettings) + + + y1 = CAPS.Forecast_BinnedRate_only_1D( + self.LL_Moments[1:], self.LL_Edges, self.Training_MaxPressure, + self.Training_XYZ, self.Training_Volume, TestSettings) + #end_time = time.time() - end_time + #print("Elapsed time to run Forecast_Binned_rate was %g seconds" % (end_time)) + + y0=np.diff(y1,axis=(0)) + y1=np.zeros(y1.shape) + y1[1:,:]=y0 + y1 = y1.ravel() + y1[np.where(y1 <= 0.)] = 1.e-20 + + y = self.SeisCostFunction.y + log_factorial_y = self.SeisCostFunction.logyfact + + LL = -np.sum(y * np.log(y1) - y1 - log_factorial_y)/len(self.training_catalog) + Cost = LL+Coeff_R2 + #LL = np.sum(y * np.log10(y1) - y1 - log_factorial_y) / float(len(y1)) + if np.isfinite(Cost): + return Cost + return 1.e20 + + def ls_score_joint(self, x): + + TestSettings = copy.deepcopy(self.seed_settings) + #print(x) + for i in range(len(x)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + #end_time = time.time() + + self.flow_model.params = TestSettings[self.OptimizeKeys[4]], TestSettings[self.OptimizeKeys[5]] + #self.flow_model.params = TestSettings[self.OptimizeKeys[4]] + + self.flow_model.observation = self.TrainingData[self.Columns[::2]].values[:, 1:] + + self.flow_model.hidden_mechanism = self.flow_model.predict() + + Coeff_R2 = np.sum(np.square(self.flow_model.hidden_mechanism[:,0]/1.e6 - + self.flow_model.observation.T/1.e6))/np.max(self.flow_model.observation/1.e6) + + self.timesteps = self.TrainingData.time.values + inipres=self.TrainingData[self.Columns[-1]].values[0] + self.PressureFunction = self.create_interpolator(self.timesteps,(self.flow_model.hidden_mechanism-inipres)/1.e6) + + (self.Training_MaxPressure, + self.Training_XYZ, + self.Training_Volume) = self.Interpolate_1D(self.LL_Moments, self.LL_Edges, + self.ExSolSettings, self.CAPSSettings) + + y0 = CAPS.Forecast_BinnedRate_only_1D( + self.LL_Moments[1:], self.LL_Edges, self.Training_MaxPressure, + self.Training_XYZ, self.Training_Volume, TestSettings) + + y1 = np.sum(y0, axis=1) + + #end_time = time.time() - end_time + #print("Elapsed time to run Forecast_Binned_rate was %g seconds" % (end_time)) + + y = self.SeisCostFunction.y + + LS = np.sum(np.square(y-y1))/len(y) + + Cost = LS+Coeff_R2 + #LL = np.sum(y * np.log10(y1) - y1 - log_factorial_y) / float(len(y1)) + if np.isfinite(Cost): + return Cost + return 1.e20 + + def save_iteration_step(self, x, convergence): + """ + function to save history of parameters and residual during DEA + """ + # check if equal + #np.testing.assert_equal(x, self.best_x) + self.dea_vals.append(x) + self.dea_func.append(self.minf) + return + + def create_interpolator(self, t_grid, solution): + if len(self.flow_model.r)==len(solution[0]): + mesh = np.meshgrid(self.flow_model.r, t_grid) + else: + mesh = np.meshgrid(self.flow_model.r[1:], t_grid) + interpd = CloughTocher2DInterpolator(np.array([mesh[0].ravel(),mesh[1].ravel()]).T, solution.ravel(), fill_value=0) + return interpd + + def mask_for_median(self, events_grid): + + total_events_spacesum = np.sum(events_grid, axis=0) + total_events_median_new = np.zeros_like(total_events_spacesum) + total_events_median_new_single = np.zeros_like(total_events_spacesum[:,0]) + + for i in range(len(total_events_spacesum)): + if np.sum(total_events_spacesum[i])==0: + total_events_median_new[i] = total_events_spacesum[i] + total_events_median_new_single[i] = np.median(total_events_median_new[i], axis=0) + else: + masked = np.ma.masked_where(total_events_spacesum[i]==0, total_events_spacesum[i]) + total_events_median_new_single[i] = np.ma.median(masked) + + return total_events_median_new_single + + def Interpolate_1D(self, Forecasts_Moments, Forecasts_Edges, CAPS_KD_Settings): + """ + Same as CAPS.InterpolateMaximumPressure, but using a self.PressureFunction created by the fit + """ + RR=CAPS_KD_Settings["RefinementRatio"] + MyR=Refine_An_Edge(Forecasts_Edges, RR) # for 1D we use directly the cartesian grid as the radius + LaterKeepIndices=np.logical_and(np.isfinite(MyR), MyR > 0.) + My_Working_R =MyR[LaterKeepIndices] + DT=np.concatenate((self.timesteps, Forecasts_Moments)) + MyT=np.sort(np.unique(DT)) + MyPressure, MaxPressureAll =np.zeros([2, len(MyT), len(My_Working_R)]) + PM=np.zeros(len(My_Working_R)) + for timeIter in range(len(MyT)): + ConsiderTime=MyT[timeIter] + MyPressure[timeIter,:]=self.PressureFunction(My_Working_R,ConsiderTime) + MaxPressureAll[timeIter,:]=np.maximum(PM, MyPressure[timeIter,:]) + PM=MaxPressureAll[timeIter,:] + + TimeBinIndeces=np.intersect1d(Forecasts_Moments, MyT, return_indices=True)[2] # discard unecessary time discretization now + MaxPressure=MaxPressureAll[TimeBinIndeces] + dV = np.unique(np.diff(Forecasts_Edges, axis=0)) + #dV=np.unique(np.diff(Forecasts_Edges, axis=0), axis=0) + #if(len(dV)>1): + #print ("Warning: non equidistant edges have been passed in the one direction. Correct array of control distances.") + #\todo: assume equidistant edges and refinement + My_Cell_Width=np.prod(np.amin(dV,axis=0)/RR) + return MaxPressure, My_Working_R, np.ones(len(My_Working_R))*My_Cell_Width + + def ls_params_score(self, percent): + + par_grd_2 = [] + for p in range(len(self.CAPSbounds)): + # par_distr = self.Params_CAPS(forecast_edges, max_pressure_past, working_xyz_past, cells_volume_past, p) + par_distr = self.Params_CAPS_2(percent, p) + par_grd_2.append(par_distr) + cal_val_2 = np.median(par_grd_2, axis=1) + + LS = np.sum(np.square(self.cal_val-cal_val_2))/len(self.cal_val) + + if np.isfinite(LS): + return LS + return 1.e20 + + # def sensitivity_analysis_fun(self, params_distr, z_i, f_z_i, forecast_edges, method='sobol_global'): + # + # if method == 'sobol_global': + # """ + # GLOBAL SENSITIVITY ANALYSIS + # + # Ref. -> E. Qian, B. Peherstorfer, D. O'Malley, V. V. Vesselinov, and K. Willcox. + # Multifidelity Monte Carlo Estimation of Variance and Sensitivity Indices + # SIAM/ASA J. Uncertainty Quantification. Vol. 6, No. 2, pp. 683-706 + # + # Explanation parameters: + # params_distr -> distribution of the input parameters + # z_i -> values of parameters from FIRST random sampling (from NSim Monte Carlo simulations) + # f_z_i -> output of the model from z_i + # z_i_ -> values of input parameters from SECOND random sampling (from NSim Monte Carlo simulations) + # f_z_i_ -> output of the model from z_i_ + # y_i_j -> same as z_i_ but fixing the one input parameter of interest from z_i + # f_y_i_j -> output of the model from y_i_j + # + # E -> sample mean (mean of the entire output, over all times and space) + # V -> variance of all inputs + # V_j -> variance contributed by the input j + # T_j -> total variance contributed by the input j + # s_j -> Sobol' main sensitivity index for input j (portion of the output that can be attributed to the influence of the input j only, fraction of variance of input j alone) + # also: first order sensitivity indices + # s_j_t -> Sobol' total effect sensitivity index for input j (additionally takes into account the sum of the contributions) + # also: total-order sensitivity indices + # """ + # + # z_i = np.array(z_i).T + # + # f_z_i_copy = np.array(f_z_i) + # f_z_i_new = [] + # for l in range(len(f_z_i)): + # f_z_i_new.append(np.sum(f_z_i_copy[l][-1])) + # f_z_i = np.array(f_z_i_new) + # del f_z_i_copy, f_z_i_new + # # f_z_i = np.sum(np.sum(np.array(f_z_i), axis=2), axis=1) + # + # E = np.sum(f_z_i) / self.NSim + # + # V = (np.sum((f_z_i - E) ** 2)) / (self.NSim - 1) + # + # pool = mp.Pool(self.nr_cpu) + # result = pool.starmap(self.Parallel_CAPS_fitting, + # [(nr_sim, self.TrainingData.time.values[1:], forecast_edges, self.par_grd) for nr_sim + # in range(self.NSim)]) + # total_events = [result[a][0] for a in range(len(result))] + # params = [result[a][1] for a in range(len(result))] + # + # z_i_ = np.array(params).T + # + # total_events_copy = np.array(total_events) + # total_events_new = [] + # for l in range(len(total_events)): + # total_events_new.append(np.sum(total_events_copy[l][-1])) + # f_z_i_ = np.array(total_events_new) + # # f_z_i_ = np.sum(np.sum(np.array(total_events), axis=2), axis=1) + # + # s_j_array = [] + # s_j_t_array = [] + # + # for p in range(len(self.CAPSbounds)): + # y_i_j = np.copy(z_i_) + # # y_i_j = np.copy(z_i) + # y_i_j[p, :] = z_i[p, :] + # # y_i_j[p,:] = np.full_like(z_i[0], self.seed_settings_optimal[self.OptimizeKeys[p]]) + # # y_i_j[p, :] = z_i_[p, :] + # random_method = False + # total_events_array = [] + # for i in range(len(y_i_j[0])): + # for j in range(len(self.CAPSbounds)): + # self.seed_settings[self.OptimizeKeys[j]] = y_i_j[j, i] + # total_events = CAPS.Forecast_BinnedRate_only_1D(self.TrainingData.time.values[1:], + # forecast_edges[0], self.max_pressure_past, + # self.working_xyz_past, self.cells_volume_past, + # self.seed_settings) + # total_events_array.append(total_events) + # + # total_events_array_copy = np.array(total_events_array) + # total_events_array_new = [] + # for l in range(len(total_events_array)): + # total_events_array_new.append(np.sum(total_events_array_copy[l][-1])) + # f_y_i_j = np.array(total_events_array_new) + # del total_events_array_copy, total_events_array_new + # # f_y_i_j = np.sum(np.sum(np.array(total_events_array), axis=2), axis=1) + # + # del y_i_j + # + # V_j = np.sum(f_z_i * f_y_i_j - E ** 2) / self.NSim + # + # # Calculate Sobol's main effect sensitivity index for each input + # s_j = np.abs( + # V_j / V) # here I take the absolute value (otherwise some of them are negative, negative effect? - not possible) + # s_j_array.append(s_j) + # + # T_j = np.sum((f_z_i_ - f_y_i_j) ** 2) / (2 * self.NSim) + # + # # Calculate Sobol's total effect sensitivity index for each input + # s_j_t = np.abs(T_j / V) # same as above for the absolute value + # s_j_t_array.append(s_j_t) + # + # result1 = (s_j_array, s_j_t_array) + # + # print("Sensitivity analysis (Sobol global) result (paramater's contribution to output):") + # for i in range(len(self.CAPSbounds)): + # print(self.OptimizeKeys[i] + ":", s_j_array[i], ) + # + # print("Sum of main effect sensitivity indexes:", np.sum(result1[0]), ) + # print("Sum of total effect sensitivity indexes:", np.sum(result1[1]), ) + # + # elif method == 'hoffmann_gardener': + # + # """ + # Hoffmann and Gardner (1983) calculate the output percent difference when varying one input parameter + # from its minimum value to its maximum value. It was introduced to account for all possible values when + # determining parameter sensitivity. + # """ + # + # # self.seed_settings = np.copy(self.seed_settings_optimal) + # + # min_seed_settings = dict.copy(self.seed_settings_optimal) + # max_seed_settings = dict.copy(min_seed_settings) + # for j in range(len(self.CAPSbounds)): + # min_seed_settings[self.OptimizeKeys[j]] = np.min(params_distr[j]) + # max_seed_settings[self.OptimizeKeys[j]] = np.max(params_distr[j]) + # + # # min values + # Y_min = [] + # Y_max = [] + # s_j = [] + # for j in range(len(self.CAPSbounds)): + # self.seed_settings = dict.copy(self.seed_settings_optimal) + # self.seed_settings[self.OptimizeKeys[j]] = min_seed_settings[self.OptimizeKeys[j]] + # total_events = CAPS.Forecast_BinnedRate_only_1D(self.TrainingData.time.values[1:], forecast_edges[0], + # self.max_pressure_past, self.working_xyz_past, + # self.cells_volume_past, self.seed_settings) + # Y_min.append(np.sum(total_events[-1, :])) + # self.seed_settings = dict.copy(self.seed_settings_optimal) + # self.seed_settings[self.OptimizeKeys[j]] = max_seed_settings[self.OptimizeKeys[j]] + # total_events = CAPS.Forecast_BinnedRate_only_1D(self.TrainingData.time.values[1:], forecast_edges[0], + # self.max_pressure_past, self.working_xyz_past, + # self.cells_volume_past, self.seed_settings) + # Y_max.append(np.sum(total_events[-1, :])) + # s_j.append(abs((Y_max[-1] - Y_min[-1]) / (Y_max[-1]))) + # + # print("Sensitivity analysis (Hoffmann & Gardener, 1983) result (paramater's contribution to output):") + # for j in range(len(self.CAPSbounds)): + # print(self.OptimizeKeys[j] + ":", s_j[j], ) + # + # result1 = s_j + # + # else: + # """ + # Local sensitivity analysis: partial derivatives on parameters (very small changes): + # + # Differential sensitivity analysis is based on the partial differentiation of the aggregated model. + # A small change in one parameter's value with respect to their calibrated value is tested while the other + # parameters are set equal to their calibrated value. The corresponding change in the model's output is evaluated + # for that parameter (partial derivative of the dependent variable (input) with respect to the independent variable (output). + # The derivatives are then multiplied by the ratio of the parameter value to the model result (normalized by the mean), + # to normalize the results by removing the effects of units. + # """ + # z_i = np.array(z_i).T + # + # f_z_i_copy = np.array(f_z_i) + # f_z_i_new = [] + # for l in range(len(f_z_i)): + # f_z_i_new.append(np.sum(f_z_i_copy[l][-1])) + # f_z_i = np.array(f_z_i_new) + # del f_z_i_copy, f_z_i_new + # # f_z_i = np.sum(np.sum(np.array(f_z_i), axis=2), axis=1) + # + # z_i_ = z_i + (0.00001 * z_i) # changing all parameter values by 1/10 of 1% (very small change) + # + # total_events_array_global = [] + # for j in range(len(self.CAPSbounds)): + # z_i_copy = np.copy(z_i) + # # replace the added derivative change for one parameter + # z_i_copy[j] = z_i_[j] + # total_events_array = [] + # for i in range(len(z_i[0])): + # for l in range(len(self.CAPSbounds)): + # self.seed_settings[self.OptimizeKeys[l]] = z_i_copy[l, i] + # total_events = CAPS.Forecast_BinnedRate_only_1D(self.TrainingData.time.values[1:], + # forecast_edges[0], + # self.max_pressure_past, self.working_xyz_past, + # self.cells_volume_past, self.seed_settings) + # total_events_array.append(np.sum(total_events[-1, :])) + # total_events_array_global.append(np.array(total_events_array)) + # f_z_i_ = np.array(total_events_array_global) + # + # s_j = np.zeros_like(z_i) + # s_j_norm = np.copy(s_j) + # for j in range(len(self.CAPSbounds)): + # for i in range(len(s_j[0])): + # s_j[j, i] = np.abs((f_z_i[i] - f_z_i_[j, i]) / (z_i[j, i] - z_i_[j, i])) + # s_j_norm[j, i] = s_j[j, i] * (z_i[j, i] / f_z_i[i]) + # + # # set all values below 0 and above 1 to NaN + # s_j_norm[s_j_norm < 0] = np.nan + # s_j_norm[s_j_norm > 1] = np.nan + # + # print("Sensitivity analysis (local) mean result (paramater's contribution to output):") + # for j in range(len(self.CAPSbounds)): + # print(self.OptimizeKeys[j] + ":", np.nanmean(s_j_norm[j]), ) + # + # result1 = s_j_norm + # + # return result1 + + def Calibrate_CAPS(self, forecast_edges): + self.update_seeds_settings() # update b-value + + if self.cost_fun=='LL': + self.CostFunction = LL_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values[1:], + forecast_edges[0]]) + else: + self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values[1:], + forecast_edges[0]]) + # self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + # bins=[self.TrainingData.time.values[1:], + # forecast_edges]) + + self.LL_Edges = self.CostFunction.edges_x2 # (radial) spatial bins in negative and positive directions + self.LL_Moments = self.CostFunction.edges_x1 # time moments + + (self.Training_MaxPressure, + self.Training_R, + self.Training_Volume) = self.Interpolate_1D(self.LL_Moments, self.LL_Edges, self.CAPSSettings) + + print("Maximum iterations CAPS:", self.maxiter) + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + if self.cost_fun=='LL': + result = differential_evolution(self.ll_score, self.SEISbounds, polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed, popsize=10) + else: + result = differential_evolution(self.ls_score, self.SEISbounds, polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed, popsize=10, + updating='immediate', callback=self.save_iteration_step) + print("End CAPS differential evolution") + + print('--------------------------------') + print('Calibrated geomechanical parameters:') + for i in range(len(result.x)): + self.seed_settings[self.OptimizeKeys[i]] = result.x[i] + if (self.logscale[i]): + self.seed_settings[self.OptimizeKeys[i]] = np.power(10., result.x[i]) + print(str(self.OptimizeKeys[i]) + ': ' + str(self.seed_settings[self.OptimizeKeys[i]])) + print('--------------------------------') + + # self.total_events_past_single, self.total_rates_past_single = CAPS.Caps_Model_linear(self.LL_Moments, + # self.LL_Edges[self.LL_Edges >= 0.], + # self.Training_R, + # self.Training_MaxPressure, + # self.seed_settings, + # NSim=1, + # retriggering=self.retriggering) + # + # print("sum of total events after calibration", self.total_events_past_single[0,-1], ) + + # save optimal parameters for single forecast later + self.seed_settings_optimal = dict.copy(self.seed_settings) + + print("**************************************************") + print("Summary of optimized parameters after calibration:") + for i in range(len(self.SEISbounds)): + print(self.OptimizeKeys[i] + ': ', self.seed_settings_optimal[self.OptimizeKeys[i]], ) + j_init = len(self.SEISbounds) + for j in range(len(self.FlowBounds)): + print(self.OptimizeKeys[j_init+j] + ': ', self.seed_settings_optimal[self.OptimizeKeys[j_init+j]], ) + print("**************************************************") + + self.total_events_past_grid, self.total_rates_past_grid = CAPS.Caps_Model_linear(self.LL_Moments, + self.LL_Edges[self.LL_Edges >= 0.], + self.Training_R, + self.Training_MaxPressure, + self.seed_settings, + NSim=self.NSim, + retriggering=self.retriggering) + + total_events_median = np.round(np.median(self.total_events_past_grid, axis=0)[-1]) + + print("sum of total events after calibration (median from grid)", total_events_median, ) + + # if total_events_median==0: + # total_events_median_masked = self.mask_for_median(self.total_events_past_grid[0]) + # + # print("sum of total events after calibration and mask (median from grid)", total_events_median_masked[-1], ) + + return + + def Calibrate_SEED(self, forecast_edges): + self.update_seeds_settings() # update b-value + + if self.cost_fun=='LL': + self.CostFunction = LL_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values,np.linspace(0,max(self.training_catalog[self.Xs].values),10)[:,0]]) + else: + self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values,np.linspace(0,max(self.training_catalog[self.Xs].values),10)[:,0]]) + + self.LL_Edges = self.CostFunction.edges_x2 + self.LL_Moments = self.CostFunction.edges_x1 + + # 1D pressure interpolation (in time only) + pres_sol = (self.flow_model.hidden_mechanism - self.TrainingData[self.Columns[-1]].values[0])/(1.e6) + self.pres_t_fit = np.array([np.interp(self.LL_Moments[1:], self.flow_model.Q[:,0], ps_row) for ps_row in pres_sol.T]) + # OR: + # Tind = np.argmin(np.abs(self.flow_model.Q[:,0] - self.LL_Moments[1:][:, np.newaxis]), axis=1) + # self.pres_t_fit = (pres_sol[Tind,:]).T + + # Decide for the seed model version (implemented since Poster FAM23) + if self.seed_model_version=='1': + self.Nreal = 100 # self.NSim + elif self.seed_model_version=='2': + self.Nreal = 1 + else: + self.Nreal = self.NSim + + print("Maximum iterations SEED:", self.maxiter) + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + if self.cost_fun=='LL': + result = differential_evolution(self.ll_score_seed, self.SEISbounds,polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed,popsize=10) + else: + result = differential_evolution(self.ls_score_seed, self.SEISbounds, polish=True, + disp=self.disp, maxiter=self.maxiter,seed=self.seed, popsize=10, + updating='immediate', atol=1e-3, callback=self.save_iteration_step) + print("End SEED differential evolution") + + print('------------------------------------') + print('Calibrated geomechanical parameters:') + for i in range(len(result.x)): + self.seed_settings[self.OptimizeKeys[i]] = result.x[i] + if (self.logscale[i]): + self.seed_settings[self.OptimizeKeys[i]] = np.power(10., result.x[i]) + print(str(self.OptimizeKeys[i]) + ': ' + str(self.seed_settings[self.OptimizeKeys[i]])) + print('------------------------------------') + + # save optimal parameters for forecast later + self.seed_settings_optimal = dict.copy(self.seed_settings) + + print("**************************************************") + print("Summary of optimized parameters after calibration:") + for i in range(len(self.SEISbounds)): + print(self.OptimizeKeys[i] + ': ', self.seed_settings_optimal[self.OptimizeKeys[i]], ) + j_init = len(self.SEISbounds) + for j in range(len(self.FlowBounds)): + print(self.OptimizeKeys[j_init+j] + ': ', self.seed_settings_optimal[self.OptimizeKeys[j_init+j]], ) + print("**************************************************") + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(self.seed_settings[self.SEEDmodelKeys[j]])) + + self.training_catalog, self.total_events_past_grid, self.total_rates_past_grid = SEED.Seed_Model_linear(self.LL_Moments[1:], + self.LL_Edges[self.LL_Edges >= 0.], + self.flow_model.r, + self.flow_model.Q[:,0], + self.pres_t_fit, + SeedsSettings, + self.NSim, + self.retriggering) + + total_events_median = np.round(np.median(self.total_events_past_grid, axis=0)[-1]) + + print("sum of total events after calibration (median from grid)", total_events_median, ) + + return + + def _fit_sequential(self, HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep=True): + self.TrainingData = HydraulicLogs_coarse_pd.copy(deep) + self.training_catalog = catalog_incomplete_df.copy(deep) + + # filepath = '/home/victor/Desktop/pyatls/Data/Bedretto/FlowModels/' + + if self.flw_model == 'point_source': + print("HM0: calibrating flow model (point source)....") + self.flow_model.fit(self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM0_point_source.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + elif self.flw_model == 'line_source': + print("HM0: calibrating flow model (line source)....") + self.flow_model.fit(self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM0_line_source.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + elif self.flw_model == 'num_const_perm': + print("HM0: calibrating flow model (numerical linear)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM0_numerical_linear.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + elif self.flw_model == 'num_var_perm': + print("HM1: calibrating flow model (numerical non-linear)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM1_2.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + else: + print("HM1: calibrating flow model (numerical non-linear with FV)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + + print('--------------------------------') + print('Calibrated hydraulic parameters:') + for i in range(len(self.flow_model.params)): + self.seed_settings[self.OptimizeKeys[i-len(self.flow_model.params)]] = self.flow_model.params[i] + print(str(self.OptimizeKeys[i-len(self.flow_model.params)]) + ': ' + str(self.flow_model.params[i])) + print('--------------------------------') + + self.timesteps = self.TrainingData.time.values + inipres=self.TrainingData[self.Columns[-1]].values[0] + + if self.seis_model=='CAPS': + print("HM0/1: calibrating CAPS....") + self.PressureFunction = self.create_interpolator(self.timesteps, (self.flow_model.hidden_mechanism - inipres) / 1.e6) + self.Calibrate_CAPS(forecast_edges) + else: + print("HM0/1: calibrating SEED....") + self.Calibrate_SEED(forecast_edges) + + return + + # def _fit_joint(self, HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep=True): + # self.TrainingData = HydraulicLogs_coarse_pd.copy(deep) + # self.training_catalog = catalog_incomplete_df.copy(deep) + # + # self.update_seeds_settings() + # + # if self.cost_fun == 'LL': + # self.SeisCostFunction = LL_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + # bins=[self.TrainingData.time.values[1:], + # forecast_edges[0]]) + # else: + # self.SeisCostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + # bins=[self.TrainingData.time.values[1:], + # forecast_edges[0]]) + # + # self.LL_Edges = self.SeisCostFunction.edges_x2 + # self.LL_Moments = self.SeisCostFunction.edges_x1 + # + # # We need to join the CAPS and the Flow bounds stated previously: + # self.ParamBounds = self.CAPSbounds + self.FlowBounds + # + # print("Maximum iterations CAPS:", self.maxiter) + # self.CAPS_iter_results = [] + # if self.cost_fun=='LL': + # result = differential_evolution(self.ll_score_joint, self.ParamBounds,polish=True, + # disp=self.disp, maxiter=self.maxiter, seed=self.seed,popsize=10, callback=self.caps_iteration) + # else: + # result = differential_evolution(self.ls_score_joint, self.ParamBounds,polish=True, + # disp=self.disp, maxiter=100, seed=self.seed,popsize=10, callback=self.caps_iteration) + # + # print("End CAPS differential evolution") + # + # for i in range(len(result.x)): + # self.seed_settings[self.OptimizeKeys[i]] = result.x[i] + # if (self.logscale[i]): + # self.seed_settings[self.OptimizeKeys[i]] = np.power(10., result.x[i]) + # + # self.flow_model.params = self.seed_settings[self.OptimizeKeys[4]], self.seed_settings[self.OptimizeKeys[5]] + # #self.flow_model.params = self.seed_settings[self.OptimizeKeys[4]] + # + # self.flow_model.hidden_mechanism = self.flow_model.predict() + # + # self.timesteps = self.TrainingData.time.values + # inipres=self.TrainingData[self.Columns[-1]].values[0] + # self.PressureFunction = self.create_interpolator(self.timesteps,(self.flow_model.hidden_mechanism-inipres)/1.e6) + # + # (max_pressure_past, + # working_xyz_past, + # cells_volume_past) = self.Interpolate_1D(self.TrainingData.time.values[1:], forecast_edges[0], + # self.ExSolSettings, self.CAPSSettings) + # + # self.total_events_past_single = CAPS.Forecast_BinnedRate_only_1D( + # self.TrainingData.time.values[1:], forecast_edges[0], max_pressure_past, working_xyz_past, + # cells_volume_past, self.seed_settings) + # + # print('Poisson Density CAPS:', self.seed_settings["PoissonDensity"]) + # print("sum of total events after calibration", np.sum(self.total_events_past_single[-1, :]), ) + # + # # looking for index in event past corresponsing to time of last event + # index = np.where(self.TrainingData.time.values[1:] <= self.training_catalog.ts.values[-1]) + # NewPoisson = (self.seed_settings['PoissonDensity'] + # * len(self.training_catalog) / ( + # np.sum(self.total_events_past_single[index[0][-1] + 1, :]))) # noqa + # + # # Only adapting the Poisson Density if it is a finite number and if the predicted cumulative events + # # are within a specific range from the observed ones: + # events_ratio = self.SeisCostFunction.y[-1]/(np.sum(self.total_events_past_single[index[0][-1]+1, :])) + # if np.isfinite(NewPoisson): + # if 0.85 <= events_ratio <= 1.15: + # self.seed_settings['PoissonDensity'] = NewPoisson + # print('Poisson density CAPS within the range. Corrected.') + # else: + # print('Poisson density CAPS is finite but not within the range. Not corrected.') + # else: + # print('Poisson Density CAPS is not finite. Not corrected.') + # + # print('Poisson Density CAPS:', self.seed_settings["PoissonDensity"]) + # + # self.total_events_past_single = CAPS.Forecast_BinnedRate_only_1D( + # self.TrainingData.time.values[1:], forecast_edges[0], max_pressure_past, working_xyz_past, + # cells_volume_past, self.seed_settings) + # + # # save optimal parameters for single forecast later + # self.seed_settings_optimal = self.seed_settings + # # save maximum pressure past for later + # self.max_pressure_past = max_pressure_past + # self.working_xyz_past = working_xyz_past + # self.cells_volume_past = cells_volume_past + # + # print("sum of total events after Re-calibration (calibrated params)", np.sum(self.total_events_past_single[-1, :]), ) + # + # print("Optimized parameters after calibration:") + # for i in range(len(self.CAPSbounds)): + # print(self.OptimizeKeys[i]+":", self.seed_settings[self.OptimizeKeys[i]], ) + # + # j_init = len(self.CAPSbounds) + # for j in range(len(self.FlowBounds)): + # print(self.OptimizeKeys[j_init+j]+":", self.seed_settings[self.OptimizeKeys[j_init+j]], ) + # + # #--------------------------------------------------------------------------------------------------------------- + # + # # get uncertainty range for parameters + # # par_grd_1 = self.Params_flowmodel() + # + # cal_val = [] + # for i in range(len(self.CAPSbounds)): + # cal_val.append(self.seed_settings[self.OptimizeKeys[i]]) + # self.cal_val = np.array(cal_val) + # + # # result = differential_evolution(self.ls_params_score, [(90, 100)], polish=True, disp=self.disp, + # # maxiter=self.maxiter, seed=self.seed, popsize=10, callback=self.caps_iteration) + # + # # percent = result.x + # percent = 10 + # + # # print("1sigma for normal trunc. distr. of params: " + str(percent[0]) + " divided by 100 times calib. parameter.") + # + # par_grd_2 = [] + # for p in range(len(self.CAPSbounds)): + # # par_distr = self.Params_CAPS(forecast_edges, max_pressure_past, working_xyz_past, cells_volume_past, p) + # par_distr = self.Params_CAPS_2(percent, p) + # # par_grd_2.append((par_distr.T)[0]) + # par_grd_2.append(par_distr) + # + # self.par_grd = np.array(par_grd_2) + # # self.par_grd = np.concatenate((par_grd_2, par_grd_1)) + # # self.par_grd = np.vstack((par_grd_2, par_grd_1)) + # + # # Plotting distributions + # #ATLS.PlotParamDist(self.par_grd, self.cal_val, seis_model='CAPS', filename='Bedretto_params_distr.png') + # + # if 1 <= self.workers <= mp.cpu_count(): + # nr_cpu = self.workers + # else: + # print('Workers must be between 1 and 16 or -1 to indicate max. nr. of cores, which is 16') + # print('Default: using all 16 cores') + # nr_cpu = mp.cpu_count() + # + # self.nr_cpu = nr_cpu + # + # pool = mp.Pool(nr_cpu) + # result = pool.starmap(self.Parallel_CAPS_fitting, [(nr_sim, self.TrainingData.time.values[1:], forecast_edges, self.par_grd) for nr_sim in range(self.NSim)]) + # pool.close() + # + # # total_events = [result[a][0] for a in range(len(result))] + # # press_fit = [result[a][1] for a in range(len(result))] + # + # self.total_events_past_grd = (np.array(result)).T + # # self.press_fit = (np.array(press_fit)).T + # + # total_events_median = np.round(np.sum(np.median(self.total_events_past_grd, axis=2), axis=0))[-1] + # + # print("sum of total events after Re-calibration (median from grid)", total_events_median, ) + # + # if total_events_median == 0: + # total_events_median_masked = self.mask_for_median(self.total_events_past_grd) + # + # print("sum of total events after Re-calibration and mask (median from grid)", + # total_events_median_masked[-1], ) + # + # return + + def fit(self, HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep=True): + + if self.inv_mod == 'joint': + print("Model not available at the moment ... using sequential.") + self._fit_sequential(HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep) + # self._fit_joint(HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep) + else: + self._fit_sequential(HydraulicLogs_coarse_pd, catalog_incomplete_df, forecast_edges, deep) + + def predict(self, PlannedStrategy, Forecasts_Moments, Forecasts_Edges): + + # CAPS MODEL # + + if self.seis_model=='CAPS': + self.seed_settings = self.seed_settings_optimal + + (self.max_pressure_past, + self.Forecast_R, + self.Forecast_Volume) = self.Interpolate_1D(Forecasts_Moments, Forecasts_Edges[0], self.CAPSSettings) + + self.press_prediction = self.flow_model.predict(np.array(PlannedStrategy[["time", "flow"]].values)) + + self.timesteps = PlannedStrategy.time.values + inipres = self.TrainingData[self.Columns[-1]].values[0] + self.PressureFunction = self.create_interpolator(self.timesteps, (self.press_prediction - inipres) / 1.e6) + + (self.Forecast_MaxPressure, + self.Forecast_R, + self.Forecast_Volume) = self.Interpolate_1D(Forecasts_Moments, Forecasts_Edges[0], self.CAPSSettings) + + max_pressure = np.maximum(self.max_pressure_past, self.Forecast_MaxPressure) + + print('Starting CAPS forecast') + + self.total_events_forecast_grid, self.total_rates_forecast_grid = CAPS.Caps_Model_linear(Forecasts_Moments, + Forecasts_Edges[0][Forecasts_Edges[0] >= 0.], + self.Forecast_R, + max_pressure, + self.seed_settings, + NSim=self.NSim, + retriggering=self.retriggering) + + print('Ending CAPS forecast') + + # This is a "trick" and needs to be deleted after the FAM23 + + # if np.median(self.total_events_forecast_grid, axis=0)[0]==0: + # if self.flow_model.Q[0, 1] <= 1.e-9: + # # repair events matrix + # last_col = self.total_events_past_grid[:, -1] + # total_events_forecast_grid_copy = np.zeros_like((self.total_events_forecast_grid)) + # for i in range(len(self.total_events_forecast_grid[0])): + # total_events_forecast_grid_copy[:, i] = self.total_events_forecast_grid[:, i] + last_col + # del self.total_events_forecast_grid + # self.total_events_forecast_grid = total_events_forecast_grid_copy + # del total_events_forecast_grid_copy + # # repair rates matrix + # # self.total_rates_forecast_grid[:, 0] = self.total_rates_past_grid[:,-1] + # # Replace the first time moment for both events and rates by the last one from training + # self.total_events_forecast_grid[:, 0] = self.total_events_forecast_grid[:, 1] + # diff_col = abs(self.total_events_past_grid[:, -1] - self.total_events_forecast_grid[:, 0]) + # total_events_forecast_grid_copy = np.zeros_like((self.total_events_forecast_grid)) + # for i in range(len(self.total_events_forecast_grid[0])): + # total_events_forecast_grid_copy[:, i] = self.total_events_forecast_grid[:, i] - diff_col + # del self.total_events_forecast_grid + # self.total_events_forecast_grid = total_events_forecast_grid_copy + # else: + # # Replace the first time moment for both events and rates by the last one from training + # self.total_events_forecast_grid[:, 0] = self.total_events_past_grid[:, -1] + + return + + # SEED MODEL # + + else: + self.seed_settings = self.seed_settings_optimal + + self.timesteps = PlannedStrategy.time.values + self.press_prediction = self.flow_model.predict(np.array(PlannedStrategy[["time", "flow"]].values)) + + # 1D pressure interpolation (in time only) + pres_sol = (self.press_prediction - self.TrainingData[self.Columns[-1]].values[0]) / (1.e6) + self.pres_t_forecast = np.array([np.interp(Forecasts_Moments, PlannedStrategy['time'].values, ps_row) + for ps_row in pres_sol.T]) + # OR: + # Tind = np.argmin(np.abs(PlannedStrategy['time'].values - Forecasts_Moments[:, np.newaxis]), axis=1) + # self.pres_t_fit = (pres_sol[Tind,:]).T + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(self.seed_settings[self.SEEDmodelKeys[j]])) + + # self.synthetic_catalog, self.total_events_forecast_grid, self.total_rates_forecast_grid = SEED.Seed_Model_linear(Forecasts_Moments, + # Forecasts_Edges[0][Forecasts_Edges[0] >= 0.], + # self.flow_model.r, + # PlannedStrategy['time'].values, + # self.pres_t_forecast, + # SeedsSettings, + # self.NSim, + # self.retriggering) + + self.synthetic_catalog, self.total_events_grid, self.total_rates_grid = SEED.Seed_Model_linear(np.concatenate((self.LL_Moments[1:], Forecasts_Moments[1:]), axis=0), + Forecasts_Edges[0][Forecasts_Edges[0] >= 0.], + self.flow_model.r, + np.concatenate((self.flow_model.Q[:,0], PlannedStrategy['time'].values[1:]), axis=0), + np.concatenate((self.pres_t_fit, self.pres_t_forecast[:,1:]), axis=1), + SeedsSettings, + self.NSim, + self.retriggering) + self.total_events_past_grid = self.total_events_grid[:, :len(self.LL_Moments[1:])] + self.total_events_forecast_grid = self.total_events_grid[:, (len(self.LL_Moments[1:])-1):] + + # self.total_rates_forecast_grid = self.total_rates_grid[:, (len(self.total_rates_past_grid[0])-1):-1] + + # OR: + + # Take the rates of the forecast and sum up to the last events of the training + # total_events = np.zeros_like(self.total_events_forecast_grid) + # total_events[:,0] = self.total_events_past_grid[:,-1] + # for i in range(1, len(total_events[0])): + # total_events[:,i] = total_events[:,i-1] + self.total_rates_forecast_grid[:,i-1] + # + # self.total_events_forecast_grid = total_events + + return + + def forecast_only(self, PlannedStrategy, Forecasts_Moments, Forecasts_Edges): + + # CAPS MODEL # + + if self.seis_model=='CAPS': + + self.press_prediction = self.flow_model.predict(np.array(PlannedStrategy[["time", "flow"]].values)) + + self.timesteps = PlannedStrategy.time.values + inipres = self.TrainingData[self.Columns[-1]].values[0] + self.PressureFunction = self.create_interpolator(self.timesteps, (self.press_prediction - inipres) / 1.e6) + + (self.Forecast_MaxPressure, + self.Forecast_R, + self.Forecast_Volume) = self.Interpolate_1D(Forecasts_Moments, Forecasts_Edges[0], self.CAPSSettings) + + print('Starting CAPS forecast') + + self.total_events_forecast_grid, self.total_rates_forecast_grid = CAPS.Caps_Model_linear(Forecasts_Moments, + Forecasts_Edges[0][Forecasts_Edges[0] >= 0.], + self.Forecast_R, + self.Forecast_MaxPressure, + self.seed_settings, + NSim=self.NSim, + retriggering=self.retriggering) + + print('Ending CAPS forecast') + + return + + # SEED MODEL # + + else: + + self.timesteps = PlannedStrategy.time.values + self.press_prediction = self.flow_model.predict(np.array(PlannedStrategy[["time", "flow"]].values)) + + # 1D pressure interpolation (in time only) + pres_sol = (self.press_prediction - self.TrainingData[self.Columns[-1]].values[0]) / (1.e6) + self.pres_t_forecast = np.array([np.interp(Forecasts_Moments, PlannedStrategy['time'].values, ps_row) for ps_row in pres_sol.T]) + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(self.seed_settings[self.SEEDmodelKeys[j]])) + + self.synthetic_catalog, self.total_events_grid, self.total_rates_grid = SEED.Seed_Model_linear(Forecasts_Moments, + Forecasts_Edges[0][Forecasts_Edges[0] >= 0.], + self.flow_model.r, + PlannedStrategy['time'].values, + self.pres_t_forecast, + SeedsSettings, + self.NSim, + self.retriggering) + + # self.total_events_past_grid = self.total_events_grid[:, :len(self.LL_Moments[1:])] + # self.total_events_forecast_grid = self.total_events_grid[:, (len(self.LL_Moments[1:])-1):] + + return \ No newline at end of file diff --git a/hm1d/__init__.py b/hm1d/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/hm1d/model.py b/hm1d/model.py new file mode 100644 index 0000000..6cf2dd0 --- /dev/null +++ b/hm1d/model.py @@ -0,0 +1,882 @@ +import logging +from datetime import timedelta + +import numpy as np +import numba as nb +import copy +from hydws.parser import BoreholeHydraulics +from ramsis_model import ModelInput +from scipy import stats +from scipy.interpolate import interp1d +from seismostats.seismicity.catalog import Catalog +from seismostats.seismicity.rategrid import ForecastGRRateGrid +from seismostats.utils.coordinates import CoordinateTransformer +from shapely import wkt +from sklearn.linear_model import Lasso + +from hm1d.FlowModel import FlowModel0, FlowModel1, FlowModel2, FlowModel3, FlowModel4 + +from hm1d.SeismicityModel import Caps_Model_linear as CAPS +from hm1d.SeismicityModel import Seed_Model_linear as SEED + +from scipy.optimize import differential_evolution +from scipy.interpolate import CloughTocher2DInterpolator + +from hm1d.utils import (daterange,Calibrate_Observed_GR, b_value_Lasso_calibration_1D, Refine_An_Edge, + LL_cost_function_1D, LS_cost_function_1D) + + +class HM1D(): + """ InducedSFM Class for Hydro-mechanical models in 1D + + Available variables after successfull initialization: + + Input Hydraulic and Seismic data is available as DataFrames as: + self.hydraulic_df, + self.scenario_df, + self.seismicity_df + + Variables from input dict are also available as class properties: + self.model_parameters + self.forecast_start + self.forecast_end + self.epoch_duration + self.proj_string + + Additionally are available: + self.forecast_moments + self.section_metadata + self.observation_start + self.observation_end + + A logger is available with self._logger.* (info, warning, error, ...) + + """ + + def __init__(self, model_input: ModelInput, **kwargs): + """ + Gets called after the aforementioned variables are instantiated, eg. + model setup can live in here. + """ + # set up logger + self._logger = logging.getLogger(__name__) + self._logger.info('Model Initialized') + self.proj_string=self.parameters['local_proj_string'] + + self.model_input = model_input + self.parameters = model_input.model_parameters + + self.column_flow = "topflow" + self.column_pressure = "toppressure" + + self.opt_algorithm = self.parameters['opt_algorithm'] + self.sensitivity_analysis = self.parameters['sensitivity_analysis'] + + + self.cost_fun = self.parameters['cost_fun'] + listOfStrings = ['LL' , 'LS'] + if self.cost_fun not in listOfStrings : + print("Cost function '",self.cost_fun,"' not found. Possible values are:", listOfStrings,". Using default mode (LL).") + self.cost_fun='LL' + + self.flw_model = self.parameters['flow_model'] + listOfStrings = ['point_source' , 'line_source', 'num_const_perm', 'num_var_perm'] + if self.flw_model not in listOfStrings : + print("Fluid model '",self.cost_fun,"' not found. Possible values are:", listOfStrings,". Using default mode (line_source).") + self.flw_model='line_source' + + self.NSim=self.parameters['NSim'] + self.seed_model_version = self.parameters['seed_model_version'] + self.seis_model = self.parameters['seis_model'] + self.seed_settings =self.parameters['SeisSettings'] + self.retriggering = self.seed_settings['retriggering'] + self.SEISbounds = self.parameters.get('SeisBounds',{}) + self.flow_bounds = self.parameters['Settings'][2] + self.ExSolSettings = self.parameters['Settings'][3] + self.CAPSSettings = self.parameters['Settings'][4] + + self.CostFunction = None + self.LL_Edges = None + self.LL_Moments = None + self.Training_MaxPressure = None + self.Training_XYZ = None + self.Training_Volume = None + + # input for the flow models + self.flow_settings = self.parameters['FlowSettings'] + self.max_grid_ext = self.flow_settings.get('max_grid_ext',300) + self.layer_thick = self.flow_settings.get('layer_thick',100) + self.cross_area = self.flow_settings.get('cross_area',94) + + self.maxbval_bounds = [(1., self.seed_settings["b_max"])] # upper b-value limit + self.dM = self.parameters['dM'] + + if self.retriggering == True: + if self.seed_settings['criticality']!=0: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'stressdrop_coeff', 'cohesion_mean', 'friction_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['stressdrop_coeff'][0], self.seis_bounds['stressdrop_coeff'][1]), + # (self.seis_bounds['criticallity'][0], self.seis_bounds['criticallity'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False, False] + else: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'stressdrop_coeff', 'cohesion_mean', 'friction_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['stressdrop_coeff'][0], self.seis_bounds['stressdrop_coeff'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False, False] + else: + if self.seed_settings['criticality']!=0: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'friction_mean', 'cohesion_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False] + else: + self.OptimizeKeys = ['sigma1_std', 'sigma3_std', 'cohesion_mean', 'friction_mean', 'seed_density'] + self.SEISbounds = [(self.seis_bounds['sigma1_std'][0], self.seis_bounds['sigma1_std'][1]), + (self.seis_bounds['sigma3_std'][0], self.seis_bounds['sigma3_std'][1]), + (self.seis_bounds['cohesion_mean'][0], self.seis_bounds['cohesion_mean'][1]), + (self.seis_bounds['friction_mean'][0], self.seis_bounds['friction_mean'][1]), + (self.seis_bounds['seed_density'][0], self.seis_bounds['seed_density'][1])] + self.logscale = [False, False, False, False, False] + + """ + 4 different flow models can be choosen: + -> point_source: analytical point source solution. Two parameters, storage coefficient and permeability, are calibrated. + -> line_source: Theis' solution. Two parameters, storage coefficient and permeability, are calibrated. + -> num_const_perm: numerical solution without permeability changes. Storage and permeability are calibrated. + -> num_var_perm_FD: NOT WORKING, should be removed + -> num_var_perm: numerical with variable fracture permeability. Parameters to be calibrated are: + ['zero_stress_aperture', + 'residual_aperture', + 'shearing_aperture_factor', + 'max_shear_frac_aperture', + 'shear_scaling_factor', + 'storage'] + """ + + if self.flw_model == 'point_source': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] # parameters to calibrate + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel0(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), + self.cross_area, + self.seed_settings['viscosity'], + bounds=self.FlowBounds, + iniguess=(self.seed_settings['storage'], self.seed_settings['permeability'])) + + elif self.flw_model == 'line_source': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel1(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), + self.layer_thick, + self.seed_settings['viscosity'], + bounds=self.FlowBounds, + iniguess=(self.seed_settings['storage'], self.seed_settings['permeability'])) + + elif self.flw_model == 'num_const_perm': + self.OptimizeKeys = self.OptimizeKeys + ['storage', 'permeability'] + self.FlowBounds = [(self.flow_bounds['storage'][0], self.flow_bounds['storage'][1]), + (self.flow_bounds['permeability'][0], self.flow_bounds['permeability'][1])] + self.logscale = self.logscale + [True, True] + # activate the flow model: + self.flow_model = FlowModel2(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds) + + elif self.flw_model == 'num_var_perm_FD': # HM1 class with FD + self.OptimizeKeys = self.OptimizeKeys + ['zero_stress_aperture', 'residual_aperture','frac_normal_stiffness','storage'] # parameters to calibrate + self.FlowBounds = [(self.flow_bounds['zero_stress_aperture'][0], self.flow_bounds['zero_stress_aperture'][1]), + (self.flow_bounds['residual_aperture'][0], self.flow_bounds['residual_aperture'][1]), + (self.flow_bounds['frac_normal_stiffness'][0], self.flow_bounds['frac_normal_stiffness'][1]), + (self.flow_bounds['storage'][0], self.flow_bounds['storage'][1])] + self.logscale = self.logscale + [True, True, True, True] + # activate the flow model: + self.flow_model = FlowModel3(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds) + + elif self.flw_model == 'num_var_perm': # HM1 cass with FV + self.OptimizeKeys = self.OptimizeKeys + ['zero_stress_aperture', 'residual_aperture', 'shearing_aperture_factor', 'max_shear_frac_aperture', 'shear_scaling_factor', 'storage'] + self.FlowBounds = [(self.flow_bounds['zero_stress_aperture'][0], self.flow_bounds['zero_stress_aperture'][1]), + (self.flow_bounds['residual_aperture'][0], self.flow_bounds['residual_aperture'][1]), + (self.flow_bounds['shearing_aperture_factor'][0], self.flow_bounds['shearing_aperture_factor'][1]), + (self.flow_bounds['max_shear_frac_aperture'][0], self.flow_bounds['max_shear_frac_aperture'][1]), + (self.flow_bounds['shear_scaling_factor'][0], self.flow_bounds['shear_scaling_factor'][1]), + (self.flow_bounds['storage'][0], self.flow_bounds['storage'][1])] + self.logscale = self.logscale + [True, True, True, True, True, True] + # activate the flow model: + self.flow_model = FlowModel4(self.TrainingData[self.Columns[:2]].values, + np.geomspace(0.1, self.max_grid_ext, 30, endpoint=True), self.layer_thick, + self.seed_settings, bounds=self.FlowBounds, forward_model=self.forward_model, + iniguess=(self.seed_settings['zero_stress_aperture'], self.seed_settings['residual_aperture'], + self.seed_settings['shearing_aperture_factor'], self.seed_settings['max_shear_frac_aperture'], + self.seed_settings['shear_scaling_factor'], self.seed_settings['storage'])) + + + if self.seis_model=='SEED': + self.SEEDmodelKeys = ['seed_density', 'inter_sigma1', 'inter_sigma3', 'sigma1_std', 'sigma3_std', + 'cohesion_mean', 'friction_mean', 'criticality', 'stressdrop_coeff', 'phydro', + 'b_min', 'b_max', 'b_min_diff_stress', 'b_max_diff_stress', 'Mag_Completeness'] + + self.disp = self.parameters.get('verbose',True) + self.maxiter = self.parameters.get('maxiter',-1) + self.seed = 42 + + + section_id = self.parameters['well_section_publicid'] + + self.geometry = model_input.geometry + + self.forecast_start = model_input.forecast_start + self.forecast_end = model_input.forecast_end + + self.hydraulics = BoreholeHydraulics(model_input.injection_well[0]) + + self.scenario = BoreholeHydraulics(model_input.injection_plan) + + self.seismicity = Catalog.from_quakeml(model_input.seismic_catalog, + includequality=True) + + # get dataframes from HYDSJONParser + self.hydraulic_df = self.hydraulics[section_id].hydraulics + self.hydraulic_df = self.hydraulic_df[~self.hydraulic_df['topflow'].isna()] + self.hydraulic_df = self.hydraulic_df[~self.hydraulic_df['toppressure'].isna()] + + self.scenario_df = self.scenario[section_id].hydraulics + + self.observation_start = self.hydraulic_df.index.min() + self.observation_end = np.array( + self.forecast_start).astype('datetime64') + + self.hydraulic_df = self.hydraulic_df[self.hydraulic_df.index + < self.observation_end] + self.seismicity = self.seismicity[self.seismicity['time'] + < self.forecast_start] + + # self.observation_end = self.hydraulic_df.index.max() + # self.observation_end = min(self.observation_end, self.forecast_start) + + self.seismicity = self.seismicity[~self.seismicity['magnitude'].isna()] + + if 'associatedphasecount' in self.seismicity.columns: + self.seismicity['associatedphasecount'] = \ + self.seismicity['associatedphasecount'].astype(float) + # is this sensible? + self.seismicity['associatedphasecount'] = \ + self.seismicity['associatedphasecount'].fillna(0) + + self.seismicity = \ + self.seismicity[self.seismicity['associatedphasecount'] >= self.parameters['n_phases']] + + # add ts column to seismicity dataframe + self.seismicity['ts'] = self.seismicity.time.map( + lambda x: (x - self.forecast_start).total_seconds()) + + self.ref_point = self.parameters.get('ref_point',[np.median(self.seismicity['Xs']), + np.median(self.seismicity['Ys']), + np.median(self.seismicity['Zs']),]) + + transformer = CoordinateTransformer(self.proj_string) + self.seismicity['Xs'], self.seismicity['Ys'], self.seismicity['Zs'] = \ + transformer.to_local_coords(self.seismicity['longitude'], + self.seismicity['latitude'], + self.seismicity['depth']) + + self.seismicity['Rs'] = np.sqrt((self.seismicity['Xs'] - self.ref_point[0]) ** 2 + + (self.seismicity['Ys'] - self.ref_point[1]) ** 2 + + (self.seismicity['Zs'] - self.ref_point[2]) ** 2) + # get the forecast times + self.forecast_moments = daterange(self.forecast_start, + self.forecast_end, + self.parameters['epoch_duration'], + self.observation_start) + + self.scenario_df = self.scenario_df.resample(str(self.parameters['epoch_duration'])+'s').mean().interpolate(method='linear') + + self.scenario_df = self.scenario_df[(self.scenario_df.index <= self.forecast_end) & + (self.scenario_df.index > self.forecast_start)] + + sc_all_negative = (self.scenario_df['topflow'] < 0).all() + sc_all_identical = self.scenario_df['topflow'].nunique() == 1 + + if sc_all_negative and sc_all_identical: + self.scenario_df["topflow"]=(-self.scenario_df["topflow"].values[0]* + np.ones(len(self.scenario_df))*self.hydraulic_df["topflow"].values[-1]) + + sc_all_negative = (self.scenario_df['topflow'] < 0).all() + sc_all_identical = self.scenario_df['topflow'].nunique() == 1 + + if sc_all_negative and sc_all_identical: + self.scenario_df["topflow"]=(-self.scenario_df["topflow"].values[0]* + np.ones(len(self.scenario_df))*self.hydraulic_df["topflow"].values[-1]) + + self.training_catalog=self.seismicity.copy(deep=True) + + def update_seeds_settings(self): + Mc, b_value = Calibrate_Observed_GR( + self.seismicity, self.dM, 'magnitude') + self.seed_settings["Mag_Completeness"] = Mc + self.seed_settings["b_value"] = b_value + self.training_catalog = self.seismicity[ + self.seismicity['magnitude'] >= Mc] + + if (self.seed_settings["b_vs_depth_range"]): + a, m = b_value_Lasso_calibration_1D( + np.array(self.training_catalog['Rs'].values), + np.array(self.training_catalog['magnitude'])[:, 0], + bins=100) + else: + a, m = b_value, np.zeros(1) + + self.seed_settings["a"] = a + self.seed_settings["m"] = m + + def ll_score(self, x): + y = self.CostFunction.y + log_factorial_y = self.CostFunction.logyfact + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + y0 = CAPS.Caps_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], self.Training_R, + self.Training_MaxPressure, TestSettings, NSim=1, retriggering=self.retriggering)[0] + + LL = np.sum(y * np.log(y0) - y0 - log_factorial_y)/len(self.training_catalog)# Poissonian LL + if np.isfinite(LL): + return -LL + return 1.e20 + + def ls_score(self, x): + y = self.CostFunction.y + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + y0 = CAPS.Caps_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], self.Training_R, + self.Training_MaxPressure, TestSettings, NSim=1, retriggering=self.retriggering)[0] + + LS = np.sum(np.square(y-y0))/len(y) + if np.isfinite(LS): + if LS < self.minf: + self.minf = LS + self.best_x = x + return LS + return 1.e20 + + def ls_score_seed(self, x): + y = self.CostFunction.y + TestSettings = copy.deepcopy(self.seed_settings) + + for i in range(len(self.SEISbounds)): + TestSettings[self.OptimizeKeys[i]] = x[i] + if (self.logscale[i]): + TestSettings[self.OptimizeKeys[i]] = np.power(10., x[i]) + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(TestSettings[self.SEEDmodelKeys[j]])) + + y0 = SEED.Seed_Model_linear(self.LL_Moments[1:], self.LL_Edges[self.LL_Edges >= 0.], + self.flow_model.r, self.flow_model.Q[:,0], + self.pres_t_fit, + SeedsSettings, self.Nreal, self.retriggering)[1] + + y1 = np.median(y0, axis=0) + + LS = np.sum(np.square(y - y1)) / len(y) + + if np.isfinite(LS): + if LS < self.minf: + self.minf = LS + self.best_x = x + return LS + return 1.e20 + + def save_iteration_step(self, x, convergence): + """ + function to save history of parameters and residual during DEA + """ + # check if equal + #np.testing.assert_equal(x, self.best_x) + self.dea_vals.append(x) + self.dea_func.append(self.minf) + return + + def create_interpolator(self, t_grid, solution): + if len(self.flow_model.r)==len(solution[0]): + mesh = np.meshgrid(self.flow_model.r, t_grid) + else: + mesh = np.meshgrid(self.flow_model.r[1:], t_grid) + interpd = CloughTocher2DInterpolator(np.array([mesh[0].ravel(),mesh[1].ravel()]).T, solution.ravel(), fill_value=0) + return interpd + + def Interpolate_1D(self, Forecasts_Moments, Forecasts_Edges): + """ + Same as CAPS.InterpolateMaximumPressure, but using a self.PressureFunction created by the fit + """ + RR=1#CAPS_KD_Settings["RefinementRatio"] + MyR=Refine_An_Edge(Forecasts_Edges, RR) # for 1D we use directly the cartesian grid as the radius + LaterKeepIndices=np.logical_and(np.isfinite(MyR), MyR > 0.) + My_Working_R =MyR[LaterKeepIndices] + DT=np.concatenate((self.timesteps, Forecasts_Moments)) + MyT=np.sort(np.unique(DT)) + MyPressure, MaxPressureAll =np.zeros([2, len(MyT), len(My_Working_R)]) + PM=np.zeros(len(My_Working_R)) + for timeIter in range(len(MyT)): + ConsiderTime=MyT[timeIter] + MyPressure[timeIter,:]=self.PressureFunction(My_Working_R,ConsiderTime) + MaxPressureAll[timeIter,:]=np.maximum(PM, MyPressure[timeIter,:]) + PM=MaxPressureAll[timeIter,:] + + TimeBinIndeces=np.intersect1d(Forecasts_Moments, MyT, return_indices=True)[2] # discard unecessary time discretization now + MaxPressure=MaxPressureAll[TimeBinIndeces] + dV = np.unique(np.diff(Forecasts_Edges, axis=0)) + #dV=np.unique(np.diff(Forecasts_Edges, axis=0), axis=0) + #if(len(dV)>1): + #print ("Warning: non equidistant edges have been passed in the one direction. Correct array of control distances.") + #\todo: assume equidistant edges and refinement + My_Cell_Width=np.prod(np.amin(dV,axis=0)/RR) + return MaxPressure, My_Working_R, np.ones(len(My_Working_R))*My_Cell_Width + + def Calibrate_CAPS(self, forecast_edges): + self.update_seeds_settings() # update b-value + + if self.cost_fun=='LL': + self.CostFunction = LL_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values[1:], + forecast_edges[0]]) + else: + self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values[1:], + forecast_edges[0]]) + # self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + # bins=[self.TrainingData.time.values[1:], + # forecast_edges]) + + self.LL_Edges = self.CostFunction.edges_x2 # (radial) spatial bins in negative and positive directions + self.LL_Moments = self.CostFunction.edges_x1 # time moments + + (self.Training_MaxPressure, + self.Training_R, + self.Training_Volume) = self.Interpolate_1D(self.LL_Moments, self.LL_Edges) + + print("Maximum iterations CAPS:", self.maxiter) + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + if self.cost_fun=='LL': + result = differential_evolution(self.ll_score, self.SEISbounds, polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed, popsize=10) + else: + result = differential_evolution(self.ls_score, self.SEISbounds, polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed, popsize=10, + updating='immediate', callback=self.save_iteration_step) + print("End CAPS differential evolution") + + print('--------------------------------') + print('Calibrated geomechanical parameters:') + for i in range(len(result.x)): + self.seed_settings[self.OptimizeKeys[i]] = result.x[i] + if (self.logscale[i]): + self.seed_settings[self.OptimizeKeys[i]] = np.power(10., result.x[i]) + print(str(self.OptimizeKeys[i]) + ': ' + str(self.seed_settings[self.OptimizeKeys[i]])) + print('--------------------------------') + + # self.total_events_past_single, self.total_rates_past_single = CAPS.Caps_Model_linear(self.LL_Moments, + # self.LL_Edges[self.LL_Edges >= 0.], + # self.Training_R, + # self.Training_MaxPressure, + # self.seed_settings, + # NSim=1, + # retriggering=self.retriggering) + # + # print("sum of total events after calibration", self.total_events_past_single[0,-1], ) + + # save optimal parameters for single forecast later + self.seed_settings_optimal = dict.copy(self.seed_settings) + + print("**************************************************") + print("Summary of optimized parameters after calibration:") + for i in range(len(self.SEISbounds)): + print(self.OptimizeKeys[i] + ': ', self.seed_settings_optimal[self.OptimizeKeys[i]], ) + j_init = len(self.SEISbounds) + for j in range(len(self.FlowBounds)): + print(self.OptimizeKeys[j_init+j] + ': ', self.seed_settings_optimal[self.OptimizeKeys[j_init+j]], ) + print("**************************************************") + + self.total_events_past_grid, self.total_rates_past_grid = CAPS.Caps_Model_linear(self.LL_Moments, + self.LL_Edges[self.LL_Edges >= 0.], + self.Training_R, + self.Training_MaxPressure, + self.seed_settings, + NSim=self.NSim, + retriggering=self.retriggering) + + total_events_median = np.round(np.median(self.total_events_past_grid, axis=0)[-1]) + + print("sum of total events after calibration (median from grid)", total_events_median, ) + + # if total_events_median==0: + # total_events_median_masked = self.mask_for_median(self.total_events_past_grid[0]) + # + # print("sum of total events after calibration and mask (median from grid)", total_events_median_masked[-1], ) + + return + + def Calibrate_SEED(self, forecast_edges): + self.update_seeds_settings() # update b-value + + if self.cost_fun=='LL': + self.CostFunction = LL_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values,np.linspace(0,max(self.training_catalog[self.Xs].values),10)[:,0]]) + else: + self.CostFunction = LS_cost_function_1D(np.array(self.training_catalog[np.append(self.ts, self.Xs)]), + bins=[self.TrainingData.time.values,np.linspace(0,max(self.training_catalog[self.Xs].values),10)[:,0]]) + + self.LL_Edges = self.CostFunction.edges_x2 + self.LL_Moments = self.CostFunction.edges_x1 + + # 1D pressure interpolation (in time only) + pres_sol = (self.flow_model.hidden_mechanism - self.TrainingData[self.Columns[-1]].values[0])/(1.e6) + self.pres_t_fit = np.array([np.interp(self.LL_Moments[1:], self.flow_model.Q[:,0], ps_row) for ps_row in pres_sol.T]) + # OR: + # Tind = np.argmin(np.abs(self.flow_model.Q[:,0] - self.LL_Moments[1:][:, np.newaxis]), axis=1) + # self.pres_t_fit = (pres_sol[Tind,:]).T + + # Decide for the seed model version (implemented since Poster FAM23) + if self.seed_model_version=='1': + self.Nreal = 100 # self.NSim + elif self.seed_model_version=='2': + self.Nreal = 1 + else: + self.Nreal = self.NSim + + print("Maximum iterations SEED:", self.maxiter) + + # open list to save the progress of the minimization + self.dea_vals = [] + self.dea_func = [] + + if self.cost_fun=='LL': + result = differential_evolution(self.ll_score_seed, self.SEISbounds,polish=True, disp=self.disp, + maxiter=self.maxiter, seed=self.seed,popsize=10) + else: + result = differential_evolution(self.ls_score_seed, self.SEISbounds, polish=True, + disp=self.disp, maxiter=self.maxiter,seed=self.seed, popsize=10, + updating='immediate', atol=1e-3, callback=self.save_iteration_step) + print("End SEED differential evolution") + + print('------------------------------------') + print('Calibrated geomechanical parameters:') + for i in range(len(result.x)): + self.seed_settings[self.OptimizeKeys[i]] = result.x[i] + if (self.logscale[i]): + self.seed_settings[self.OptimizeKeys[i]] = np.power(10., result.x[i]) + print(str(self.OptimizeKeys[i]) + ': ' + str(self.seed_settings[self.OptimizeKeys[i]])) + print('------------------------------------') + + # save optimal parameters for forecast later + self.seed_settings_optimal = dict.copy(self.seed_settings) + + print("**************************************************") + print("Summary of optimized parameters after calibration:") + for i in range(len(self.SEISbounds)): + print(self.OptimizeKeys[i] + ': ', self.seed_settings_optimal[self.OptimizeKeys[i]], ) + j_init = len(self.SEISbounds) + for j in range(len(self.FlowBounds)): + print(self.OptimizeKeys[j_init+j] + ': ', self.seed_settings_optimal[self.OptimizeKeys[j_init+j]], ) + print("**************************************************") + + # typed.List instance which is a compiled library backed, type-homogeneous list data type that is an improvement over the reflected-list: SeedsSettings = [] + SeedsSettings = nb.typed.List() + for j in range(len(self.SEEDmodelKeys)): + SeedsSettings.append(float(self.seed_settings[self.SEEDmodelKeys[j]])) + + self.training_catalog, self.total_events_past_grid, self.total_rates_past_grid = SEED.Seed_Model_linear(self.LL_Moments[1:], + self.LL_Edges[self.LL_Edges >= 0.], + self.flow_model.r, + self.flow_model.Q[:,0], + self.pres_t_fit, + SeedsSettings, + self.NSim, + self.retriggering) + + total_events_median = np.round(np.median(self.total_events_past_grid, axis=0)[-1]) + + print("sum of total events after calibration (median from grid)", total_events_median, ) + + return + + def run(self): + """ + Run the model. Calls self.fit() and returns the result of + self.predict(). + """ + self.fit() + results = self.predict() + + results = self.parse_results(results) + + return results + + def fit(self): + self._logger.info('Model Fitting') + + if self.flw_model == 'point_source': + self._logger.info('HM0: calibrating flow model (point source)....') + self.flow_model.fit(self.hydraulic_df[::2].values) + elif self.flw_model == 'line_source': + print("HM0: calibrating flow model (line source)....") + self.flow_model.fit(self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM0_line_source.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + elif self.flw_model == 'num_const_perm': + print("HM0: calibrating flow model (numerical linear)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM0_numerical_linear.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + elif self.flw_model == 'num_var_perm': + print("HM1: calibrating flow model (numerical non-linear)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + # or: + # with open(filepath + 'HM1_2.pkl', 'rb') as f: + # self.flow_model = pickle.load(f) + # self.flow_model = self.flow_model[0] + else: + print("HM1: calibrating flow model (numerical non-linear with FV)....") + self.flow_model.fit(self.TrainingData[self.Columns[:2]].values, self.TrainingData[self.Columns[::2]].values) + + print('--------------------------------') + print('Calibrated hydraulic parameters:') + for i in range(len(self.flow_model.params)): + self.seed_settings[self.OptimizeKeys[i-len(self.flow_model.params)]] = self.flow_model.params[i] + print(str(self.OptimizeKeys[i-len(self.flow_model.params)]) + ': ' + str(self.flow_model.params[i])) + print('--------------------------------') + + self.timesteps = self.TrainingData.time.values + inipres=self.TrainingData[self.Columns[-1]].values[0] + + if self.seis_model=='CAPS': + print("HM0/1: calibrating CAPS....") + self.PressureFunction = self.create_interpolator(self.timesteps, (self.flow_model.hidden_mechanism - inipres) / 1.e6) + self.Calibrate_CAPS(forecast_edges) + else: + print("HM0/1: calibrating SEED....") + self.Calibrate_SEED(forecast_edges) + + return + + def predict(self): + self._logger.info('Model Predicting') + # ************************************************************** + # Multi-LASSO model forecast # + + # forecast data + plan_t = np.array((self.scenario_df.index.values + - self.hydraulic_df.index.values[0]).tolist()) / 1.e9 + plan_dV = np.maximum(self.scenario_df[self.column_flow].values, 0) + +# if self.Dtau == self._epoch_duration: +# forecast_moments_hires = self._forecast_moments +# else: +# taubins = np.arange(self._forecast_moments[0], self._forecast_moments[-1] + self.Dtau, self.Dtau) +# forecast_moments_hires = taubins + + forecast_moments_hires = np.arange( + self.forecast_moments[0], self.forecast_moments[-1] + self.Dtau, self.Dtau) + # forecast_moments_hires =self.forecast_moments + if self.m >= len(forecast_moments_hires): + self.m = len(forecast_moments_hires) - 1 + + forecast_dV = np.interp(forecast_moments_hires, plan_t, plan_dV) + planned_flow = np.vstack((forecast_moments_hires, forecast_dV)).T + if self.Pmodel == 'FlowModels0-1': + forecast_P0 = self.Pcalib0.predict(planned_flow)[:, 0] + forecast_P1 = self.Pcalib1.predict(planned_flow)[:, 0] + else: + forecast_P = self.Pcalib.predict(planned_flow)[:, 0] + X_test = self.X_train[-1, :][np.newaxis, :] + + # LASSO prediction + y_pred_mLASSO = np.zeros(self.m) + for i in range(self.m): + X_test[:, 0] = forecast_dV[i] + if self.Pmodel == 'FlowModels0-1': + X_test[:, 7] = forecast_P0[i] + X_test[:, 8] = forecast_P1[i] + else: + X_test[:, 7] = forecast_P[i] + y_pred_mLASSO[i] = self.mLASSO_trained['subLASSO' + + str(i + 1)].predict(X_test) + # clip to zero in case of unstable result at very high m + y_pred_mLASSO[y_pred_mLASSO < 0] = 0 + + # filling gaps for tau_i after horizon m with EM1 frequentist (since LASSO tends to EM1 for m -> Inf.) + plan_V = np.cumsum(plan_dV * np.diff(np.append(plan_t[0], plan_t))) + forecast_V = np.interp(forecast_moments_hires, plan_t, plan_V) + # self.y_pred_fill = np.append(np.diff(10 ** (self.af - self.b_value * self.Mc) * forecast_V), 0) + self.y_pred_fill = np.diff( + 10 ** (self.af - self.b_value * self.Mc) * forecast_V) + self.y_pred = np.copy(self.y_pred_fill) + indLASSO = np.arange(self.m) + self.y_pred[indLASSO] = y_pred_mLASSO[indLASSO] + + self.y_pred = self.y_pred.reshape((len(forecast_moments_hires[1:]), 1)) + self.a_value = (np.log10(self.y_pred + 1e-20) + self.b_value + * self.Mc).reshape((len(forecast_moments_hires[1:]), 1)) + if self.m > 0: + self.y_fit = self.mLASSO_trained['subLASSO1'].predict(self.X_train) + else: + self.y_fit = np.zeros(self.X_train.shape[0]) + self.y_fit[self.y_fit <= 0] = 0 + + # resampling + if self.Dtau < self.parameters['epoch_duration']: + self._logger.info('Resampling Output') + factor = self.parameters['epoch_duration'] / self.Dtau + self.y_pred = factor * interp1d(forecast_moments_hires[1:], self.y_pred[:, 0], kind='linear')( + self.forecast_moments[1:])[:, np.newaxis] + self.a_value = (np.log10(self.y_pred + 1e-20) + self.b_value + * self.Mc).reshape((len(self.forecast_moments[1:]), 1)) + self.y_pred_fill = factor * \ + interp1d(forecast_moments_hires[1:], self.y_pred_fill, kind='linear')( + self.forecast_moments[1:]) + + NN = ((np.max(self.dt_fit) - np.min(self.dt_fit)) + / self.parameters['epoch_duration']).astype(int) + 1 + self._time_fit = np.linspace( + np.min(self.dt_fit), np.max(self.dt_fit), NN) + self.dt_fit_mids = self._time_fit[1:] - \ + self.parameters['epoch_duration'] / 2 + self.rate_fit = factor * \ + interp1d(self.tmids, self.y_fit, kind='linear')( + self.dt_fit_mids)[:, np.newaxis] + self.rate_train = factor * \ + interp1d(self.tmids, self.y_train, kind='linear')( + self.dt_fit_mids)[:, np.newaxis] + + # simulations + if self.Nsim > 1: + mLASSO_pred = np.zeros((self.y_pred.shape[0], self.Nsim)) + for t in range(self.y_pred.shape[0]): + mLASSO_pred[t, :] = np.random.poisson( + self.y_pred[t, 0], self.Nsim) + + bsim = np.zeros(self.Nsim) + for sim in range(self.Nsim): + msim = self.Mc - \ + np.log(1 - np.random.random(self.fit_N)) / \ + (self.b_value * np.log(10)) + bsim[sim] = np.log10(np.exp(1.)) / \ + (np.mean(msim) - (self.Mc - self.dM / 2)) + mLASSO_b = bsim # np.tile(bsim, (self.y_pred.shape[0], 1)) + + mLASSO_a = np.log10(mLASSO_pred + 1e-20) + mLASSO_b * self.Mc + mLASSO_afb = mLASSO_b * self.Mc + \ + np.log10(self.fit_N_shutin) - np.log10(self.fit_Vtot) + else: + mLASSO_pred = self.y_pred + mLASSO_b = self.b_value # np.full_like(mLASSO_pred, self.b_value) + mLASSO_a = self.a_value + mLASSO_afb = self.af + # mLASSO_Mc = np.full_like(mLASSO_a, self.Mc) + ############################## + + # For each volume and timestep generate 5 values of interest + # (a, alpha, mc, b, rate) with n_sim samples each. + return mLASSO_a, mLASSO_afb, mLASSO_b, self.rate_fit, mLASSO_pred + + def parse_results(self, results): + """ + Parse Results to a ForecastGRRateGrid per timestep. + A ForecastGRRateGrid requires at least the following columns: + 'number_events', 'longitude_min', 'longitude_max', + 'latitude_min', 'latitude_max', 'depth_min', 'depth_max', + 'a', 'b', 'mc', 'grid_id' + + """ + fit_datetimes = [self.observation_start + timedelta(seconds=t) + for t in self._time_fit] + forecast_datetimes = [self.observation_start + timedelta(seconds=t) + for t in self.forecast_moments] + + bounds = list(wkt.loads(self.geometry.bounding_polygon).bounds) + bounds.insert(2, self.geometry.altitude_min) + bounds.insert(5, self.geometry.altitude_max) + + parsed_results = [] + + for i in range(len(fit_datetimes) - 1): + rate = {'number_events': results[3][i], + 'longitude_min': bounds[0], + 'longitude_max': bounds[3], + 'latitude_min': bounds[1], + 'latitude_max': bounds[4], + 'depth_min': bounds[2], + 'depth_max': bounds[5], + # self.af, + 'a': np.log10(len(self.seismicity[self.seismicity['magnitude'] > self.Mc])) + self.b_value * self.Mc, + 'alpha': self.af, + 'b': self.b_value, + 'mc': self.Mc, + 'grid_id': 0} + + # Create a ForecastGRRateGrid for each Timestep + rategrid = ForecastGRRateGrid(rate, + starttime=fit_datetimes[i], + endtime=fit_datetimes[i + 1]) + + parsed_results.append(rategrid) + + for i in range(len(forecast_datetimes) - 1): + rate = {'number_events': results[4][i], + 'longitude_min': [bounds[0]] * self.Nsim, + 'longitude_max': [bounds[3]] * self.Nsim, + 'latitude_min': [bounds[1]] * self.Nsim, + 'latitude_max': [bounds[4]] * self.Nsim, + 'depth_min': [bounds[2]] * self.Nsim, + 'depth_max': [bounds[5]] * self.Nsim, + 'a': results[0][i], + 'alpha': results[1], + 'b': results[2], + 'mc': [self.Mc] * self.Nsim, + 'grid_id': list(range(self.Nsim))} + + # Create a ForecastGRRateGrid for each Timestep + rategrid = ForecastGRRateGrid(rate, + starttime=forecast_datetimes[i], + endtime=forecast_datetimes[i + 1]) + + parsed_results.append(rategrid) + + return parsed_results diff --git a/hm1d/ramsis.py b/hm1d/ramsis.py new file mode 100644 index 0000000..0a5fa4e --- /dev/null +++ b/hm1d/ramsis.py @@ -0,0 +1,44 @@ +from ramsis_model import ModelInput, validate_entrypoint + +from hm1d.model import HM1D + + +def run_hm1d(model_input: dict): + """ + Entry Point for RT-RAMSIS + + This method gets called by the RT-RAMSIS framework. It is responsible for + initializing the model and running the model with the given input. + """ + + model_input = ModelInput(**model_input) + + model = HM1D(model_input) + + model.fit() + + results = model.predict() + + results = model.parse_results(results) + + return results + + +@validate_entrypoint(induced=True) +def run_hm1d_validated(model_input: ModelInput): + """ + Entry Point for RT-RAMSIS + + This method gets called by the RT-RAMSIS framework. It is responsible for + initializing the model and running the model with the given input. + """ + + model = HM1D(model_input) + + model.fit() + + results = model.predict() + + results = model.parse_results(results) + + return results diff --git a/hm1d/utils.py b/hm1d/utils.py new file mode 100644 index 0000000..f9dab85 --- /dev/null +++ b/hm1d/utils.py @@ -0,0 +1,237 @@ +# Copyright 2018, ETH Zurich - Swiss Seismological Service SED +""" +Miscellaneous HM1 model core facilities. +""" + +import numpy as np +from scipy import stats, special +from sklearn import linear_model +from matplotlib import pyplot as plt + +# SEISMOSTATS +from seismostats.analysis.estimate_beta import estimate_b_tinti, shi_bolt_confidence +from seismostats.analysis.estimate_mc import mc_max_curvature +from seismostats.utils.binning import bin_to_precision + +def daterange(start_date, + end_date, + epoch_duration=None, + training_start_date=None): + """Numpy array returned with forecasting intervals in seconds + increasing with constant increment, inclusive of the end_date. + + :param st art_date: Datetime for generator to start with. + :param end_date: Datetime for generator to finish with. + :param epoch_duration: Number of seconds between returned values. + + :rtype: np.array of seconds from training start time to forecast for + """ + total_seconds = (end_date - start_date).total_seconds() + if not epoch_duration: + epoch_duration = total_seconds + + # the +1 is required to match the r code which gives the range + # including the final variable. + daterange_list = [ + i * epoch_duration for i + in range(int(total_seconds / epoch_duration) + 1)] + if training_start_date: + daterange_list = [i + ( + start_date - training_start_date).total_seconds() + for i in daterange_list] + date_range_array = np.array(daterange_list) + return date_range_array + + +def Calibrate_Observed_GR(catalog, dM=0.02,col_name='Mw'): + """ + Very similar to ramsis.EM1 mc_mode + The Frequency Mass Density (FMD) is found by smoothing + observed Magnitudes (M) with Gaussian kernels. Then + the completion Magnitude (Mc) is set to the rounded value + at the peak of the FMD. + + The slope of the Gutenberg-Richter law is returned with + the MLE method, Aki (1965) and for the found Mc. + + NOTE: It returns Nan when less than 4 events are passed. + The scientific implications behind it need to be further + studied (the same applies for the ramsis.EM1). E.g. binomial + is more possible; here the mode with the largest M is chosen. + + :param Magnitudes: magnitudes of incomplete catalog + :param dM : size of binning and of rounding Mc + + :rtype: float for the Mc + :rtype: float for the b-value + """ + #print("starting the GR") + Magnitudes = np.array(catalog[col_name].values) + Mc, b = np.full(2, np.nan) + #print("inputs to gr: ", catalog) + #print("len magnitudes: ", len(Magnitudes)) + if (len(Magnitudes) > 4): + Magnitudes = Magnitudes[~np.isnan(Magnitudes)] + Mrange = np.around(np.arange(np.amax(Magnitudes) + 5 * dM, np.amin(Magnitudes) - 5 * dM, -dM), + decimals=int(-np.log(dM))) + argMc = np.argmax(stats.gaussian_kde(Magnitudes)(Mrange)) + #Mc = round(Mrange[argMc]/dM)*dM + Mc = Mrange[argMc] + print("mc", Mc) + # b=np.log10(np.exp(1.))/(np.mean(Magnitudes[np.where(Magnitudes>=Mc)])-np.min(Magnitudes[np.where(Magnitudes>=Mc)])) + b = np.log10(np.exp(1.)) / (np.mean(Magnitudes[np.where(Magnitudes >= Mc)]) - (Mc - dM / 2)) + print('b', b) + return Mc, b + +def b_value_Lasso_calibration_1D(Xs, Mw, bins=100): + Xs = Xs[:,0] # this enables the right dimensions for the histogram (1-D) + counts, edges = np.histogram(Xs, bins=bins) + counts = counts.flatten() # returns a copy collapsed into one dimension + meanMw, edges = np.histogram(Xs, bins=edges, weights=Mw) + meanMw = meanMw.flatten() + + BinsGrid = np.meshgrid(edges[:-1] + 0.5 * (edges[1:] - edges[:-1])) + + X = np.array([BinsGrid[0].flatten()]) + + Keep = np.where(counts > 0) + X = X[:, Keep[0]].transpose() + Y = meanMw[Keep] * np.reciprocal(counts[Keep]) + + clf = linear_model.Lasso(alpha=0.1) + clf.fit(X, Y) + return clf.intercept_, clf.coef_ + +def Refine_An_Edge (Coarse_Edges_1D, RR=5): + Coarse_Cells=np.sort(np.unique(Coarse_Edges_1D.ravel()), kind='mergesort') + MyFinerCells=np.zeros((len(Coarse_Cells)-1)*RR) + for i in range(len(Coarse_Cells)-1): + Delta=(Coarse_Cells[i+1]-Coarse_Cells[i])/RR + for ii in range(RR): + MyFinerCells[RR*i+ii]=Coarse_Cells[i]+Delta*(ii+0.5) + return MyFinerCells + +def catalogue_statistics_calculation(cat, binning=0.01, corr_factor=0.025): + """ + Routine to calculate the statistics of an input catalogue using Seismostats + """ + magnitudes = bin_to_precision(cat.mag.to_numpy(), delta_x=binning) + Mc = mc_max_curvature(sample=magnitudes, delta_m=binning, correction_factor=corr_factor) + b_value = estimate_b_tinti(magnitudes=magnitudes[magnitudes>=Mc], mc=Mc, b_parameter='b_value', delta_m=binning) + error_b_value = shi_bolt_confidence(magnitudes=magnitudes[magnitudes>=Mc], b=b_value, b_parameter='b_value') + return Mc, b_value, error_b_value + +class LL_cost_function_1D: + def __init__(self, x, bins=10): + self.y, self.edges_x1, self.edges_x2 = np.histogram2d(x[:,0],x[:,1], bins=bins, density=False) + #self.y = np.cumsum(self.y, axis=0) + self.y = self.y.ravel() + self.logyfact = np.log(special.factorial(self.y)).ravel() + + def score(self, y1): + ll = self.y*np.log(y1.ravel())-y1.ravel()-self.logyfact + return np.sum(ll) + +class LS_cost_function_1D: + def __init__(self, x, bins=(10, 10, 10, 10)): + self.y, self.edges_x1, self.edges_x2 = np.histogram2d(x[:,0],x[:,1], bins=bins, density=False) + self.y = np.cumsum(np.sum(self.y,axis=1)) + + + def score(self, y1): + ls = np.sum(np.square(self.y-y1)) + return np.nanmean(ls) + +def plotting_data(model): + fig, ax = plt.subplots(1, 2, figsize=(20, 6)) + + ax[0].scatter(model.seismicity.time, (model.seismicity['magnitude'] - np.min(model.seismicity['magnitude'])) / \ + (np.max(model.seismicity['magnitude'] - np.min(model.seismicity['magnitude']))) / 4, \ + color='lightgrey', alpha=.5, zorder=2, label='seismics') + ax[0].step(model.hydraulic_df.index, model.hydraulic_df['topflow'] / \ + np.max(model.hydraulic_df['topflow']) / 4, color='darkblue', label='hydraulics[topflow]') + ax[0].step(model.hydraulic_df.index, model.hydraulic_df['toppressure'] / \ + np.max(model.hydraulic_df['toppressure']) / 4, color='darkred', label='hydraulics[toppressure]') + ax[0].set_xlabel('Date') + ax[0].set_ylabel('Normalised inputs') + ax[0].set_title('Training data') + ax[0].legend(loc='upper left') + ax[0].spines['right'].set_visible(False) + ax[0].spines['top'].set_visible(False) + + ax[1].plot(model.hydraulic_df.index, model.hydraulic_df['topflow'], color='darkblue', \ + label='hydraulics[topflow]') + ax[1].plot(model.scenario_df.index, model.scenario_df[model.column_flow], color='royalblue', label='scenario') + ax[1].set_xlabel('Date') + ax[1].set_ylabel('Flow rate [m$^3$/s]') + ax[1].set_title('Flow time series') + ax[1].legend() + ax[1].spines['right'].set_visible(False) + ax[1].spines['top'].set_visible(False) + fig.tight_layout(); + +def plotting_results(model,model_output, seism_df=pd.DataFrame()): + + inj_t = np.array((model.hydraulic_df.index.values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + Dtau = model.model_input.model_parameters['epoch_duration'] + + NN = ((inj_t[-1] - inj_t[0]) + / Dtau).astype(int) + 1 + time_fit = np.linspace( + inj_t[0], inj_t[-1], NN) + + time_fit_mids = time_fit[1:] + + time_forecast_mids = model.forecast_moments[1:]- Dtau/2 + + seism = model.seismicity + seism = seism[seism['magnitude'] >= model.Mc] + seism.sort_values(by='time',inplace=True) + seism_t = np.array((seism['time'].values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + + # range pred + + y_pred_mean = np.median(model_output[4], axis=1) + up = np.percentile(model_output[4],axis=1,q=75) + down = np.percentile(model_output[4],axis=1,q=25) + down[down < 0] = 0 + + if not seism_df.empty: + seism_t_all = np.array((seism_df['time'].values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + ind = np.logical_and(seism_t_all > 0, seism_t_all < model.forecast_moments[-1]) + seism_df_filt = seism_df[ind] + seism_t_all = seism_t_all[ind] + seism_t_all_aboveMc = seism_t_all[seism_df_filt['magnitude'] >= model.Mc] + taubins_all = np.arange(0, model.forecast_moments[-1] + Dtau, Dtau) + tmids_all = taubins_all[1:] - Dtau / 2 + rate_all = np.histogram(seism_t_all_aboveMc, bins=taubins_all) + + ## + fig, ax = plt.subplots(1, 2, figsize=(20, 6)) + + ax[0].scatter(seism_t, np.arange(1, len(seism_t) + 1), color='darkgrey', label='observations') + ax[0].plot(time_fit_mids,np.cumsum(model_output[3]), color='darkgreen', label='model fit') + ax[0].set_xlabel('Time increment [s]') + ax[0].set_ylabel('Cumulative number of events') + ax[0].set_title('Training fit') + ax[0].legend() + ax[0].spines['right'].set_visible(False) + ax[0].spines['top'].set_visible(False) + + # ax[1].plot(model.res_fit_t, model.rate_train, color = 'lightgrey', label = 'observations') + ax[1].plot(time_fit_mids, model_output[3], color='darkgreen', label='model fit') + ax[1].plot(time_forecast_mids, y_pred_mean, color='darkred', label='model prediction') + ax[1].scatter(time_forecast_mids, y_pred_mean, color='darkred') + ax[1].fill_between(time_forecast_mids, down, up, facecolor='darkred', alpha=.3) + if not seism_df.empty: + ax[1].step(tmids_all, rate_all[0], where='mid', label='data', color='darkgrey') + # ax[1].fill_between(tmids_all, 0, rate_all[0], color='grey', alpha = .5) + #ax[1].set_xlim(0, 50000) + #ax[1].set_ylim(0, 150) + ax[1].set_xlabel('Time increment [s]') + ax[1].set_ylabel('Event rate [time bin]') + ax[1].set_title('Event-rate time series') + ax[1].legend(loc='upper left') + ax[1].spines['right'].set_visible(False) + ax[1].spines['top'].set_visible(False) + #fig.tight_layout() \ No newline at end of file diff --git a/ml1/FlowModel.py b/ml1/FlowModel.py new file mode 100644 index 0000000..688cd38 --- /dev/null +++ b/ml1/FlowModel.py @@ -0,0 +1,330 @@ +import numpy as np +from scipy.special import expi +from scipy.special import erfc +from scipy.optimize import differential_evolution +import pickle + +######################################################################################################################## +########################################## ANALYTICAL FLOW MODEL ####################################################### +######################################################################################################################## + +def Analytical_LineSource_Solution(InjectionStrategy, t_grid, r_grid, h, S, k): + """ + Args: + InjectionStrategy (2xNt array): doublets of each consecutive step: + duration of step and injection rate + (only Neumann's b.c. at the well) + t_grid (Numpy vector): consecutive time moments + r_grid (Numpy vector): radii + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the analytical solution stimulation factor (Numpy vector) for the + input time moments and radii + """ + Nt_end = len(t_grid) + sol = np.zeros([Nt_end, len(r_grid)]) + Qsteps = np.array(InjectionStrategy[:, 1]) + Qsteps[1:] = np.diff(Qsteps) + TimeSteps = np.array(InjectionStrategy[:, 0]) + NumOfSteps = len(Qsteps) + + for step in range(NumOfSteps): + JJ = np.where(t_grid > TimeSteps[step]) + sol[JJ, :] = np.add(sol[JJ, :], + # StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + # Diff)) + StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + h, S, k)) + return sol + +def Analytical_PointSource_Solution(InjectionStrategy, t_grid, r_grid, A, S, k): + """ + Args: + InjectionStrategy (2xNt array): doublets of each consecutive step: + duration of step and injection rate + (only Neumann's b.c. at the well) + t_grid (Numpy vector): consecutive time moments + r_grid (Numpy vector): radii + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the analytical solution stimulation factor (Numpy vector) for the + input time moments and radii + """ + Nt_end = len(t_grid) + sol = np.zeros([Nt_end, len(r_grid)]) + Qsteps = np.array(InjectionStrategy[:, 1]) + Qsteps[1:] = np.diff(Qsteps) + TimeSteps = np.array(InjectionStrategy[:, 0]) + NumOfSteps = len(Qsteps) + + for step in range(NumOfSteps): + JJ = np.where(t_grid > TimeSteps[step]) + sol[JJ, :] = np.add(sol[JJ, :], + # StepInjection_Green_Function_linesource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + # Diff)) + StepInjection_Green_Function_pointsource(r_grid, (t_grid[JJ] - TimeSteps[step]), Qsteps[step], + A, S, k)) + return sol + +def StepInjection_Green_Function_linesource(r, t, Q, h, S, k): + # def StepInjection_Green_Function_linesource(r, t, Q, Diff, val): + """ + Args: + r (Numpy vector): radius of point(s) in meters + t (Numpy vector): time moment(s) in seconds + Q (scalar) : source term [m^3/(s)] + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the 1D analytical solution (Numpy vector) for continuous line source type of injection + REF: Wu and Pruess, 2000, IJRMMS, 37, 51-61 -> Theis solution + similar with Diff REF: pag. 261, Eq. (2) - book: “Conduction of Heat in Solids†di Carslaw and Jaeger + """ + mu = 0.0010016 # water visosity at 20 ËšC + + X = expi(-np.matmul(np.reciprocal(t.reshape((-1, 1))), np.square(r.reshape((1, -1)))) * mu * S / k / 4.) + + return (-Q * mu/ (4. * np.pi * k * h) ) * X + +def StepInjection_Green_Function_pointsource(r, t, Q, A, S, k): + # def StepInjection_Green_Function_linesource(r, t, Q, Diff, val): + """ + Args: + r (Numpy vector): radius of point(s) in meters + t (Numpy vector): time moment(s) in seconds + Q (scalar) : source term [m^3/(s)] + k (scalar) : permeability [m] + S (scalar) : storage (porosity * compressibility) [Pa^-1] + Returns: + the 1D analytical solution (Numpy vector) for continuous point source type of injection + REF: Wu and Pruess, 2000, IJRMMS, 37, 51-61 -> Theis solution + """ + mu = 0.0010016 # water visosity at 20 ËšC + + xi = np.matmul(np.reciprocal(np.sqrt(t.reshape((-1, 1)))), r.reshape((1, -1))) / (np.sqrt(4. * k / S / mu)) + + X = 1./(np.sqrt(np.pi) * xi)*np.exp(-xi**2) - erfc(xi) + + return (Q * mu * r.reshape((1, -1)) / (k * A)) * X + +class FlowModel0: + """ + POINT SOURCE MODEL + + Initialization with radius, numpy array with time and flow, as well as + crossectional area, model parameters initial guess, and their bounds when used for fitting + Model parameters are the storage coefficient (namely porosity times compressibility) + and the intrinsic rock permeability + + Simple usage for forward simulation: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + time_out = np.linspace(0, 1e8, 2000) # time vector for output, this can be different than time_Q as long as is larger + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + QQ = np.vstack((time_Q.T,Q.T)) + S = 1.e-9 # storage + k = 1.e-14 # permeability + rw = 0.15 #radius well + xsection = 2 * np.pi * rw**2 # cross sectional area + Model = FlowModel0(Q = QQ,r_grid = radius,A = xsection, iniguess=(S, k)) + Pressure = Model.predict() # numpy vector of pressure solution at time and radius + + Simple usage for inversion: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + TrainingTarget = 2xN array with the time moment and the pressure in Pa + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + TrainingData = np.vstack((time_Q.T,Q.T)) + rw = 0.15 #radius well + xsection = 2 * np.pi * h * rw # cross sectional area + Model = FlowModel0(Q = TrainingData,r_grid = radius, A= xsection, bounds=[(1e-15 1e-5), (1e-20, 1e-12)], iniguess=(1e-9, 1e-14)) + Model.fit(TrainingTarget) # numpy vector of pressure solution at time and radius + Pressure = Model.predict() + + For forecasting future pressure after fitting an injection Plan is needed + Q2 = Q*2 + time2 = np.linspace(0, 1e8, 2000) +time[-1] + Plan = np.vstack((time2.T,Q2.T) + Prediction = Model.predict(Plan) + """ + def __init__(self, + Q, #TrainingData for fitting + r_grid=np.geomspace(0.1, 2000, 30, endpoint=True), + A=90, + bounds=[(1e-15, 1e-5), (1e-20, 1e-12)], + iniguess=(1e-9, 1e-14)): + self.r = r_grid + self.A = A + self.Q = Q + self.bounds = np.log10(bounds) + self.params = iniguess + self.observation = np.array([0]) + self.model = Analytical_PointSource_Solution + + def Cost(self, x): + S = np.power(10.,x[0]) + k = np.power(10.,x[1]) + _prediction = self.model(self.Q, self.t_target, self.r_target, self.A, S, k)+self.observation[0] + #_prediction = self.model(self.Q, self.t_target, self.r_target, self.A, S, k) + Coeff_R2 = np.sum(np.square(_prediction/1.e6 - self.observation/1.e6))/len(self.observation) + + + return Coeff_R2 + + def fit(self, TrainingTarget, + popsize=10, + polish=True, + disp=False, + maxiter=100, + seed=22, + tol = 1e-5): + """ + Args: + TrainingData (Numpy array) : 2xN array with the time moment and the injection rate until next measurement + TrainingTarget(Numpy array): 2xM array with the time moment and pressure measurement + Returns: + + """ + self.t_target = TrainingTarget[:, 0] + self.observation = TrainingTarget[:, 1:] + self.r_target = self.r[:len(self.observation[0, :])] + + self.iter_results = [] + result = differential_evolution(self.Cost, self.bounds,popsize=popsize,polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol) + self.params = np.power(10., result.x[0]), \ + np.power(10., result.x[1]) + + self.hidden_mechanism = self.predict() + + def fm_iteration(self, xk, convergence): + self.iter_results.append(xk) + + def predict(self, Plan=[],): + """ + Args: + Plan (Numpy array) : 2xNf array with the time moment and the injection rate expected from that moment. + Returns: + (Numpy array) : 2x(Nf+N) array with the time moment and the pressure due to the plan and the training data + """ + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + t_grid = Plan[:, 0] + + Prediction = self.model(Q, t_grid, self.r, self.A, self.params[0], self.params[1])+self.observation[0] + return Prediction + +class FlowModel1: + """ + LINE SOURCE MODEL (Theis' solution) + + Initialization with radius, numpy array with time and flow, as well as + reservoir thickness, model parameters initial guess, and their bounds when used for fitting + Model parameters are the storage coefficient (namely porosity times compressibility) + and the intrinsic rock permeability + + Simple usage for forward simulation: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + time_out = np.linspace(0, 1e8, 2000) # time vector for output, this can be different than time_Q as long as is larger + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + QQ = np.vstack((time_Q.T,Q.T)) + S = 1.e-9 # storage + k = 1.e-14 # permeability + thick = 100 #layer thickness + Model = FlowModel1(Q = QQ,r_grid = radius,h = thick, iniguess=(S, k)) + Pressure = Model.predict() # numpy vector of pressure solution at time and radius + + Simple usage for inversion: + + radius = np.geomspace(0.1, 2000, 30, endpoint=True) # radius for calculation + TrainingTarget = 2xN array with the time moment and the pressure in Pa + time_Q= np.linspace(0, 1e8, 2000) # time vector for flow + Q = np.ones((2000)*0.01 # volumetric injection rate in m3/s + TrainingData = np.vstack((time_Q.T,Q.T)) + thick = 100 #layer thickness + Model = FlowModel1(Q=TrainingData, r_grid=radius, h=thick, bounds=[(1e-15 1e-5), (1e-20, 1e-12)], iniguess=(1e-9, 1e-14)) + Model.fit(TrainingTarget) # numpy vector of pressure solution at time and radius + Pressure = Model.predict() + + For forecasting future pressure after fitting an injection Plan is needed + Q2 = Q*2 + time2 = np.linspace(0, 1e8, 2000) +time[-1] + Plan = np.vstack((time2.T,Q2.T) + Prediction = Model.predict(Plan) + """ + def __init__(self, + Q, + r_grid=np.geomspace(0.1, 2000, 30, endpoint=True), + h=100, + bounds=[(1e-15, 1e-5), (1e-20, 1e-12)], + iniguess=(1e-9, 1e-14)): + self.r = r_grid + self.h = h + self.Q = Q + + self.bounds = np.log10(bounds) + self.params = iniguess + self.observation = np.array([0]) + self.model = Analytical_LineSource_Solution + + def Cost(self, x): + S = np.power(10.,x[0]) + k = np.power(10.,x[1]) +# _prediction = self.model(self.Q, self.t_target, self.r_target, self.h, S, k)+self.observation[0] + _prediction = self.model(self.Q, self.t_target, self.r_target, self.h, S, k) + Coeff_R2 = np.sum(np.square(_prediction/1.e6 - self.observation/1.e6))/len(self.observation) + + return Coeff_R2 + + def fit(self, TrainingTarget, + popsize=10, + polish=True, + disp=False, + maxiter=100, + seed=22, + tol = 1e-5): + """ + Args: + TrainingData (Numpy array) : 2xN array with the time moment and the injection rate until next measurement + TrainingTarget(Numpy array): 2xM array with the time moment and pressure measurement + Returns: + + """ + self.t_target = TrainingTarget[:, 0] + self.observation = TrainingTarget[:, 1:] # gets rid of the column in index nr. 1 (so the second column) + self.r_target = self.r[:len(self.observation[0, :])] + + + self.iter_results = [] + result = differential_evolution(self.Cost, self.bounds,popsize=popsize,polish=polish, + disp=disp, maxiter=maxiter, seed=seed, tol=tol, callback=self.fm_iteration) + self.params = np.power(10., result.x[0]), \ + np.power(10., result.x[1]) + + self.hidden_mechanism = self.predict() + + def fm_iteration(self, xk, convergence): + self.iter_results.append(xk) + + def predict(self, Plan=[],): + """ + Args: + Plan (Numpy array) : 2xNf array with the time moment and the injection rate expected from that moment. + Returns: + (Numpy array) : 2x(Nf+N) array with the time moment and the pressure due to the plan and the training data + """ + Q = self.Q + t_grid = Q[:, 0] + if (len(Plan) > 0): + Q = np.vstack((Q, Plan)) + t_grid = Plan[:, 0] + Prediction = self.model(Q, t_grid, self.r, self.h, self.params[0], self.params[1])+self.observation[0] + return Prediction diff --git a/ml1/__init__.py b/ml1/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ml1/model.py b/ml1/model.py new file mode 100644 index 0000000..b5c1c6c --- /dev/null +++ b/ml1/model.py @@ -0,0 +1,455 @@ +import logging +from datetime import timedelta + +import numpy as np +from hydws.parser import BoreholeHydraulics +from ramsis_model import ModelInput +from scipy import stats +from scipy.interpolate import interp1d +from seismostats.seismicity.catalog import Catalog +from seismostats.seismicity.rategrid import ForecastGRRateGrid +from shapely import wkt +from sklearn.linear_model import Lasso + +from hm1d.utils import daterange, def_Xy, detect_shutin + + +class HM1D(): + """ InducedSFM Class for multi-LASSO model + + Available variables after successfull initialization: + + Input Hydraulic and Seismic data is available as DataFrames as: + self._hydraulics, + self._scenario, + self._seismics + + Variables from input dict are also available as class properties: + self._model_parameters + self._forecast_start + self._forecast_end + self._epoch_duration + self._proj_string + + Additionally are available: + self._forecast_moments + self._section_metadata + self._observation_start + self._observation_end + + A logger is available with self._logger.* (info, warning, error, ...) + + """ + + def __init__(self, model_input: ModelInput, **kwargs): + """ + Gets called after the aforementioned variables are instantiated, eg. + model setup can live in here. + """ + # set up logger + self._logger = logging.getLogger(__name__) + self._logger.info('Model Initialized') + + self.model_input = model_input + self.parameters = model_input.model_parameters + + self.dM = self.parameters['dM'] + self.M_dec = self.parameters['M_decimals'] + self.Mc = self.parameters['Mc'] + self.column_flow = "topflow" + self.column_pressure = "toppressure" + self.m = self.parameters['LASSO_m'] + self.alpha = self.parameters['LASSO_penalty'] + self.Nmin_fit = self.parameters['LASSO_Nmin_fit'] + self.Nsim = self.parameters['Nsim'] + self.Dtau = self.parameters['Delta_tau'] + self.Pmodel = self.parameters['Pmodel'] + + section_id = self.parameters['well_section_publicid'] + + self.geometry = model_input.geometry + + self.forecast_start = model_input.forecast_start + self.forecast_end = model_input.forecast_end + + self.hydraulics = BoreholeHydraulics(model_input.injection_well[0]) + + self.scenario = BoreholeHydraulics(model_input.injection_plan) + + self.seismicity = Catalog.from_quakeml(model_input.seismic_catalog, + includequality=True) + + # get dataframes from HYDSJONParser + self.hydraulic_df = self.hydraulics[section_id].hydraulics + self.hydraulic_df = self.hydraulic_df[~self.hydraulic_df['topflow'].isna()] + self.hydraulic_df = self.hydraulic_df[~self.hydraulic_df['toppressure'].isna()] + + self.scenario_df = self.scenario[section_id].hydraulics + + self.observation_start = self.hydraulic_df.index.min() + self.observation_end = np.array( + self.forecast_start).astype('datetime64') + + self.hydraulic_df = self.hydraulic_df[self.hydraulic_df.index + < self.observation_end] + self.seismicity = self.seismicity[self.seismicity['time'] + < self.forecast_start] + + # self.observation_end = self.hydraulic_df.index.max() + # self.observation_end = min(self.observation_end, self.forecast_start) + + self.seismicity = self.seismicity[~self.seismicity['magnitude'].isna()] + + if 'associatedphasecount' in self.seismicity.columns: + self.seismicity['associatedphasecount'] = \ + self.seismicity['associatedphasecount'].astype(float) + # is this sensible? + self.seismicity['associatedphasecount'] = \ + self.seismicity['associatedphasecount'].fillna(0) + + self.seismicity = \ + self.seismicity[self.seismicity['associatedphasecount'] >= self.parameters['n_phases']] + + # add ts column to seismicity dataframe + self.seismicity['ts'] = self.seismicity.time.map( + lambda x: (x - self.forecast_start).total_seconds()) + + # get the forecast times + self.forecast_moments = daterange(self.forecast_start, + self.forecast_end, + self.parameters['epoch_duration'], + self.observation_start) + + self.scenario_df = self.scenario_df.resample(str(self.parameters['epoch_duration'])+'s').mean().interpolate(method='linear') + + self.scenario_df = self.scenario_df[(self.scenario_df.index <= self.forecast_end) & + (self.scenario_df.index > self.forecast_start)] + + sc_all_negative = (self.scenario_df['topflow'] < 0).all() + sc_all_identical = self.scenario_df['topflow'].nunique() == 1 + + if sc_all_negative and sc_all_identical: + self.scenario_df["topflow"]=(-self.scenario_df["topflow"].values[0]* + np.ones(len(self.scenario_df))*self.hydraulic_df["topflow"].values[-1]) + + sc_all_negative = (self.scenario_df['topflow'] < 0).all() + sc_all_identical = self.scenario_df['topflow'].nunique() == 1 + + if sc_all_negative and sc_all_identical: + self.scenario_df["topflow"]=(-self.scenario_df["topflow"].values[0]* + np.ones(len(self.scenario_df))*self.hydraulic_df["topflow"].values[-1]) + + def run(self): + """ + Run the model. Calls self.fit() and returns the result of + self.predict(). + """ + self.fit() + results = self.predict() + + results = self.parse_results(results) + + return results + + def fit(self): + self._logger.info('Model Fitting') + + # ************************************************************ + # Multi-LASSO model fitting # + + # raw operational data + self.dt_fit = np.array( + (self.hydraulic_df.index.values + - self.hydraulic_df.index.values[0]).tolist()) / 1.e9 + inj_dV = np.maximum(self.hydraulic_df[self.column_flow].values, 0) + inj_P = self.hydraulic_df[self.column_pressure].values + + # raw seismicity data + seism = self.seismicity + # Mc estimation if not given as input + if self.Mc is None: + Mrange = np.around(np.arange(np.amax(seism['magnitude'].values) + + 5 * self.dM, np.amin( + seism['magnitude'].values) - 5 * self.dM, -self.dM), + decimals=int(-np.log(self.dM))) + argMc = np.argmax(stats.gaussian_kde( + seism['magnitude'].values)(Mrange)) + self.Mc = Mrange[argMc] + + seism = seism[seism['magnitude'] >= self.Mc] + seism_t = np.array( + (seism['time'].values + - self.hydraulic_df.index.values[0]).tolist()) / 1.e9 + seism_m = seism['magnitude'].values + + # find end of injection in training data, otherwise end of file + t_shutin, dV_shutin, Vtot = detect_shutin(self.dt_fit, inj_dV) + N_shutin = len(seism_t[seism_t <= t_shutin]) + + # Maximum Likelihood estimation b-value + self.b_value = np.log10(np.exp(1.)) / \ + (np.mean(seism_m) - (self.Mc - self.dM / 2)) + + # for simulations in predict() + self.fit_N = len(seism_m) + self.fit_N_shutin = N_shutin + self.fit_Vtot = Vtot + + self.af = self.b_value * self.Mc + np.log10(N_shutin) - np.log10(Vtot) + + # features + taubins = np.arange( + self.dt_fit[0], self.dt_fit[-1] + self.Dtau, self.Dtau) + self.tmids = taubins[1:] - self.Dtau / 2 + + if self.Pmodel == 'FlowModels0-1': + self.X_train, self.y_train, self.Pcalib0, self.Pcalib1 = def_Xy( + seism_t, self.dt_fit, inj_dV, inj_P, + taubins, self.Dtau, self.Pmodel) + else: + self.X_train, self.y_train, self.Pcalib = def_Xy( + seism_t, self.dt_fit, inj_dV, inj_P, + taubins, self.Dtau, self.Pmodel) + + # model training + self._logger.info('LASSO m pre:' + str(self.m)) + mLASSO = {} + for i in range(self.m): + if i < len(self.y_train) - self.Nmin_fit: + y_train_sub = np.append(self.y_train[i:], np.repeat(np.nan, 0)) + X_train_sub = np.copy(self.X_train) + X_train_sub[:, 0] = np.append( + X_train_sub[i:, 0], np.repeat(np.nan, i)) + subLASSO = Lasso(alpha=self.alpha, positive=True) + indnoNA = np.where(~np.isnan(X_train_sub[:, 0]))[0] + subLASSO.fit(X_train_sub[indnoNA], y_train_sub[indnoNA]) + mLASSO['subLASSO' + str(i + 1)] = subLASSO + self.mLASSO_trained = mLASSO + # updated when horizon too long for training + self.m = len(self.mLASSO_trained) + self._logger.info('LASSO m:' + str(self.m)) + + if self.m > 0: + if self.Pmodel == 'FlowModels0-1': + self._logger.info('Estimated parameters -> dVplan: ' + + str(mLASSO['subLASSO1'].coef_[0]) + + ', dVmean: ' + + str(mLASSO['subLASSO1'].coef_[1]) + + ', dVdiff: ' + + str(mLASSO['subLASSO1'].coef_[2]) + + ', Pmean: ' + + str(mLASSO['subLASSO1'].coef_[3]) + + ', Pdiff: ' + + str(mLASSO['subLASSO1'].coef_[4]) + + ', tauneg: ' + + str(mLASSO['subLASSO1'].coef_[5]) + + ', yprev:' + + str(mLASSO['subLASSO1'].coef_[6]) + + ', Pplan0: ' + + str(mLASSO['subLASSO1'].coef_[7]) + + ', Pplan1: ' + + str(mLASSO['subLASSO1'].coef_[8]) + ) # tmp - to access LASSO fit + else: + self._logger.info('Estimated parameters -> dVplan: ' + + str(mLASSO['subLASSO1'].coef_[0]) + + ', dVmean: ' + + str(mLASSO['subLASSO1'].coef_[1]) + + ', dVdiff: ' + + str(mLASSO['subLASSO1'].coef_[2]) + + ', Pmean: ' + + str(mLASSO['subLASSO1'].coef_[3]) + + ', Pdiff: ' + + str(mLASSO['subLASSO1'].coef_[4]) + + ', tauneg: ' + + str(mLASSO['subLASSO1'].coef_[5]) + + ', yprev:' + + str(mLASSO['subLASSO1'].coef_[6]) + + ', Pplan: ' + + str(mLASSO['subLASSO1'].coef_[7]) + ) # tmp - to access LASSO fit + + def predict(self): + self._logger.info('Model Predicting') + # ************************************************************** + # Multi-LASSO model forecast # + + # forecast data + plan_t = np.array((self.scenario_df.index.values + - self.hydraulic_df.index.values[0]).tolist()) / 1.e9 + plan_dV = np.maximum(self.scenario_df[self.column_flow].values, 0) + +# if self.Dtau == self._epoch_duration: +# forecast_moments_hires = self._forecast_moments +# else: +# taubins = np.arange(self._forecast_moments[0], self._forecast_moments[-1] + self.Dtau, self.Dtau) +# forecast_moments_hires = taubins + + forecast_moments_hires = np.arange( + self.forecast_moments[0], self.forecast_moments[-1] + self.Dtau, self.Dtau) + # forecast_moments_hires =self.forecast_moments + if self.m >= len(forecast_moments_hires): + self.m = len(forecast_moments_hires) - 1 + + forecast_dV = np.interp(forecast_moments_hires, plan_t, plan_dV) + planned_flow = np.vstack((forecast_moments_hires, forecast_dV)).T + if self.Pmodel == 'FlowModels0-1': + forecast_P0 = self.Pcalib0.predict(planned_flow)[:, 0] + forecast_P1 = self.Pcalib1.predict(planned_flow)[:, 0] + else: + forecast_P = self.Pcalib.predict(planned_flow)[:, 0] + X_test = self.X_train[-1, :][np.newaxis, :] + + # LASSO prediction + y_pred_mLASSO = np.zeros(self.m) + for i in range(self.m): + X_test[:, 0] = forecast_dV[i] + if self.Pmodel == 'FlowModels0-1': + X_test[:, 7] = forecast_P0[i] + X_test[:, 8] = forecast_P1[i] + else: + X_test[:, 7] = forecast_P[i] + y_pred_mLASSO[i] = self.mLASSO_trained['subLASSO' + + str(i + 1)].predict(X_test) + # clip to zero in case of unstable result at very high m + y_pred_mLASSO[y_pred_mLASSO < 0] = 0 + + # filling gaps for tau_i after horizon m with EM1 frequentist (since LASSO tends to EM1 for m -> Inf.) + plan_V = np.cumsum(plan_dV * np.diff(np.append(plan_t[0], plan_t))) + forecast_V = np.interp(forecast_moments_hires, plan_t, plan_V) + # self.y_pred_fill = np.append(np.diff(10 ** (self.af - self.b_value * self.Mc) * forecast_V), 0) + self.y_pred_fill = np.diff( + 10 ** (self.af - self.b_value * self.Mc) * forecast_V) + self.y_pred = np.copy(self.y_pred_fill) + indLASSO = np.arange(self.m) + self.y_pred[indLASSO] = y_pred_mLASSO[indLASSO] + + self.y_pred = self.y_pred.reshape((len(forecast_moments_hires[1:]), 1)) + self.a_value = (np.log10(self.y_pred + 1e-20) + self.b_value + * self.Mc).reshape((len(forecast_moments_hires[1:]), 1)) + if self.m > 0: + self.y_fit = self.mLASSO_trained['subLASSO1'].predict(self.X_train) + else: + self.y_fit = np.zeros(self.X_train.shape[0]) + self.y_fit[self.y_fit <= 0] = 0 + + # resampling + if self.Dtau < self.parameters['epoch_duration']: + self._logger.info('Resampling Output') + factor = self.parameters['epoch_duration'] / self.Dtau + self.y_pred = factor * interp1d(forecast_moments_hires[1:], self.y_pred[:, 0], kind='linear')( + self.forecast_moments[1:])[:, np.newaxis] + self.a_value = (np.log10(self.y_pred + 1e-20) + self.b_value + * self.Mc).reshape((len(self.forecast_moments[1:]), 1)) + self.y_pred_fill = factor * \ + interp1d(forecast_moments_hires[1:], self.y_pred_fill, kind='linear')( + self.forecast_moments[1:]) + + NN = ((np.max(self.dt_fit) - np.min(self.dt_fit)) + / self.parameters['epoch_duration']).astype(int) + 1 + self._time_fit = np.linspace( + np.min(self.dt_fit), np.max(self.dt_fit), NN) + self.dt_fit_mids = self._time_fit[1:] - \ + self.parameters['epoch_duration'] / 2 + self.rate_fit = factor * \ + interp1d(self.tmids, self.y_fit, kind='linear')( + self.dt_fit_mids)[:, np.newaxis] + self.rate_train = factor * \ + interp1d(self.tmids, self.y_train, kind='linear')( + self.dt_fit_mids)[:, np.newaxis] + + # simulations + if self.Nsim > 1: + mLASSO_pred = np.zeros((self.y_pred.shape[0], self.Nsim)) + for t in range(self.y_pred.shape[0]): + mLASSO_pred[t, :] = np.random.poisson( + self.y_pred[t, 0], self.Nsim) + + bsim = np.zeros(self.Nsim) + for sim in range(self.Nsim): + msim = self.Mc - \ + np.log(1 - np.random.random(self.fit_N)) / \ + (self.b_value * np.log(10)) + bsim[sim] = np.log10(np.exp(1.)) / \ + (np.mean(msim) - (self.Mc - self.dM / 2)) + mLASSO_b = bsim # np.tile(bsim, (self.y_pred.shape[0], 1)) + + mLASSO_a = np.log10(mLASSO_pred + 1e-20) + mLASSO_b * self.Mc + mLASSO_afb = mLASSO_b * self.Mc + \ + np.log10(self.fit_N_shutin) - np.log10(self.fit_Vtot) + else: + mLASSO_pred = self.y_pred + mLASSO_b = self.b_value # np.full_like(mLASSO_pred, self.b_value) + mLASSO_a = self.a_value + mLASSO_afb = self.af + # mLASSO_Mc = np.full_like(mLASSO_a, self.Mc) + ############################## + + # For each volume and timestep generate 5 values of interest + # (a, alpha, mc, b, rate) with n_sim samples each. + return mLASSO_a, mLASSO_afb, mLASSO_b, self.rate_fit, mLASSO_pred + + def parse_results(self, results): + """ + Parse Results to a ForecastGRRateGrid per timestep. + A ForecastGRRateGrid requires at least the following columns: + 'number_events', 'longitude_min', 'longitude_max', + 'latitude_min', 'latitude_max', 'depth_min', 'depth_max', + 'a', 'b', 'mc', 'grid_id' + + """ + fit_datetimes = [self.observation_start + timedelta(seconds=t) + for t in self._time_fit] + forecast_datetimes = [self.observation_start + timedelta(seconds=t) + for t in self.forecast_moments] + + bounds = list(wkt.loads(self.geometry.bounding_polygon).bounds) + bounds.insert(2, self.geometry.altitude_min) + bounds.insert(5, self.geometry.altitude_max) + + parsed_results = [] + + for i in range(len(fit_datetimes) - 1): + rate = {'number_events': results[3][i], + 'longitude_min': bounds[0], + 'longitude_max': bounds[3], + 'latitude_min': bounds[1], + 'latitude_max': bounds[4], + 'depth_min': bounds[2], + 'depth_max': bounds[5], + # self.af, + 'a': np.log10(len(self.seismicity[self.seismicity['magnitude'] > self.Mc])) + self.b_value * self.Mc, + 'alpha': self.af, + 'b': self.b_value, + 'mc': self.Mc, + 'grid_id': 0} + + # Create a ForecastGRRateGrid for each Timestep + rategrid = ForecastGRRateGrid(rate, + starttime=fit_datetimes[i], + endtime=fit_datetimes[i + 1]) + + parsed_results.append(rategrid) + + for i in range(len(forecast_datetimes) - 1): + rate = {'number_events': results[4][i], + 'longitude_min': [bounds[0]] * self.Nsim, + 'longitude_max': [bounds[3]] * self.Nsim, + 'latitude_min': [bounds[1]] * self.Nsim, + 'latitude_max': [bounds[4]] * self.Nsim, + 'depth_min': [bounds[2]] * self.Nsim, + 'depth_max': [bounds[5]] * self.Nsim, + 'a': results[0][i], + 'alpha': results[1], + 'b': results[2], + 'mc': [self.Mc] * self.Nsim, + 'grid_id': list(range(self.Nsim))} + + # Create a ForecastGRRateGrid for each Timestep + rategrid = ForecastGRRateGrid(rate, + starttime=forecast_datetimes[i], + endtime=forecast_datetimes[i + 1]) + + parsed_results.append(rategrid) + + return parsed_results diff --git a/ml1/ramsis.py b/ml1/ramsis.py new file mode 100644 index 0000000..c68c919 --- /dev/null +++ b/ml1/ramsis.py @@ -0,0 +1,44 @@ +from ramsis_model import ModelInput, validate_entrypoint + +from hm1d.model import HM1D + + +def run_ml1(model_input: dict): + """ + Entry Point for RT-RAMSIS + + This method gets called by the RT-RAMSIS framework. It is responsible for + initializing the model and running the model with the given input. + """ + + model_input = ModelInput(**model_input) + + model = HM1D(model_input) + + model.fit() + + results = model.predict() + + results = model.parse_results(results) + + return results + + +@validate_entrypoint(induced=True) +def run_ml1_validated(model_input: ModelInput): + """ + Entry Point for RT-RAMSIS + + This method gets called by the RT-RAMSIS framework. It is responsible for + initializing the model and running the model with the given input. + """ + + model = HM1D(model_input) + + model.fit() + + results = model.predict() + + results = model.parse_results(results) + + return results diff --git a/ml1/utils.py b/ml1/utils.py new file mode 100644 index 0000000..2e013db --- /dev/null +++ b/ml1/utils.py @@ -0,0 +1,255 @@ +import numpy as np +import pandas as pd +from matplotlib import pyplot as plt + +from hm1d.FlowModel import FlowModel0, FlowModel1 + + +def fmd(m, mbin, decimals): + m = np.round(m, decimals = decimals) + mmin = np.min(m) + mmax = np.max(m) + mi = np.arange(np.round(np.floor(mmin / mbin) * mbin, decimals = 1), \ + np.round(np.ceil(mmax / mbin) * mbin, decimals = 1), mbin) + bins = np.arange(np.round(np.floor(mmin / mbin) * mbin, decimals = 1), \ + np.round(np.ceil(mmax / mbin) * mbin + mbin, decimals = 1), mbin)-mbin/2 + ni, _ = np.histogram(m, bins = bins) + Ni = [np.sum(ni[i:len(ni)]) for i in range(len(ni))] + distr = pd.DataFrame() + distr['mi'] = mi + distr['ni'] = ni[0:len(mi)] + distr['Ni'] = Ni[0:len(mi)] + return distr + +def detect_shutin(t, dV): # used for the frequentist EM1 mask (to fill gaps after m) + V = np.cumsum(dV[1:] * np.diff(t)) + t_shutin = t[np.argmax(V) + 1] + dV_shutin = dV[np.argmax(V) + 1] + Vtot = np.amax(V) + return t_shutin, dV_shutin, Vtot + + +def daterange(start_date, + end_date, + epoch_duration=None, + training_start_date=None): + """Numpy array returned with forecasting intervals in seconds + increasing with constant increment, inclusive of the end_date. + + :param st art_date: Datetime for generator to start with. + :param end_date: Datetime for generator to finish with. + :param epoch_duration: Number of seconds between returned values. + + :rtype: np.array of seconds from training start time to forecast for + """ + total_seconds = (end_date - start_date).total_seconds() + if not epoch_duration: + epoch_duration = total_seconds + + # the +1 is required to match the r code which gives the range + # including the final variable. + daterange_list = [ + i * epoch_duration for i + in range(int(total_seconds / epoch_duration) + 1)] + if training_start_date: + daterange_list = [i + ( + start_date - training_start_date).total_seconds() + for i in daterange_list] + date_range_array = np.array(daterange_list) + return date_range_array + + +def def_Xy(seism_t, inj_t, inj_dV, inj_P, tbins, dt, Pmodel): + tmids = tbins[1:] - dt / 2 + x_dVplan = np.interp(tmids, inj_t, inj_dV) # flow rate at tau_i (known since planned) = X_1 + y_obs, _ = np.histogram(seism_t, bins=tbins) # target seismicity rate at tau_i + x_yprev = np.insert(y_obs[:-1], 0, 0) + + # define other X_2(tau_{i-1}) features below + N = len(tmids) + x_dVmean = np.zeros(N) + x_dVmin = np.zeros(N) + x_dVmax = np.zeros(N) + x_dVdiff = np.zeros(N) + x_Pmean = np.zeros(N) + x_Pmin = np.zeros(N) + x_Pmax = np.zeros(N) + x_Pdiff = np.zeros(N) + x_tauneg = np.zeros(N) + for tau in np.arange(1, N): + # at tau Minus 1 bin (observed) + ind_tauM1 = np.where(np.logical_and(inj_t >= tbins[tau - 1], inj_t < tbins[tau]))[0] + if len(ind_tauM1) > 0: + x_dVmean[tau] = np.nanmean(inj_dV[ind_tauM1].astype(float)) + x_dVmin[tau] = np.nanmin(inj_dV[ind_tauM1].astype(float)) + x_dVmax[tau] = np.nanmax(inj_dV[ind_tauM1].astype(float)) + x_dVdiff[tau] = x_dVmax[tau] - x_dVmin[tau] + x_Pmean[tau] = np.nanmean(inj_P[ind_tauM1].astype(float)) + x_Pmin[tau] = np.nanmin(inj_P[ind_tauM1].astype(float)) + x_Pmax[tau] = np.nanmax(inj_P[ind_tauM1].astype(float)) + x_Pdiff[tau] = x_Pmax[tau] - x_Pmin[tau] + else: + if tau > 0: # if no data in bin, considers previous bin as data + x_dVmean[tau] = x_dVmean[tau - 1] + x_dVmin[tau] = x_dVmin[tau - 1] + x_dVmax[tau] = x_dVmax[tau - 1] + x_dVdiff[tau] = x_dVdiff[tau - 1] + x_Pmean[tau] = x_Pmean[tau - 1] + x_Pmin[tau] = x_Pmin[tau - 1] + x_Pmax[tau] = x_Pmax[tau - 1] + x_Pdiff[tau] = x_Pdiff[tau - 1] + x_tauneg[tau] = -tau + + ## pressure model ## + iniguess = [1e-09, 1e-14] + xsection = 90 # cross-sectional area for point source model (FlowModel0) + layer_thick = 30 # thickness for line source model (FlowModel1) + max_grid_ext = 2000 # meters + recorded_flow = np.vstack((tmids, x_dVmean)).T + recorded_pressure = np.vstack((tmids, x_Pmean)).T + planned_flow = np.vstack((tmids, x_dVplan)).T + if Pmodel == 'FlowModel0': + flow_model = FlowModel0(recorded_flow, r_grid=np.geomspace(.1, max_grid_ext, 30, endpoint=True), \ + A=xsection, iniguess=iniguess) + flow_model.fit(recorded_pressure) + P_model = flow_model.predict(planned_flow) # Ntimes X Mdistances + x_Pplan = P_model[:, 0] + if Pmodel == 'FlowModel1': + flow_model = FlowModel1(recorded_flow, r_grid=np.geomspace(.1, max_grid_ext, 30, endpoint=True), \ + h=layer_thick, iniguess=iniguess) + flow_model.fit(recorded_pressure) + P_model = flow_model.predict(planned_flow) # Ntimes X Mdistances + x_Pplan = P_model[:, 0] + if Pmodel == 'FlowModels0-1': + flow_model0 = FlowModel0(recorded_flow, r_grid=np.geomspace(.1, max_grid_ext, 30, endpoint=True), \ + A=xsection, iniguess=iniguess) + flow_model0.fit(recorded_pressure) + P_model0 = flow_model0.predict(planned_flow) # Ntimes X Mdistances + x_Pplan0 = P_model0[:, 0] + flow_model1 = FlowModel1(recorded_flow, r_grid=np.geomspace(.1, max_grid_ext, 30, endpoint=True), \ + h=layer_thick, iniguess=iniguess) + flow_model1.fit(recorded_pressure) + P_model1 = flow_model1.predict(planned_flow) # Ntimes X Mdistances + x_Pplan1 = P_model1[:, 0] + + if Pmodel == 'FlowModels0-1': + X = np.concatenate((x_dVplan[:, np.newaxis], + x_dVmean[:, np.newaxis], + x_dVdiff[:, np.newaxis], + x_Pmean[:, np.newaxis], + x_Pdiff[:, np.newaxis], + x_tauneg[:, np.newaxis], + x_yprev[:, np.newaxis], + x_Pplan0[:, np.newaxis], + x_Pplan1[:, np.newaxis]), axis=1) + return X, y_obs, flow_model0, flow_model1 + else: + X = np.concatenate((x_dVplan[:, np.newaxis], + x_dVmean[:, np.newaxis], + x_dVdiff[:, np.newaxis], + x_Pmean[:, np.newaxis], + x_Pdiff[:, np.newaxis], + x_tauneg[:, np.newaxis], + x_yprev[:, np.newaxis], + x_Pplan[:, np.newaxis]), axis=1) + return X, y_obs, flow_model + +# temporary function to log predictions +def array_to_string(arr): + return ', '.join(str(x) for x in arr) + + + +def plotting_data(model): + fig, ax = plt.subplots(1, 2, figsize=(20, 6)) + + ax[0].scatter(model.seismicity.time, (model.seismicity['magnitude'] - np.min(model.seismicity['magnitude'])) / \ + (np.max(model.seismicity['magnitude'] - np.min(model.seismicity['magnitude']))) / 4, \ + color='lightgrey', alpha=.5, zorder=2, label='seismics') + ax[0].step(model.hydraulic_df.index, model.hydraulic_df['topflow'] / \ + np.max(model.hydraulic_df['topflow']) / 4, color='darkblue', label='hydraulics[topflow]') + ax[0].step(model.hydraulic_df.index, model.hydraulic_df['toppressure'] / \ + np.max(model.hydraulic_df['toppressure']) / 4, color='darkred', label='hydraulics[toppressure]') + ax[0].set_xlabel('Date') + ax[0].set_ylabel('Normalised inputs') + ax[0].set_title('Training data') + ax[0].legend(loc='upper left') + ax[0].spines['right'].set_visible(False) + ax[0].spines['top'].set_visible(False) + + ax[1].plot(model.hydraulic_df.index, model.hydraulic_df['topflow'], color='darkblue', \ + label='hydraulics[topflow]') + ax[1].plot(model.scenario_df.index, model.scenario_df[model.column_flow], color='royalblue', label='scenario') + ax[1].set_xlabel('Date') + ax[1].set_ylabel('Flow rate [m$^3$/s]') + ax[1].set_title('Flow time series') + ax[1].legend() + ax[1].spines['right'].set_visible(False) + ax[1].spines['top'].set_visible(False) + fig.tight_layout(); + +def plotting_results(model,model_output, seism_df=pd.DataFrame()): + + inj_t = np.array((model.hydraulic_df.index.values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + Dtau = model.model_input.model_parameters['epoch_duration'] + + NN = ((inj_t[-1] - inj_t[0]) + / Dtau).astype(int) + 1 + time_fit = np.linspace( + inj_t[0], inj_t[-1], NN) + + time_fit_mids = time_fit[1:]#- Dtau / 2 + + time_forecast_mids = model.forecast_moments[1:]- Dtau/2 + + seism = model.seismicity + seism = seism[seism['magnitude'] >= model.Mc] + seism.sort_values(by='time', inplace=True) + seism_t = np.array((seism['time'].values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + + # range pred + + y_pred_mean = np.median(model_output[4], axis=1) + up = np.percentile(model_output[4],axis=1,q=75) + down = np.percentile(model_output[4],axis=1,q=25) + down[down < 0] = 0 + + if not seism_df.empty: + seism_t_all = np.array((seism_df['time'].values - model.hydraulic_df.index.values[0]).tolist()) / 1.e9 + ind = np.logical_and(seism_t_all > 0, seism_t_all < model.forecast_moments[-1]) + seism_df_filt = seism_df[ind] + seism_t_all = seism_t_all[ind] + seism_t_all_aboveMc = seism_t_all[seism_df_filt['magnitude'] >= model.Mc] + taubins_all = np.arange(0, model.forecast_moments[-1] + Dtau, Dtau) + tmids_all = taubins_all[1:] - Dtau / 2 + rate_all = np.histogram(seism_t_all_aboveMc, bins=taubins_all) + + ## + fig, ax = plt.subplots(1, 2, figsize=(20, 6)) + + ax[0].scatter(seism_t, np.arange(1, len(seism_t) + 1), color='darkgrey', label='observations') + ax[0].plot(time_fit_mids,np.cumsum(model_output[3]), color='darkgreen', label='model fit') + ax[0].set_xlabel('Time increment') + ax[0].set_ylabel('Cumulative number of events') + ax[0].set_title('Training fit') + ax[0].legend() + ax[0].spines['right'].set_visible(False) + ax[0].spines['top'].set_visible(False) + + # ax[1].plot(model.res_fit_t, model.rate_train, color = 'lightgrey', label = 'observations') + ax[1].plot(time_fit_mids, model_output[3], color='darkgreen', label='model fit') + ax[1].plot(time_forecast_mids, y_pred_mean, color='darkred', label='model prediction') + ax[1].scatter(time_forecast_mids, y_pred_mean, color='darkred') + ax[1].fill_between(time_forecast_mids, down, up, facecolor='darkred', alpha=.3) + if not seism_df.empty: + ax[1].step(tmids_all, rate_all[0], where='mid', label='data', color='darkgrey') + # ax[1].fill_between(tmids_all, 0, rate_all[0], color='grey', alpha = .5) + #ax[1].set_xlim(0, 50000) + #ax[1].set_ylim(0, 150) + ax[1].set_xlabel('Time increment') + ax[1].set_ylabel('Event rate') + ax[1].set_title('Event-rate time series') + ax[1].legend(loc='upper left') + ax[1].spines['right'].set_visible(False) + ax[1].spines['top'].set_visible(False) + #fig.tight_layout() \ No newline at end of file diff --git a/model_plots.py b/model_plots.py new file mode 100644 index 0000000..9966a00 --- /dev/null +++ b/model_plots.py @@ -0,0 +1,201 @@ +import logging +import os +from datetime import datetime + +import pandas as pd +import numpy as np +from hydws.parser import BoreholeHydraulics +from seismostats.seismicity.catalog import Catalog +from seismostats.utils.coordinates import CoordinateTransformer +from shapely import Polygon +from shapely.wkt import dumps + +from hm1d.ramsis import ModelInput, run_ml1, run_ml1_validated # noqa +from hm1d.model import HM1D +from hm1d.utils import plotting_data,plotting_results + + +# Set up logger +date_strftime_format = "%d-%m-%y %H:%M:%S" +logging.basicConfig( + format='%(asctime)s %(levelname)s %(message)s', + datefmt=date_strftime_format, + level=logging.INFO) + + +def main(): + ############################################################ + # HYDRAULICS + dirpath = os.path.dirname(os.path.abspath(__file__)) + Data_Path = os.path.join(dirpath, "data/") + hydraulics = pd.read_hdf(Data_Path + 'TrainingData.h5') + + hydraulics_plan = pd.read_hdf(Data_Path + 'Scenario.h5') + + # define start and end of forecast + forecast_start = datetime.utcfromtimestamp( + hydraulics_plan.index.values[0].tolist() / 1e9) + forecast_end = datetime.utcfromtimestamp( + hydraulics_plan.index.values[-1].tolist() / 1e9) + + # rename columns to match hydws + hydraulics = hydraulics.drop('time', axis=1).rename( + columns={'pressure': 'toppressure'}) + hydraulics_plan.index.names = ['datetime'] + hydraulics_plan["topflow"] = -1 * np.ones((len(hydraulics_plan), 1)) + + # generate empty parser and load dataframe to empty section + parser = BoreholeHydraulics() + section_id = parser.section_from_dataframe(hydraulics) + hydjson = parser.to_json() + + # replace hydraulics with scenario hydraulics + parser[section_id].hydraulics = hydraulics_plan + scenario_hydjson = parser.to_json() + + ############################################################ + # SEISMICITY + + proj_string = 'epsg:2056' + + # define coordinate transformer, local <-> swiss, external <-> WGS84 + transformer = CoordinateTransformer(proj_string) + top_section_swiss = transformer.to_local_coords( + 8.47449792444771, + 46.5098187019071, + 1271.43402303251 + ) + + # CoordinateTransformer with reference point in epsg:2056 + transformer = CoordinateTransformer(proj_string, *top_section_swiss) + + # Read seismics, transform to local coordinate system + catalog_df = pd.read_hdf(Data_Path + 'TrainingTarget.h5') + catalog_df['Xs'], catalog_df['Ys'], catalog_df['Zs'] = \ + transformer.from_local_coords(catalog_df.Xs.values, + catalog_df.Ys.values, + catalog_df.Zs.values) + + catalog_df = catalog_df.reset_index().rename( + columns={ + 'Xs': 'longitude', + 'Ys': 'latitude', + 'Zs': 'depth', + 'mag': 'magnitude', + 'datetime': 'time'}) + + catalog = Catalog(catalog_df) + catalog['magnitude_type'] = 'mag' + + quakeml = catalog.to_quakeml() + + bounding_polygon = Polygon([[-150, -150], [-150, 150], [150, 150], + [150, -150], [-150, -150]]) + bounding_polygon = transformer.polygon_from_local_coords(bounding_polygon) + + extent = { + 'bounding_polygon': dumps(bounding_polygon), + 'altitude_min': -150 + top_section_swiss[2], + 'altitude_max': 150 + top_section_swiss[2], + } + + data = { + 'forecast_start': forecast_start, + 'forecast_end': forecast_end, + 'injection_well': [hydjson], + 'injection_plan': scenario_hydjson, + 'geometry': extent, # always in WGS84 + 'seismic_catalog': quakeml, + 'model_parameters': { + 'seis_model':'SEED', + 'seed_model_version': 2, + 'SeisSettings': { + "seed_density": 10, #SEED & CAPS + "inter_sigma1": 22.5, #SEED & CAPS + "inter_sigma3": 10, #SEED & CAPS + "sigma1_std": 20, #SEED & CAPS + "sigma3_std": 10, #SEED & CAPS + "cohesion_mean": 2, #SEED & CAPS + "friction_mean": 0.6, #SEED & CAPS + "criticality": 0, #SEED + "stressdrop_coeff": 7, #SEED & CAPS + "phydro": 11.6, #SEED & CAPS + "b_min": 1.0, #SEED + "b_max": 5.0, #SEED + "b_min_diff_stress": 50, #SEED + "b_max_diff_stress": 0, #SEED + "b_vs_depth_range": True, #SEED + "CAPS_sigma_distr": 0.05, #CAPS + "retriggering": False + }, + 'SeisBounds' : { + "sigma1_std": (0.01, 10), + "sigma3_std": (0.01, 10), + "stressdrop_coeff": (1.e-3, 7), + "cohesion_mean": (0.2, 2), + "friction_mean": (0.1, 1), + "seed_density": (1, 1e5), + }, + 'flow_model': 'line_source', + 'FlowSettings': { + "permeability": -20, + "storage": -10, + "viscosity": -3, + 'max_grid_ext:':300, + 'layer_thick':100, + 'cross_area':94 + }, + 'FlowBounds' : { + "storage": (-11, -9), + "permeability": (-20, -13), + }, + 'cost_fun': 'LS', + 'NSim':100, + 'dM': 0.05, + 'Mc': None, + 'well_section_publicid': str(section_id), + 'reference_point': top_section_swiss, # always in WGS84 + 'local_proj_string': proj_string, + 'epoch_duration': 600, + 'n_phases': 8 + } + } + + model_input = ModelInput(**data) + + model = HM1D(model_input) + + plotting_data(model) + + model.fit() + + results = model.predict() + + #results = model.parse_results(results) + #catalog_df_full = pd.read_hdf(Data_Path + 'seismic_Data_full_located.h5') + catalog_df_full = pd.read_hdf(Data_Path + 'Cat_FORGE22.h5') + catalog_df_full.index.names = ['datetime'] + catalog_df_full = catalog_df_full.reset_index().rename( + columns={ + 'Xs': 'longitude', + 'Ys': 'latitude', + 'Zs': 'depth', + 'mag': 'magnitude', + 'datetime': 'time'}) + + #catalog_df_full.rename(columns={"X": "Xs", "Y": "Ys", "Depth": "Zs", "MomMag": "magnitude", "Time(UTC)": "time"}, inplace=True) + #catalog_df_full.rename(columns={"mag": "magnitude"}, inplace=True) + catalog_df_full = catalog_df_full[catalog_df_full["magnitude"] > -5] + catalog_df_full.set_index("time", inplace=True) + catalog_df_full = catalog_df_full[catalog_df_full.index >= hydraulics.index.values[0]] + catalog_df_full = catalog_df_full[catalog_df_full.index <= forecast_end] + catalog_df_full = catalog_df_full.reset_index() + + plotting_results(model,results,catalog_df_full) + + return model + + +if __name__ == "__main__": + result = main() + diff --git a/model_plots_forge.py b/model_plots_forge.py new file mode 100644 index 0000000..a6c147f --- /dev/null +++ b/model_plots_forge.py @@ -0,0 +1,183 @@ +import logging +import os +from datetime import datetime + +import pandas as pd +import numpy as np +from hydws.parser import BoreholeHydraulics +from seismostats.seismicity.catalog import Catalog +from seismostats.utils.coordinates import CoordinateTransformer +from shapely import Polygon +from shapely.wkt import dumps + +from ml1.ramsis import ModelInput, run_ml1, run_ml1_validated # noqa +from ml1.model import ML1 +from ml1.utils import plotting_data,plotting_results + + +# Set up logger +date_strftime_format = "%d-%m-%y %H:%M:%S" +logging.basicConfig( + format='%(asctime)s %(levelname)s %(message)s', + datefmt=date_strftime_format, + level=logging.INFO) + + +def main(): + ############################################################ + # HYDRAULICS + dirpath = os.path.dirname(os.path.abspath(__file__)) + Data_Path = os.path.join(dirpath, "data/") + #hydraulics = pd.read_hdf(Data_Path + 'TrainingData.h5') + hydraulics = pd.read_hdf(Data_Path + 'Hydr_FORGE22.h5') + hydraulics_plan = hydraulics[hydraulics.index.values >= np.array(datetime(2022,4,21,15,0)).astype('datetime64')] + hydraulics_plan = hydraulics_plan[hydraulics_plan.index.values < np.array(datetime(2022,4,21,18)).astype('datetime64')] + + + # define start and end of forecast + forecast_start =datetime(2022,4,21,15, 0)#datetime.utcfromtimestamp(hydraulics_plan.index.values[0].tolist() / 1e9) + forecast_end = datetime(2022,4,21,18,0)#datetime.utcfromtimestamp(hydraulics_plan.index.values[-1].tolist() / 1e9) + + hydraulics = hydraulics[hydraulics.index.values >= np.array(datetime(2022,4,21,13,00,23)).astype('datetime64')] + hydraulics = hydraulics[hydraulics.index.values < np.array(datetime(2022,4,21,15,0)).astype('datetime64')] + + hydraulics_plan["topflow"]=-1*np.ones((len(hydraulics_plan),1)) + hydraulics_plan.index.values[-1]=np.array(datetime(2022,4,21,18)).astype('datetime64') + hydraulics_plan.topflow.values[-1] = hydraulics_plan.topflow.values[-2] + + hydraulics_plan=hydraulics_plan[~hydraulics_plan.index.duplicated(keep='first')] + + #hydraulics_plan = pd.read_hdf(Data_Path + 'Scenario.h5') + + + observation_start = datetime.utcfromtimestamp(hydraulics.index.values[0].tolist() / 1e9) + observation_end = datetime.utcfromtimestamp(hydraulics.index.values[-1].tolist() / 1e9) + + # rename columns to match hydws + #hydraulics = hydraulics.drop('time', axis=1).rename( + # columns={'pressure': 'toppressure'}) + hydraulics_plan.index.names = ['datetime'] + + # generate empty parser and load dataframe to empty section + parser = BoreholeHydraulics() + section_id = parser.section_from_dataframe(hydraulics) + hydjson = parser.to_json() + + # replace hydraulics with scenario hydraulics + parser[section_id].hydraulics = hydraulics_plan + scenario_hydjson = parser.to_json() + + + ############################################################ + # SEISMICITY + + proj_string = 'epsg:2056' + + # define coordinate transformer, local <-> swiss, external <-> WGS84 + transformer = CoordinateTransformer(proj_string) + top_section_swiss = transformer.to_local_coords( + 8.47449792444771, + 46.5098187019071, + 1271.43402303251 + ) + + # CoordinateTransformer with reference point in epsg:2056 + transformer = CoordinateTransformer(proj_string, *top_section_swiss) + + # Read seismics, transform to local coordinate system + #catalog_df = pd.read_hdf(Data_Path + 'TrainingTarget.h5') + catalog_df = pd.read_hdf(Data_Path + 'Cat_FORGE22.h5') + catalog_df = catalog_df[catalog_df.index.values < np.array(observation_end).astype('datetime64')] + catalog_df = catalog_df[catalog_df.index.values >= np.array(observation_start).astype('datetime64')] + catalog_df['Xs'], catalog_df['Ys'], catalog_df['Zs'] = \ + transformer.from_local_coords(catalog_df.Xs.values, + catalog_df.Ys.values, + catalog_df.Zs.values) + + catalog_df.index.names = ['datetime'] + catalog_df = catalog_df.reset_index().rename( + columns={ + 'Xs': 'longitude', + 'Ys': 'latitude', + 'Zs': 'depth', + 'mag': 'magnitude', + 'datetime': 'time'}) + + catalog = Catalog(catalog_df) + catalog['magnitude_type'] = 'mag' + + quakeml = catalog.to_quakeml() + + bounding_polygon = Polygon([[-150, -150], [-150, 150], [150, 150], + [150, -150], [-150, -150]]) + bounding_polygon = transformer.polygon_from_local_coords(bounding_polygon) + + extent = { + 'bounding_polygon': dumps(bounding_polygon), + 'altitude_min': -150 + top_section_swiss[2], + 'altitude_max': 150 + top_section_swiss[2], + } + + data = { + 'forecast_start': forecast_start, + 'forecast_end': forecast_end, + 'injection_well': [hydjson], + 'injection_plan': scenario_hydjson, + 'geometry': extent, # always in WGS84 + 'seismic_catalog': quakeml, + 'model_parameters': { + 'M_decimals': 2, + 'dM': 0.05, + 'Mc': None, + 'LASSO_m': 100, + 'LASSO_penalty': 1, + 'LASSO_Nmin_fit': 10, + 'Nsim': 150, + 'Delta_tau': 600, + 'Pmodel': 'FlowModels0-1', + 'well_section_publicid': str(section_id), + 'reference_point': top_section_swiss, # always in WGS84 + 'local_proj_string': proj_string, + 'epoch_duration': 600, + 'n_phases': 8 + } + } + + model_input = ModelInput(**data) + + model = ML1(model_input) + + plotting_data(model) + + model.fit() + + results = model.predict() + + #results = model.parse_results(results) + #catalog_df_full = pd.read_hdf(Data_Path + 'seismic_Data_full_located.h5') + catalog_df_full = pd.read_hdf(Data_Path + 'Cat_FORGE22.h5') + catalog_df_full.index.names = ['datetime'] + catalog_df_full = catalog_df_full.reset_index().rename( + columns={ + 'Xs': 'longitude', + 'Ys': 'latitude', + 'Zs': 'depth', + 'mag': 'magnitude', + 'datetime': 'time'}) + + #catalog_df_full.rename(columns={"X": "Xs", "Y": "Ys", "Depth": "Zs", "MomMag": "magnitude", "Time(UTC)": "time"}, inplace=True) + #catalog_df_full.rename(columns={"mag": "magnitude"}, inplace=True) + catalog_df_full = catalog_df_full[catalog_df_full["magnitude"] > -5] + catalog_df_full.set_index("time", inplace=True) + catalog_df_full = catalog_df_full[catalog_df_full.index >= hydraulics.index.values[0]] + catalog_df_full = catalog_df_full[catalog_df_full.index <= forecast_end] + catalog_df_full = catalog_df_full.reset_index() + + plotting_results(model,results,catalog_df_full) + + return model + + +if __name__ == "__main__": + result = main() + diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..7fd26b9 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,3 @@ +[build-system] +requires = ["setuptools"] +build-backend = "setuptools.build_meta" \ No newline at end of file diff --git a/run_model.py b/run_model.py new file mode 100644 index 0000000..ab5f4f3 --- /dev/null +++ b/run_model.py @@ -0,0 +1,163 @@ +import logging +import os +from datetime import datetime + +import pandas as pd +from hydws.parser import BoreholeHydraulics +from seismostats.seismicity.catalog import Catalog +from seismostats.utils.coordinates import CoordinateTransformer +from shapely import Polygon +from shapely.wkt import dumps + +from hm1d.ramsis import run_hm1d, run_hm1d_validated # noqa + +# Set up logger +date_strftime_format = "%d-%m-%y %H:%M:%S" +logging.basicConfig( + format='%(asctime)s %(levelname)s %(message)s', + datefmt=date_strftime_format, + level=logging.INFO) + + +def main(): + ############################################################ + # HYDRAULICS + dirpath = os.path.dirname(os.path.abspath(__file__)) + Data_Path = os.path.join(dirpath, "data/") + hydraulics = pd.read_hdf(Data_Path + 'TrainingData.h5') + + hydraulics_plan = pd.read_hdf(Data_Path + 'Scenario.h5') + + # define start and end of forecast + forecast_start = datetime.utcfromtimestamp( + hydraulics_plan.index.values[0].tolist() / 1e9) + forecast_end = datetime.utcfromtimestamp( + hydraulics_plan.index.values[-1].tolist() / 1e9) + + # rename columns to match hydws + hydraulics = hydraulics.drop('time', axis=1).rename( + columns={'pressure': 'toppressure'}) + hydraulics_plan.index.names = ['datetime'] + + # generate empty parser and load dataframe to empty section + parser = BoreholeHydraulics() + section_id = parser.section_from_dataframe(hydraulics) + hydjson = parser.to_json() + + # replace hydraulics with scenario hydraulics + parser[section_id].hydraulics = hydraulics_plan + scenario_hydjson = parser.to_json() + + ############################################################ + # SEISMICITY + + proj_string = 'epsg:2056' + + # define coordinate transformer, local <-> swiss, external <-> WGS84 + transformer = CoordinateTransformer(proj_string) + top_section_swiss = transformer.to_local_coords( + 8.47449792444771, + 46.5098187019071, + 1271.43402303251 + ) + + # CoordinateTransformer with reference point in epsg:2056 + transformer = CoordinateTransformer(proj_string, *top_section_swiss) + + # Read seismics, transform to local coordinate system + catalog_df = pd.read_hdf(Data_Path + 'TrainingTarget.h5') + catalog_df['Xs'], catalog_df['Ys'], catalog_df['Zs'] = \ + transformer.from_local_coords(catalog_df.Xs.values, + catalog_df.Ys.values, + catalog_df.Zs.values) + + catalog_df = catalog_df.reset_index().rename( + columns={ + 'Xs': 'longitude', + 'Ys': 'latitude', + 'Zs': 'depth', + 'mag': 'magnitude', + 'datetime': 'time'}) + + catalog = Catalog(catalog_df) + catalog['magnitude_type'] = 'Mw' + + quakeml = catalog.to_quakeml() + + bounding_polygon = Polygon([[-150, -150], [-150, 150], [150, 150], + [150, -150], [-150, -150]]) + bounding_polygon = transformer.polygon_from_local_coords(bounding_polygon) + + extent = { + 'bounding_polygon': dumps(bounding_polygon), + 'altitude_min': -150 + top_section_swiss[2], + 'altitude_max': 150 + top_section_swiss[2], + } + + data = { + 'forecast_start': forecast_start, + 'forecast_end': forecast_end, + 'injection_well': [hydjson], + 'injection_plan': scenario_hydjson, + 'geometry': extent, # always in WGS84 + 'seismic_catalog': quakeml, + 'model_parameters': { + 'M_decimals': 2, + 'dM': 0.05, + 'Mc': None, + 'LASSO_m': 10, + 'LASSO_penalty': 1, + 'LASSO_Nmin_fit': 5, + 'Nsim': 150, + 'Delta_tau': 600, + 'Pmodel': 'FlowModels0-1', + 'well_section_publicid': str(section_id), + 'reference_point': top_section_swiss, # always in WGS84 + 'local_proj_string': proj_string, + 'epoch_duration': 600, + 'n_phases': 8 + } + } + + # # # initialize the model + + #model_output = run_ml1(data) # unvalidated input + model_output = run_ml1_validated(data) # validated input + + ############################################################ + # results are a list of ForecastGRRateGrids, they can for example + # be accessed like this: + print('\n\n' + f'100 Simulations for timestep from {model_output[-1].starttime} ' + f'until {model_output[-1].endtime}\n', + model_output[-1]) + + # it is easy to add the datetime index to the dataframe: + print('\n\n' + 'Same dataframe with the datetime index added:\n', + model_output[-1].add_time_index()) + + # as well as concatenating all the simulations into one dataframe: + full_df = pd.concat([x.add_time_index() for x in model_output]) + print('\n\n' + 'All simulations concatenated into one dataframe:\n', + full_df) + + ############################################################ + # you have also available here the: + + # input hydraulics (history) as a DataFrame + print(hydraulics) + + # input injection plan as a DataFrame + print(hydraulics_plan) + + # input seismicity as a seismostats Catalog + print(catalog) + + return model_output + + +if __name__ == "__main__": + result = main() + diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..5aece8a --- /dev/null +++ b/setup.cfg @@ -0,0 +1,57 @@ +[metadata] +name = ml1 +author = + Victor Clasen Repolles + Rinaldi Antonio + Dimitrios Karvounis + Federico Ciardo +author_email = + victor.clasen@sed.ethz.ch + antoniopio.rinaldi@sed.ethz.ch +version = 0.1.0 +description = + !D Hydromechanical models for Induced Seismicity Forecasts +long_description = file: README.md, LICENSE +license = AGPL License +classifiers = + Programming Language :: Python :: 3 + +[options] +packages = find: +install_requires = + h5py + hydws-client @ git+https://git@gitlab.seismo.ethz.ch/indu/hydws-client.git + nbformat + numpy + scipy + pandas + pyarrow + pydantic + ramsis-model[ramsis-final] @ git+https://gitlab.seismo.ethz.ch/indu/ramsis-model.git + scikit-learn + seismostats @ git+https://github.com/swiss-seismological-service/SeismoStats.git + tables + numba + +python_requires = >= 3.10 + +[options.extras_require] +dev = + pytest + pytest-cov + autopep8 + flake8 + +[flake8] +select = E,F,W +max_line_length = 79 +ignore = E402, W503 +exclude = + .git, + .tox, + .eggs, + .config, + *.egg-info, + __pycache__, + .pytest_cache, + env, diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..07b4426 --- /dev/null +++ b/tox.ini @@ -0,0 +1,17 @@ +[tox] +envlist = py310-tests,flake8 +minversion = 4.0 + +[testenv] +usedevelop = true +download = true +extras = + tests + py310: py310 +deps = + cython + +[testenv:flake8] +skip_install = true +deps = flake8 +commands = flake8 . -- GitLab