diff options
author | eschnett <> | 2001-03-01 11:40:00 +0000 |
---|---|---|
committer | eschnett <> | 2001-03-01 11:40:00 +0000 |
commit | 47187487f50ae040def8edebbaa3adb5b3c76531 (patch) | |
tree | 445d3e34ce8b89812994b6614f7bc9f4acbc7fe2 /Carpet |
Initial revision
darcs-hash:20010301114010-f6438-12fb8a9ffcc80e86c0a97e37b5b0dae0dbc59b79.gz
Diffstat (limited to 'Carpet')
437 files changed, 77486 insertions, 0 deletions
diff --git a/Carpet/COPYING b/Carpet/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/Carpet/COPYING b/Carpet/Carpet/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/Carpet/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/Carpet/README b/Carpet/Carpet/README new file mode 100644 index 000000000..81065fb42 --- /dev/null +++ b/Carpet/Carpet/README @@ -0,0 +1,9 @@ +Cactus Code Thorn Carpet +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/README,v 1.2 2004/01/25 14:57:27 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides a parallel AMR (adaptive mesh refinement) driver +with MPI. diff --git a/Carpet/Carpet/configuration.ccl b/Carpet/Carpet/configuration.ccl new file mode 100644 index 000000000..3880e348b --- /dev/null +++ b/Carpet/Carpet/configuration.ccl @@ -0,0 +1,12 @@ +# Configuration definitions for thorn Carpet +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/configuration.ccl,v 1.5 2004/06/08 21:09:25 schnetter Exp $ + +PROVIDES Carpet +{ + SCRIPT + LANG +} + +REQUIRES IOUtil CarpetLib + +REQUIRES THORNS: IOUtil CarpetLib diff --git a/Carpet/Carpet/doc/TODO b/Carpet/Carpet/doc/TODO new file mode 100644 index 000000000..00eba8d0a --- /dev/null +++ b/Carpet/Carpet/doc/TODO @@ -0,0 +1,17 @@ +-*-Text-*- +$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/doc/TODO,v 1.5 2001/04/23 08:10:11 schnetter Exp $ + +CarpetSlab: Add support for diagonal lines + +Carpet: Add support for a shadow hierarchy + +Carpet: Distribute processes in all directions, not only z + +Carpet: Test suite + +Carpet: Finish documentation + +CarpetIOASCII: put more information into output files + +Carpet: Allow en-/disabling storage for grid functions with one time +level diff --git a/Carpet/Carpet/doc/schedule.tex b/Carpet/Carpet/doc/schedule.tex new file mode 100644 index 000000000..fcb529ae2 --- /dev/null +++ b/Carpet/Carpet/doc/schedule.tex @@ -0,0 +1,141 @@ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/doc/schedule.tex,v 1.3 2004/02/09 12:42:03 schnetter Exp $ +\documentclass{article} +\begin{document} +\section{The PUGH schedule:} + +\fbox{\begin{minipage}[t]{\textwidth} +STARTUP\\ +WRAGH\\ +PARAMCHECK\\ +BASEGRID +\end{minipage}} +\\ +\fbox{\begin{minipage}[t]{\textwidth} +Recover? (yes/no) +\\ +\fbox{\begin{minipage}[t]{0.475\textwidth} +INITIAL\\ +POSTINITIAL\\ +POSTSTEP +\end{minipage}} +\fbox{\begin{minipage}[t]{0.475\textwidth} +RECOVER\_VARIABLES\\ +POST\_RECOVER\_VARIABLES +\end{minipage}} +\end{minipage}} +\\ +\fbox{\begin{minipage}[t]{\textwidth} +CPINITIAL\\ +ANALYSIS\\ +OutputGH +\end{minipage}} +\\ +\fbox{\begin{minipage}[t]{0.1\textwidth} +main\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.87\textwidth} +Advance time\\ +PRESTEP\\ +EVOL\\ +POSTSTEP\\ +CHECKPOINT\\ +ANALYSIS\\ +OutputGH +\end{minipage}}} +\\ +\fbox{\begin{minipage}[t]{\textwidth} +TERMINATE\\ +SHUTDOWN +\end{minipage}} + + + +\newpage +\section{The Carpet schedule:} + +\fbox{\begin{minipage}[t]{\textwidth} +STARTUP\\ +WRAGH\\ +PARAMCHECK\\ +BASEGRID +\end{minipage}} +\\ +\fbox{\begin{minipage}[t]{\textwidth} +Recover? (yes/no) +\\ +\fbox{\begin{minipage}[t]{0.1\textwidth} +initial\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.345\textwidth} +INITIAL\\ +Regrid\\ +$\longrightarrow$ Recurse\\ +Restrict\\ +POSTRESTRICTINITIAL\\ +POSTINITIAL\\ +POSTSTEP +\end{minipage}}} +\fbox{\begin{minipage}[t]{0.1\textwidth} +recover\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.345\textwidth} +RECOVER\_VARIABLES\\ +POST\_RECOVER\_VARIABLES +$\longrightarrow$ Recurse +\end{minipage}}} +\\ +\fbox{\begin{minipage}[t]{0.47\textwidth} +3 Time Level Initialisation +\end{minipage}} +\end{minipage}} +\\ +\fbox{\begin{minipage}[t]{0.1\textwidth} +initial\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.87\textwidth} +$\longrightarrow$ Recurse\\ +CPINITIAL\\ +ANALYSIS\\ +OutputGH +\end{minipage}}} +\\ +\fbox{\begin{minipage}[t]{0.1\textwidth} +main\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.1\textwidth} +evol\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.74\textwidth} +Regrid\\ +Advance time\\ +PRESTEP\\ +EVOL\\ +$\longrightarrow$ Recurse\\ +Restrict\\ +POSTRESTRICT\\ +POSTSTEP\\ +CHECKPOINT\\ +ANALYSIS\\ +OutputGH +\end{minipage}}}} +\\ +\fbox{\begin{minipage}[t]{0.1\textwidth} +shutdown\\ +loop +\end{minipage} +\fbox{\begin{minipage}[t]{0.87\textwidth} +$\longrightarrow$ Recurse\\ +TERMINATE +\end{minipage}}} +\\ +\fbox{\begin{minipage}[t]{\textwidth} +SHUTDOWN +\end{minipage}} + +\end{document} diff --git a/Carpet/Carpet/doc/threelev_initdata.eps b/Carpet/Carpet/doc/threelev_initdata.eps new file mode 100644 index 000000000..6e7283a3f --- /dev/null +++ b/Carpet/Carpet/doc/threelev_initdata.eps @@ -0,0 +1,552 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: threelev_initdata.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Wed Jul 17 01:40:55 2002 +%%For: shawley@ockham (,,,) +%%BoundingBox: 0 0 572 603 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 603 moveto 0 0 lineto 572 0 lineto 572 603 lineto closepath clip newpath +-10.0 649.1 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Helvetica /Helvetica-iso isovec ReEncode +/Times-Roman /Times-Roman-iso isovec ReEncode +/Times-Bold /Times-Bold-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06299 0.06299 sc +% +% Fig objects follow +% +% Polyline +7.500 slw +n 900 1800 m + 3600 1800 l gs col0 s gr +% Polyline +n 5400 1800 m + 8100 1800 l gs col0 s gr +% Polyline +n 5400 5400 m + 8100 5400 l gs col0 s gr +% Polyline +n 900 5400 m + 3600 5400 l gs col0 s gr +% Polyline +n 900 9000 m + 3600 9000 l gs col0 s gr +% Polyline +n 5400 9000 m + 8100 9000 l gs col0 s gr +% Polyline +n 900 900 m + 3600 900 l gs col0 s gr +% Polyline +n 5400 900 m + 8100 900 l gs col0 s gr +% Polyline +n 5400 2700 m + 8100 2700 l gs col0 s gr +% Polyline +n 5400 4500 m + 8100 4500 l gs col0 s gr +% Polyline +n 5400 6300 m + 8100 6300 l gs col0 s gr +% Polyline +n 900 4500 m + 3600 4500 l gs col0 s gr +% Polyline +n 900 6300 m + 3600 6300 l gs col0 s gr +% Polyline +n 1810 1750 m + 2710 1750 l gs col2 s gr +% Polyline +n 1355 1775 m + 3155 1775 l gs col1 s gr +% Polyline +n 6310 1750 m + 7210 1750 l gs col2 s gr +% Polyline +n 5855 1775 m + 7655 1775 l gs col1 s gr +% Polyline +n 1360 4925 m + 3160 4925 l gs col1 s gr +% Polyline +n 1810 5350 m + 2710 5350 l gs col2 s gr +% Polyline +n 1355 5375 m + 3155 5375 l gs col1 s gr +% Polyline +n 5860 4925 m + 7660 4925 l gs col1 s gr +% Polyline +n 6310 5350 m + 7210 5350 l gs col2 s gr +% Polyline +n 5855 5375 m + 7655 5375 l gs col1 s gr +% Polyline +n 5855 5830 m + 7655 5830 l gs col1 s gr +% Polyline +n 900 8100 m + 3600 8100 l gs col0 s gr +% Polyline +n 900 9900 m + 3600 9900 l gs col0 s gr +% Polyline +n 1360 8525 m + 3160 8525 l gs col1 s gr +% Polyline +n 1805 8735 m + 2705 8735 l gs col2 s gr +% Polyline +n 1810 8950 m + 2710 8950 l gs col2 s gr +% Polyline +n 1355 8975 m + 3155 8975 l gs col1 s gr +% Polyline +n 1355 9430 m + 3155 9430 l gs col1 s gr +% Polyline +n 5400 8100 m + 8100 8100 l gs col0 s gr +% Polyline +n 5400 9900 m + 8100 9900 l gs col0 s gr +% Polyline +n 5860 8525 m + 7660 8525 l gs col1 s gr +% Polyline +n 6305 8735 m + 7205 8735 l gs col2 s gr +% Polyline +n 6310 8950 m + 7210 8950 l gs col2 s gr +% Polyline +n 5855 8975 m + 7655 8975 l gs col1 s gr +% Polyline +n 5855 9430 m + 7655 9430 l gs col1 s gr +% Polyline +n 6305 9205 m + 7205 9205 l gs col2 s gr +% Polyline +2 slj + [15 30] 30 sd +gs clippath +842 999 m 798 958 l 694 1068 l 799 1002 l 738 1109 l cp +eoclip +n 810 1770 m 809 1769 l 805 1766 l 800 1760 l 792 1752 l 781 1742 l + 768 1728 l 754 1713 l 738 1695 l 721 1676 l 705 1655 l + 688 1633 l 673 1609 l 658 1584 l 645 1557 l 633 1528 l + 622 1497 l 614 1462 l 609 1426 l 607 1387 l 609 1348 l + 614 1311 l 622 1276 l 633 1244 l 645 1214 l 658 1186 l + 673 1160 l 688 1136 l 705 1113 l 721 1091 l 738 1070 l + 754 1051 l 768 1034 l 781 1020 l 792 1009 l + 810 990 l gs col0 s gr gr + [] 0 sd +% arrowhead +0 slj +n 738 1109 m 799 1002 l 694 1068 l col0 s +% Polyline +2 slj + [15 30] 30 sd +gs clippath +5350 962 m 5306 921 l 5202 1031 l 5307 965 l 5246 1072 l cp +eoclip +n 5318 1733 m 5317 1732 l 5313 1729 l 5308 1723 l 5300 1715 l 5289 1705 l + 5276 1691 l 5262 1676 l 5246 1658 l 5229 1639 l 5213 1618 l + 5196 1596 l 5181 1572 l 5166 1547 l 5153 1520 l 5141 1491 l + 5130 1460 l 5122 1425 l 5117 1389 l 5115 1350 l 5117 1311 l + 5122 1274 l 5130 1239 l 5141 1207 l 5153 1177 l 5166 1149 l + 5181 1123 l 5196 1099 l 5213 1076 l 5229 1054 l 5246 1033 l + 5262 1014 l 5276 997 l 5289 983 l 5300 972 l + 5318 953 l gs col0 s gr gr + [] 0 sd +% arrowhead +0 slj +n 5246 1072 m 5307 965 l 5202 1031 l col0 s +% Polyline +2 slj + [15 30] 30 sd +gs clippath +5869 4935 m 5834 4886 l 5710 4974 l 5826 4930 l 5745 5023 l cp +eoclip +n 5820 5385 m 5818 5383 l 5814 5380 l 5808 5373 l 5798 5364 l 5786 5352 l + 5773 5337 l 5759 5321 l 5745 5304 l 5731 5286 l 5719 5266 l + 5707 5245 l 5698 5221 l 5690 5196 l 5686 5169 l 5685 5140 l + 5688 5112 l 5695 5085 l 5705 5061 l 5716 5040 l 5729 5021 l + 5743 5004 l 5759 4987 l 5774 4973 l 5789 4959 l 5804 4947 l + 5816 4937 l + 5840 4920 l gs col1 s gr gr + [] 0 sd +% arrowhead +0 slj +n 5745 5023 m 5826 4930 l 5710 4974 l col1 s +% Polyline +2 slj + [15 30] 30 sd +gs clippath +1361 4930 m 1319 4888 l 1211 4995 l 1318 4932 l 1254 5038 l cp +eoclip +n 1309 5361 m 1307 5359 l 1303 5354 l 1296 5346 l 1287 5335 l 1276 5322 l + 1264 5306 l 1252 5288 l 1240 5269 l 1230 5248 l 1221 5225 l + 1215 5200 l 1211 5171 l 1210 5140 l 1214 5109 l 1220 5080 l + 1230 5055 l 1241 5032 l 1253 5011 l 1266 4992 l 1279 4975 l + 1293 4959 l 1305 4945 l + 1330 4920 l gs col1 s gr gr + [] 0 sd +% arrowhead +0 slj +n 1254 5038 m 1318 4932 l 1211 4995 l col1 s +% Polyline +2 slj + [15 15] 15 sd +gs clippath +1813 8743 m 1775 8697 l 1710 8750 l 1776 8736 l 1748 8797 l cp +eoclip +n 1778 8955 m 1777 8955 l 1774 8952 l 1767 8947 l 1757 8939 l 1745 8928 l + 1732 8916 l 1721 8902 l 1712 8886 l 1705 8867 l 1703 8845 l + 1706 8823 l 1714 8804 l 1724 8787 l 1736 8772 l 1748 8759 l + 1761 8748 l + 1783 8730 l gs col2 s gr gr + [] 0 sd +% arrowhead +0 slj +n 1748 8797 m 1776 8736 l 1710 8750 l col2 s +% Polyline +2 slj + [15 15] 15 sd +gs clippath +6305 8728 m 6267 8682 l 6202 8735 l 6268 8721 l 6240 8782 l cp +eoclip +n 6270 8940 m 6269 8940 l 6266 8937 l 6259 8932 l 6249 8924 l 6237 8913 l + 6224 8901 l 6213 8887 l 6204 8871 l 6197 8852 l 6195 8830 l + 6198 8808 l 6206 8789 l 6216 8772 l 6228 8757 l 6240 8744 l + 6253 8733 l + 6275 8715 l gs col2 s gr gr + [] 0 sd +% arrowhead +0 slj +n 6240 8782 m 6268 8721 l 6202 8735 l col2 s +/Helvetica-iso ff 240.00 scf sf +3709 4578 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3672 8178 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8190 8178 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8153 4578 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8134 5498 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 195.00 scf sf +7629 8591 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3147 8591 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7647 1841 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7666 5329 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7703 5891 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 150.00 scf sf +2715 8797 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 150.00 scf sf +2757 5388 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7249 8940 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7223 5388 m +gs 1 -1 sc (" ") col2 sh gr +/Symbol ff 255.00 scf sf +338 941 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +353 1811 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +4718 911 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 255.00 scf sf +4808 2771 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +323 6386 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +158 4571 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 255.00 scf sf +4823 1886 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +443 5486 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +4943 5471 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +4703 6386 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 255.00 scf sf +4793 4571 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +368 8156 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +488 9086 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +218 9956 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 255.00 scf sf +4853 9971 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 255.00 scf sf +4928 9101 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 255.00 scf sf +4718 8186 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Helvetica-iso ff 150.00 scf sf +2730 1775 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 195.00 scf sf +3122 1821 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 150.00 scf sf +7238 1758 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 195.00 scf sf +7655 5002 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3152 4998 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 150.00 scf sf +2749 8925 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7220 8786 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7250 9207 m +gs 1 -1 sc (_p_p) col2 sh gr +/Helvetica-iso ff 195.00 scf sf +7661 9432 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 240.00 scf sf +3642 9000 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3629 9901 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3619 6311 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3637 5399 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3634 981 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8138 2692 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8135 1789 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8129 971 m +gs 1 -1 sc (" ") col0 sh gr +/Times-Roman-iso ff 360.00 scf sf +4365 8280 m +gs 1 -1 sc 270.0 rot (FLIP ALL) col0 sh gr +/Times-Roman-iso ff 270.00 scf sf +9045 7965 m +gs 1 -1 sc 270.0 rot (If Maxlevels even,) col0 sh gr +/Times-Roman-iso ff 270.00 scf sf +8775 8145 m +gs 1 -1 sc 270.0 rot (then FLIP ALL) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +2085 2355 m +gs 1 -1 sc (2) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +6671 3142 m +gs 1 -1 sc (3) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +2088 6713 m +gs 1 -1 sc (4) col0 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 8955 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 9405 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7695 8955 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 240.00 scf sf +8145 9900 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8145 9000 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8145 6300 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 5355 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 240.00 scf sf +3645 1800 m +gs 1 -1 sc (_p) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +2160 10305 m +gs 1 -1 sc (6) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +6795 10260 m +gs 1 -1 sc (7) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +6660 6660 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman-iso ff 360.00 scf sf +4230 1080 m +gs 1 -1 sc 270.0 rot (FLIP l=0) col0 sh gr +/Times-Roman-iso ff 360.00 scf sf +4320 4680 m +gs 1 -1 sc 270.0 rot (FLIP l=0,1) col0 sh gr +$F2psEnd +rs diff --git a/Carpet/Carpet/doc/threelev_initdata.tex b/Carpet/Carpet/doc/threelev_initdata.tex new file mode 100644 index 000000000..db59176b1 --- /dev/null +++ b/Carpet/Carpet/doc/threelev_initdata.tex @@ -0,0 +1,107 @@ +\documentclass{article} + +\usepackage{epsf} +\topmargin -0.5in +\textheight 9.9in +\oddsidemargin -0.3in +\leftmargin -1in +\textwidth 7in + + +\begin{document} + +\title{Getting Three Timelevels of FMR Initial Data} +\author{Scott Hawley} +\date{June 6, 2002} +\maketitle + +For parabolic interpolation in time, one needs three timelevels worth +of data on the coarse grid in order to provide boundary data on the +finer grid. Here we describe one scheme for obtaining these extra +timelevels of data at the initial time. Essentially, we evolve +each grid backwards in time by two steps, but we do so rather carefully. + +The following diagram shows the scheme. We start with initial +data for all grids being specified at the current time (Step 1, not +shown). We then evolve the coarse grid forward one step (Step 2) by +the timestep $\Delta t$; +in so doing we first move the coarse grid storage from the current +timelevel (denoted by `` '' on the right of the first pane in the +diagram, because variables at the current time receive no suffix +in Cactus) to the previous timelevel (denoted by ``\_p'') before +evolving. We then ``flip'' all the timelevels for the coarse grid (l=0), +meaning +that we exchange the data on the `` '' and \_p\_p timelevels, +thus turning the picture upside down. +We then evolve the coarse grid ``backward'' --- which is really +just forward but with a timestep of $-\Delta t$. Then we move on +to the finer grid, evolving and flipping... + +Take a look at the diagram. (We use $\tau$ instead of $t$ to denote +the time, simply because it was easier to do that in the +drawing program.) After the diagram we give a +listing of pseudo-code which implements this scheme. +\begin{center} + \epsfxsize=5.5in + \epsffile{threelev_initdata.eps} +\end{center} + +\begin{center} + \epsfxsize=5.5in + \epsffile{threelev_initdata_2.eps} +\end{center} + +Diagram finished. + +\pagebreak + +Here's some pseudo-code: +\begin{verbatim} + + int time_dir = 1; //Positive = forward (+t), Negative = backward (-t) + int lev; + + // At this point we assume that we have initial data given on + // one timelevel, and we want to get data on the other timelevels + + do lev = 0 to MaxLevels-1 + // Evolve "forward" (which may be backward for lev=1,3,5,7...) + Evolve(lev, time_dir*dt(lev)) + + flip_timelevels_on_lev_and_coarser(lev) + // Keep track of which direction (in time) we're integrating + time_dir = -time_dir + + // Evolve in the opposite time-direction + Evolve(lev, time_dir*dt(lev)) + end do + + // Make sure we're pointed backwards, in order to get 2 "previous" + // timelevels. We could change the if statement to + // "if (mod(MaxLevels,2) == 0)", but I prefer to check time_dir + // explicitly, because it's easier to follow and I don't have to + // worry about having made a mistake + if (time_dir > 0) then + flip_timelevels_on_lev_and_coarser(MaxLevels-1) + time_dir = -time_dir + end if + + // Evolve each level backwards one more timestep + do lev = MaxLevels-1 to 0 + Evolve(lev,-dt(lev)) + if (lev>0) then + Restrict(lev -> lev-1) + end if + end do + + // Here's where a user can add in extra evolution code if they want + // to be extra-careful ("anal"), but remember that you'll be + // overwriting the t=0 data so you'll need to re-load it if you do + // this. + + // Finally, one last flip to point us forward again + flip_all_timelevels() + time_dir = -time_dir +\end{verbatim} + +\end{document} diff --git a/Carpet/Carpet/doc/threelev_initdata_2.eps b/Carpet/Carpet/doc/threelev_initdata_2.eps new file mode 100644 index 000000000..51b78b396 --- /dev/null +++ b/Carpet/Carpet/doc/threelev_initdata_2.eps @@ -0,0 +1,470 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: threelev_initdata_2.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Wed Jul 17 01:42:08 2002 +%%For: shawley@ockham (,,,) +%%BoundingBox: 0 0 548 489 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 489 moveto 0 0 lineto 548 0 lineto 548 489 lineto closepath clip newpath +-2.8 524.8 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/reencdict 12 dict def /ReEncode { reencdict begin +/newcodesandnames exch def /newfontname exch def /basefontname exch def +/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def +basefontdict { exch dup /FID ne { dup /Encoding eq +{ exch dup length array copy newfont 3 1 roll put } +{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall +newfont /FontName newfontname put newcodesandnames aload pop +128 1 255 { newfont /Encoding get exch /.notdef put } for +newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat +newfontname newfont definefont pop end } def +/isovec [ +8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde +8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis +8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron +8#220 /dotlessi 8#230 /oe 8#231 /OE +8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling +8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis +8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot +8#255 /hyphen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus +8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph +8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine +8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf +8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute +8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring +8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute +8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute +8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve +8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply +8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex +8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave +8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring +8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute +8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute +8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve +8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide +8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex +8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def +/Helvetica /Helvetica-iso isovec ReEncode +/Helvetica-Bold /Helvetica-Bold-iso isovec ReEncode +/Times-Bold /Times-Bold-iso isovec ReEncode +/Times-Roman /Times-Roman-iso isovec ReEncode +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit +0 slj 0 slc + 0.06299 0.06299 sc +% +% Fig objects follow +% +% Polyline +7.500 slw +n 900 1800 m + 3600 1800 l gs col0 s gr +% Polyline +n 5400 1800 m + 8100 1800 l gs col0 s gr +% Polyline +n 900 5400 m + 3600 5400 l gs col0 s gr +% Polyline +n 5400 5450 m + 8100 5450 l gs col0 s gr +% Polyline +n 900 900 m + 3600 900 l gs col0 s gr +% Polyline +n 900 2700 m + 3600 2700 l gs col0 s gr +% Polyline +n 5400 900 m + 8100 900 l gs col0 s gr +% Polyline +n 5400 2700 m + 8100 2700 l gs col0 s gr +% Polyline +n 900 4500 m + 3600 4500 l gs col0 s gr +% Polyline +n 900 6300 m + 3600 6300 l gs col0 s gr +% Polyline +n 5400 4550 m + 8100 4550 l gs col0 s gr +% Polyline +n 5400 6350 m + 8100 6350 l gs col0 s gr +% Polyline +n 1805 1300 m + 2705 1300 l gs col2 s gr +% Polyline +n 1805 1535 m + 2705 1535 l gs col2 s gr +% Polyline +n 1360 1325 m + 3160 1325 l gs col1 s gr +% Polyline +n 1810 1750 m + 2710 1750 l gs col2 s gr +% Polyline +n 1355 1775 m + 3155 1775 l gs col1 s gr +% Polyline +n 1355 2230 m + 3155 2230 l gs col1 s gr +% Polyline +n 5855 875 m + 7655 875 l gs col1 s gr +% Polyline +n 6305 1300 m + 7205 1300 l gs col2 s gr +% Polyline +n 5860 1325 m + 7660 1325 l gs col1 s gr +% Polyline +n 6305 1535 m + 7205 1535 l gs col2 s gr +% Polyline +n 6310 1750 m + 7210 1750 l gs col2 s gr +% Polyline +n 5855 1775 m + 7655 1775 l gs col1 s gr +% Polyline +n 1355 5375 m + 3155 5375 l gs col1 s gr +% Polyline +n 1805 5805 m + 2705 5805 l gs col2 s gr +% Polyline +n 1355 5830 m + 3155 5830 l gs col1 s gr +% Polyline +n 1810 6060 m + 2710 6060 l gs col2 s gr +% Polyline +n 1795 6255 m + 2695 6255 l gs col2 s gr +% Polyline +n 1355 6280 m + 3155 6280 l gs col1 s gr +% Polyline +n 6305 4500 m + 7205 4500 l gs col2 s gr +% Polyline +n 5855 4525 m + 7655 4525 l gs col1 s gr +% Polyline +n 6310 4735 m + 7210 4735 l gs col2 s gr +% Polyline +n 6305 4950 m + 7205 4950 l gs col2 s gr +% Polyline +n 5860 4975 m + 7660 4975 l gs col1 s gr +% Polyline +n 5855 5425 m + 7655 5425 l gs col1 s gr +% Polyline +2 slj + [15 15] 15 sd +gs clippath +1812 1316 m 1770 1273 l 1711 1331 l 1775 1311 l 1752 1374 l cp +eoclip +n 1777 1526 m 1774 1523 l 1767 1518 l 1758 1511 l 1747 1501 l 1736 1489 l + 1726 1476 l 1718 1461 l 1712 1442 l 1710 1421 l 1713 1399 l + 1719 1380 l 1728 1363 l 1739 1348 l 1750 1335 l + 1781 1305 l gs col2 s gr gr + [] 0 sd +% arrowhead +0 slj +n 1752 1374 m 1775 1311 l 1711 1331 l col2 s +% Polyline +2 slj + [15 30] 30 sd +gs clippath +5859 885 m 5815 844 l 5712 955 l 5816 888 l 5756 996 l cp +eoclip +n 5835 1323 m 5833 1321 l 5828 1316 l 5821 1308 l 5810 1297 l 5798 1284 l + 5785 1268 l 5772 1250 l 5759 1231 l 5747 1210 l 5736 1187 l + 5728 1161 l 5722 1132 l 5719 1101 l 5721 1070 l 5726 1041 l + 5733 1014 l 5743 991 l 5754 970 l 5766 950 l 5779 933 l + 5792 916 l 5803 902 l + 5827 876 l gs col1 s gr gr + [] 0 sd +% arrowhead +0 slj +n 5756 996 m 5816 888 l 5712 955 l col1 s +% Polyline +2 slj + [15 30] 30 sd +gs clippath +899 4507 m 852 4470 l 759 4589 l 857 4514 l 806 4626 l cp +eoclip +n 878 5398 m 877 5397 l 875 5394 l 872 5389 l 866 5381 l 859 5370 l + 850 5356 l 840 5340 l 829 5321 l 816 5301 l 804 5279 l + 791 5255 l 779 5230 l 767 5204 l 755 5177 l 744 5148 l + 734 5118 l 726 5085 l 718 5050 l 712 5013 l 708 4974 l + 706 4933 l 707 4889 l 711 4847 l 717 4808 l 725 4772 l + 734 4739 l 745 4709 l 757 4680 l 769 4654 l 782 4629 l + 796 4606 l 809 4584 l 822 4565 l 833 4547 l 844 4532 l + 852 4520 l + 867 4501 l gs col0 s gr gr + [] 0 sd +% arrowhead +0 slj +n 806 4626 m 857 4514 l 759 4589 l col0 s +/Helvetica-iso ff 240.00 scf sf +8236 4629 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3661 4569 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 195.00 scf sf +3121 5409 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 150.00 scf sf +2731 6084 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7208 4524 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7223 4726 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7216 4914 m +gs 1 -1 sc (_p_p) col2 sh gr +/Helvetica-iso ff 195.00 scf sf +7628 4539 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 240.00 scf sf +8154 5439 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8146 6324 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 150.00 scf sf +2716 6219 m +gs 1 -1 sc (_p_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +2731 5844 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 240.00 scf sf +3631 6287 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3631 5387 m +gs 1 -1 sc (_p) col0 sh gr +/Symbol ff 240.00 scf sf +181 931 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 240.00 scf sf +331 1854 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 240.00 scf sf +316 2754 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Symbol ff 240.00 scf sf +4666 946 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 240.00 scf sf +4846 1854 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 240.00 scf sf +4816 2754 m +gs 1 -1 sc (t=Dt) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3676 984 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 150.00 scf sf +2716 1359 m +gs 1 -1 sc (" ") col2 sh gr +/Helvetica-iso ff 195.00 scf sf +3151 1404 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 150.00 scf sf +2731 1524 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +2746 1734 m +gs 1 -1 sc (_p_p) col2 sh gr +/Helvetica-iso ff 240.00 scf sf +3676 1757 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +3661 2657 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8146 954 m +gs 1 -1 sc (" ") col0 sh gr +/Helvetica-iso ff 195.00 scf sf +7606 924 m +gs 1 -1 sc (" ") col1 sh gr +/Helvetica-iso ff 240.00 scf sf +8191 2694 m +gs 1 -1 sc (_p_p) col0 sh gr +/Helvetica-iso ff 240.00 scf sf +8169 1764 m +gs 1 -1 sc (_p) col0 sh gr +/Helvetica-iso ff 150.00 scf sf +7246 1734 m +gs 1 -1 sc (_p_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7223 1531 m +gs 1 -1 sc (_p) col2 sh gr +/Helvetica-iso ff 150.00 scf sf +7208 1329 m +gs 1 -1 sc (" ") col2 sh gr +/Symbol ff 240.00 scf sf +4816 4569 m +gs 1 -1 sc (t=0) col0 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +2911 1269 m +gs 1 -1 sc (R) col4 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +7726 759 m +gs 1 -1 sc (R) col4 sh gr +/Symbol ff 240.00 scf sf +4726 5499 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Symbol ff 240.00 scf sf +4636 6414 m +gs 1 -1 sc (t=-2Dt) col0 sh gr +/Symbol ff 240.00 scf sf +166 5469 m +gs 1 -1 sc (t=-Dt) col0 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +2146 5079 m +gs 1 -1 sc (\(*\)) col4 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +6646 1164 m +gs 1 -1 sc (\(*\)) col4 sh gr +/Times-Bold-iso ff 270.00 scf sf +2176 6684 m +gs 1 -1 sc (10) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +6736 6684 m +gs 1 -1 sc (11) col0 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +1261 7839 m +gs 1 -1 sc (R = Restriction) col4 sh gr +/Helvetica-Bold-iso ff 240.00 scf sf +1216 8259 m +gs 1 -1 sc (\(*\) = Can evolve finer levels further, if feeling "anal") col4 sh gr +/Times-Roman-iso ff 360.00 scf sf +4276 4569 m +gs 1 -1 sc 270.0 rot (FLIP ALL) col0 sh gr +/Symbol ff 240.00 scf sf +360 6390 m +gs 1 -1 sc (t=0) col0 sh gr +/Symbol ff 240.00 scf sf +45 4545 m +gs 1 -1 sc (t=-2Dt) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +2205 3060 m +gs 1 -1 sc (8) col0 sh gr +/Times-Bold-iso ff 270.00 scf sf +6750 3015 m +gs 1 -1 sc (9) col0 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 6255 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 5805 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7695 4950 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7695 5400 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 1755 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +3195 2205 m +gs 1 -1 sc (_p_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7740 1305 m +gs 1 -1 sc (_p) col1 sh gr +/Helvetica-iso ff 195.00 scf sf +7695 1755 m +gs 1 -1 sc (_p_p) col1 sh gr +$F2psEnd +rs diff --git a/Carpet/Carpet/interface.ccl b/Carpet/Carpet/interface.ccl new file mode 100644 index 000000000..1e59767be --- /dev/null +++ b/Carpet/Carpet/interface.ccl @@ -0,0 +1,89 @@ +# Interface definition for thorn Carpet +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/interface.ccl,v 1.18 2004/06/08 21:09:25 schnetter Exp $ + +IMPLEMENTS: Driver + +include header: carpet_public.hh in carpet.hh +include header: carpet_public.h in carpet.h + +uses include header: defs.hh +uses include header: dist.hh + +uses include header: bbox.hh +uses include header: bboxset.hh +uses include header: vect.hh + +uses include header: data.hh +uses include header: dh.hh +uses include header: gf.hh +uses include header: ggf.hh +uses include header: gh.hh +uses include header: th.hh + +uses include header: operators.hh + + + +# Provide the function to en-/disable prolongation +CCTK_INT FUNCTION EnableProlongating(CCTK_INT IN flag) +PROVIDES FUNCTION EnableProlongating WITH CarpetEnableProlongating LANGUAGE C + + + +# The location of the boundary points +CCTK_INT FUNCTION GetBoundarySpecification \ + (CCTK_INT IN size, \ + CCTK_INT OUT ARRAY nboundaryzones, \ + CCTK_INT OUT ARRAY is_internal, \ + CCTK_INT OUT ARRAY is_staggered, \ + CCTK_INT OUT ARRAY shiftout) +USES FUNCTION GetBoundarySpecification + +# The overall size of the domain +CCTK_INT FUNCTION GetDomainSpecification \ + (CCTK_INT IN size, \ + CCTK_REAL OUT ARRAY physical_min, \ + CCTK_REAL OUT ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL OUT ARRAY exterior_min, \ + CCTK_REAL OUT ARRAY exterior_max, \ + CCTK_REAL OUT ARRAY spacing) +USES FUNCTION GetDomainSpecification + +# Conversion between boundary types +CCTK_INT FUNCTION ConvertFromPhysicalBoundary \ + (CCTK_INT IN size, \ + CCTK_REAL IN ARRAY physical_min, \ + CCTK_REAL IN ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL OUT ARRAY exterior_min, \ + CCTK_REAL OUT ARRAY exterior_max, \ + CCTK_REAL IN ARRAY spacing) +USES FUNCTION ConvertFromPhysicalBoundary + +CCTK_INT FUNCTION ConvertFromExteriorBoundary \ + (CCTK_INT IN size, \ + CCTK_REAL OUT ARRAY physical_min, \ + CCTK_REAL OUT ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL IN ARRAY exterior_min, \ + CCTK_REAL IN ARRAY exterior_max, \ + CCTK_REAL IN ARRAY spacing) +USES FUNCTION ConvertFromExteriorBoundary + + + +# The true prototype of the routine below: +# int Carpet_Regrid (const cGH * cctkGH, +# gh<dim>::rexts * bbsss, +# gh<dim>::rbnds * obss, +# gh<dim>::rprocs * pss); +CCTK_INT FUNCTION Carpet_Regrid (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_POINTER IN bbsss, \ + CCTK_POINTER IN obss, \ + CCTK_POINTER IN pss, \ + CCTK_INT IN force) +USES FUNCTION Carpet_Regrid diff --git a/Carpet/Carpet/options/README b/Carpet/Carpet/options/README new file mode 100644 index 000000000..df42f880a --- /dev/null +++ b/Carpet/Carpet/options/README @@ -0,0 +1,9 @@ +$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/README,v 1.1 2001/04/06 10:37:35 schnetter Exp $ + +This directory contains sample options files for various architectures +and compilers. The syntax of the file names is + + carpet-MACHINE-COMPILER + +so that e. g. carpet-lilypong-lf95 is a configuration for the machine +Lilypond, using the LF95 compiler. diff --git a/Carpet/Carpet/options/carpet-because b/Carpet/Carpet/options/carpet-because new file mode 100644 index 000000000..c7df166af --- /dev/null +++ b/Carpet/Carpet/options/carpet-because @@ -0,0 +1,29 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-because,v 1.1 2003/04/30 12:46:15 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +F77 = g77 +F90 = g77 + +CXXFLAGS = -DCARPET_REAL -ftemplate-depth-30 + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /usr/include/hdf /home/eschnett/FlexIO +LIBDIRS = /home/eschnett/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +MPI = MPICH + +DEBUG = yes + +# PTHREADS +PTHREADS = no diff --git a/Carpet/Carpet/options/carpet-harpo-gcc b/Carpet/Carpet/options/carpet-harpo-gcc new file mode 100644 index 000000000..ba494a449 --- /dev/null +++ b/Carpet/Carpet/options/carpet-harpo-gcc @@ -0,0 +1,38 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-harpo-gcc,v 1.4 2002/09/08 20:38:35 schnetter Exp $ + +CC = gcc +CXX = g++ +F77 = g77 +F90 = g77 +LD = g++ + +#CC = /u1/eschnett/bin/gcc +#CXX = /u1/eschnett/bin/g++ +#F77 = /u1/eschnett/bin/g77 +#F90 = /u1/eschnett/bin/g77 +#LD = /u1/eschnett/bin/g++ + +CFLAGS = +CXXFLAGS = -ftemplate-depth-30 -DMPIPP_H +FFLAGS = +F90FLAGS = + +C_OPTIMISE_FLAGS = -O3 -funroll-loops +CXX_OPTIMISE_FLAGS = -O3 -funroll-loops +F90_OPTIMISE_FLAGS = -O3 -funroll-loops -malign-double +F77_OPTIMISE_FLAGS = -O3 -funroll-loops -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations -Winline +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations -Winline +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /u1/eschnett/include /u1/eschnett/scratch/FlexIO +LIBDIRS = /u1/eschnett/lib /u1/eschnett/scratch/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z + +HDF5 = yes +MPI = NATIVE + +OPTIMISE = no +DEBUG = yes diff --git a/Carpet/Carpet/options/carpet-harpo-sgi b/Carpet/Carpet/options/carpet-harpo-sgi new file mode 100644 index 000000000..64fcb11b8 --- /dev/null +++ b/Carpet/Carpet/options/carpet-harpo-sgi @@ -0,0 +1,31 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-harpo-sgi,v 1.5 2002/06/07 20:44:03 schnetter Exp $ + +CPP = /lib/cpp -DMPIPP_H + +CFLAGS = -mips4 -r12000 -64 -LANG:restrict=ON +CXXFLAGS = -mips4 -r12000 -64 -LANG:restrict=ON -LANG:std -LANG:vla=ON -no_auto_include -ptused -DMPIPP_H +F90FLAGS = -mips4 -r12000 -64 +F77FLAGS = -mips4 -r12000 -64 +LDFLAGS = -LANG:std -LANG:vla=ON -64 -mips4 -r12000 -Wl,"-woff 84","-woff 85" + +C_OPTIMISE_FLAGS = -O3 -OPT:Olimit=0 +CXX_OPTIMISE_FLAGS = -O3 -OPT:Olimit=0 +F77_OPTIMISE_FLAGS = -O3 -OPT:Olimit=0 +F90_OPTIMISE_FLAGS = -O3 -OPT:Olimit=0 + +C_DEBUG_FLAGS = -g3 +CXX_DEBUG_FLAGS = -g3 +F77_DEBUG_FLAGS = -g3 +F90_DEBUG_FLAGS = -g3 + +SYS_INC_DIRS = /usr/local/hdf/include /u1/eschnett/FlexIO +LIBDIRS = /usr/local/hdf/lib /u1/eschnett/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio ffio fpe fortran ftn ftn90 hdf5 mfhdf df jpeg z + +HDF5 = yes +HDF5_DIR = /usr/local/hdf5_64 + +MPI = NATIVE + +OPTIMISE = yes +DEBUG = yes diff --git a/Carpet/Carpet/options/carpet-hawaii-sgi b/Carpet/Carpet/options/carpet-hawaii-sgi new file mode 100644 index 000000000..0e3340c47 --- /dev/null +++ b/Carpet/Carpet/options/carpet-hawaii-sgi @@ -0,0 +1,27 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-hawaii-sgi,v 1.2 2002/05/05 22:16:56 schnetter Exp $ + +CPP = /lib/cpp -DMPIPP_H + +CXXFLAGS = -LANG:std -LANG:vla=ON -FE:eliminate_duplicate_inline_copies -FE:template_in_elf_section -64 -mips4 -r12000 -no_auto_include -ptused -DMPIPP_H +LDFLAGS = -LANG:std -LANG:vla=ON -64 -mips4 -r12000 -Wl,"-woff 84","-woff 85" + +C_OPTIMISE_FLAGS = -O3 -INLINE -LNO -OPT:Olimit=100000 +CXX_OPTIMISE_FLAGS = -O3 -INLINE -LNO -OPT:Olimit=100000 +F77_OPTIMISE_FLAGS = -O3 -INLINE -LNO -OPT:Olimit=100000 +F90_OPTIMISE_FLAGS = -O3 -INLINE -LNO -OPT:Olimit=100000 + +C_DEBUG_FLAGS = -g3 +CXX_DEBUG_FLAGS = -g3 +F77_DEBUG_FLAGS = -g3 +F90_DEBUG_FLAGS = -g3 + +SYS_INC_DIRS = /usr/center/maui/eriks/include /usr/center/maui/eriks/FlexIO +LIBDIRS = /usr/center/maui/eriks/lib /usr/center/maui/eriks/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z + +HDF5 = yes +HDF5_DIR = /usr/center/maui/eriks +MPI = NATIVE + +OPTIMISE = yes +DEBUG = yes diff --git a/Carpet/Carpet/options/carpet-lilypond b/Carpet/Carpet/options/carpet-lilypond new file mode 100644 index 000000000..f36c01245 --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond @@ -0,0 +1,29 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond,v 1.9 2002/10/16 17:33:51 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +F77 = g77 +F90 = g77 + +CXXFLAGS = -DCARPET_REAL -ftemplate-depth-30 + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /home/eschnett/proj/FlexIO +LIBDIRS = /home/eschnett/proj/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +MPI = MPICH + +DEBUG = yes + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-debug b/Carpet/Carpet/options/carpet-lilypond-debug new file mode 100644 index 000000000..3f69bbf0e --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-debug @@ -0,0 +1,31 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-debug,v 1.3 2002/10/16 17:33:51 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +F77 = g77 +F90 = g77 + +CXXFLAGS = -DCARPET_REAL -ftemplate-depth-30 + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +#FLEXIO_DIR = /home/eschnett/proj/FlexIO +#SYS_INC_DIRS = /home/eschnett/proj/FlexIO +#LIBDIRS = /home/eschnett/proj/FlexIO +#LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +MPI = MPICH + +DEBUG = yes +OPTIMISE = no + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-gcc32 b/Carpet/Carpet/options/carpet-lilypond-gcc32 new file mode 100644 index 000000000..8c2c29fda --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-gcc32 @@ -0,0 +1,35 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-gcc32,v 1.4 2002/10/16 17:33:51 schnetter Exp $ + +CPP = /home/eschnett/gcc32/bin/cpp -traditional -DCARPET_REAL +CC = /home/eschnett/gcc32/bin/gcc +CXX = /home/eschnett/gcc32/bin/g++ +F77 = /home/eschnett/gcc32/bin/g77 +F90 = /home/eschnett/gcc32/bin/g77 + +CFLAGS = -m128bit-long-double -fmessage-length=0 +CXXFLAGS = -m128bit-long-double -fmessage-length=0 -DCARPET_REAL -ftemplate-depth-30 +F77FLAGS = -malign-double -fmessage-length=0 +F90FLAGS = -malign-double -fmessage-length=0 +LDFLAGS = -Wl,-rpath,/home/eschnett/gcc32/lib + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentium2 +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentium2 +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentium2 +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentium2 + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /home/eschnett/proj/FlexIO +LIBDIRS = /home/eschnett/proj/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +MPI = MPICH + +DEBUG = yes + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-ic b/Carpet/Carpet/options/carpet-lilypond-ic new file mode 100644 index 000000000..a02cdff0a --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-ic @@ -0,0 +1,50 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-ic,v 1.8 2002/11/16 19:10:50 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +CC = icc +CXX = icc +F77 = ifc +F90 = ifc +LD = icc + +LIBDIRS = +LIBS = intrins IEPCF90 F90 imf m irc cxa cprts cxa + +# basic +CFLAGS = -DCARPET_REAL -c99 +CXXFLAGS = -DCARPET_REAL -c99 +F90FLAGS = -DCARPET_REAL -w95 +F77FLAGS = -DCARPET_REAL -w95 +LDFLAGS = -DCARPET_REAL -g + +# debugging +DEBUG = yes +C_DEBUG_FLAGS = -g -fp +CXX_DEBUG_FLAGS = -g -fp +F77_DEBUG_FLAGS = -g -fp +F90_DEBUG_FLAGS = -g -fp + +# warnings +#WARN=yes +C_WARN_FLAGS = -w1 +CXX_WARN_FLAGS = -w1 +F77_WARN_FLAGS = +F90_WARN_FLAGS = + +# optimisation +OPTIMISE = yes +C_OPTIMISE_FLAGS = -O3 -tpp6 -xi +CXX_OPTIMISE_FLAGS = -O3 -tpp6 -xi +F77_OPTIMISE_FLAGS = -O3 -tpp6 +F90_OPTIMISE_FLAGS = -O3 -tpp6 + +# HDF +HDF5 = YES +HDF5_DIR = /usr/local + +# MPI +MPI = MPICH +MPICH_DIR = /usr/lib/mpich + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-ic-debug b/Carpet/Carpet/options/carpet-lilypond-ic-debug new file mode 100644 index 000000000..ed8db4dbc --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-ic-debug @@ -0,0 +1,47 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-ic-debug,v 1.1 2002/11/16 19:10:50 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +CC = icc +CXX = icc +F77 = ifc +F90 = ifc +LD = icc + +LIBDIRS = +LIBS = intrins IEPCF90 F90 imf m irc cxa cprts cxa + +# basic +CFLAGS = -DCARPET_REAL -c99 +CXXFLAGS = -DCARPET_REAL -c99 +F90FLAGS = -DCARPET_REAL -w95 +F77FLAGS = -DCARPET_REAL -w95 +LDFLAGS = -DCARPET_REAL -g + +# debugging +DEBUG = yes +C_DEBUG_FLAGS = -g -fp +CXX_DEBUG_FLAGS = -g -fp +F77_DEBUG_FLAGS = -g -fp +F90_DEBUG_FLAGS = -g -fp + +# warnings +#WARN=yes +C_WARN_FLAGS = -w1 +CXX_WARN_FLAGS = -w1 +F77_WARN_FLAGS = +F90_WARN_FLAGS = + +# optimisation +OPTIMISE = yes +C_OPTIMISE_FLAGS = -O0 -tpp6 -xi +CXX_OPTIMISE_FLAGS = -O0 -tpp6 -xi +F77_OPTIMISE_FLAGS = -O0 -tpp6 +F90_OPTIMISE_FLAGS = -O0 -tpp6 + +# HDF +HDF5 = YES +HDF5_DIR = /usr/local + +# MPI +MPI = MPICH +MPICH_DIR = /usr/lib/mpich diff --git a/Carpet/Carpet/options/carpet-lilypond-ic7 b/Carpet/Carpet/options/carpet-lilypond-ic7 new file mode 100644 index 000000000..51ad8cbfc --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-ic7 @@ -0,0 +1,50 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-ic7,v 1.5 2002/11/16 19:10:50 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +CC = /opt/intel/compiler70/ia32/bin/icc +CXX = /opt/intel/compiler70/ia32/bin/icc +F77 = /opt/intel/compiler70/ia32/bin/ifc +F90 = /opt/intel/compiler70/ia32/bin/ifc +LD = /opt/intel/compiler70/ia32/bin/icc + +LIBDIRS = +LIBS = intrins IEPCF90 F90 imf m irc cxa cprts cxa + +# basic +CFLAGS = -DCARPET_REAL -c99 +CXXFLAGS = -DCARPET_REAL -c99 +F90FLAGS = -DCARPET_REAL -w95 +F77FLAGS = -DCARPET_REAL -w95 +LDFLAGS = -g -Qoption,ld,-rpath,/opt/intel/compiler70/ia32/lib + +# debugging +DEBUG = yes +C_DEBUG_FLAGS = -g -fp +CXX_DEBUG_FLAGS = -g -fp +F77_DEBUG_FLAGS = -g -fp +F90_DEBUG_FLAGS = -g -fp + +# warnings +#WARN=yes +C_WARN_FLAGS = -w1 +CXX_WARN_FLAGS = -w1 +F77_WARN_FLAGS = +F90_WARN_FLAGS = + +# optimisation +OPTIMISE = yes +C_OPTIMISE_FLAGS = -O3 -tpp6 -xi +CXX_OPTIMISE_FLAGS = -O3 -tpp6 -xi +F77_OPTIMISE_FLAGS = -O3 -tpp6 +F90_OPTIMISE_FLAGS = -O3 -tpp6 + +# HDF +HDF5 = YES +HDF5_DIR = /usr/local + +# MPI +MPI = MPICH +MPICH_DIR = /usr/lib/mpich + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-lf95 b/Carpet/Carpet/options/carpet-lilypond-lf95 new file mode 100644 index 000000000..7ce0f298f --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-lf95 @@ -0,0 +1,39 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-lf95,v 1.6 2002/10/16 17:33:52 schnetter Exp $ + +LAHEY = /usr/local/lf9560 + +CPP = cpp -traditional -DCARPET_REAL +F77 = lf95 +F90 = lf95 + +CFLAGS = -g3 +CXXFLAGS = -g3 -DCARPET_REAL -ftemplate-depth-30 +F77FLAGS = --pca +F90FLAGS = --pca +LDFLAGS = -g3 + +DEBUG = no +C_DEBUG_FLAGS = +CXX_DEBUG_FLAGS = +F77_DEBUG_FLAGS = -g --chk +F90_DEBUG_FLAGS = -g --chk + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O --tpp +F77_OPTIMISE_FLAGS = -O --tpp + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = --warn +F77_WARN_FLAGS = --warn + +SYS_INC_DIRS = /home/eschnett/proj/FlexIO +LIBDIRS = /home/eschnett/proj/FlexIO /usr/local/lf9560/lib +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt fj9i6 fj9f6 fj9e6 fccx86_6a m + +HDF5 = yes +MPI = MPICH + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-lf95-debug b/Carpet/Carpet/options/carpet-lilypond-lf95-debug new file mode 100644 index 000000000..2008532af --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-lf95-debug @@ -0,0 +1,40 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-lf95-debug,v 1.5 2002/10/16 17:33:52 schnetter Exp $ + +LAHEY = /usr/local/lf9560 + +CPP = cpp -traditional -DCARPET_REAL +F77 = lf95 +F90 = lf95 + +CFLAGS = -g3 +CXXFLAGS = -g3 -DCARPET_REAL -ftemplate-depth-30 +F77FLAGS = --pca +F90FLAGS = --pca +LDFLAGS = -g3 + +DEBUG = yes +C_DEBUG_FLAGS = +CXX_DEBUG_FLAGS = +F77_DEBUG_FLAGS = -g --chk +F90_DEBUG_FLAGS = -g --chk + +OPTIMISE = no +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O --tpp +F77_OPTIMISE_FLAGS = -O --tpp + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = --warn +F77_WARN_FLAGS = --warn + +SYS_INC_DIRS = /home/eschnett/proj/FlexIO +LIBDIRS = /home/eschnett/proj/FlexIO /usr/local/lf9560/lib +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt fj9i6 fj9f6 fj9e6 fccx86_6a m + +HDF5 = yes +MPI = MPICH + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-lilypond-prof b/Carpet/Carpet/options/carpet-lilypond-prof new file mode 100644 index 000000000..0ac899f6c --- /dev/null +++ b/Carpet/Carpet/options/carpet-lilypond-prof @@ -0,0 +1,33 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-lilypond-prof,v 1.3 2002/10/16 17:33:52 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +F77 = g77 +F90 = g77 + +CFLAGS = -pg +CXXFLAGS = -pg -DCARPET_REAL -ftemplate-depth-30 +F77FLAGS = -pg +F90FLAGS = -pg +LDFLAGS = -pg + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /home/eschnett/proj/FlexIO +LIBDIRS = /home/eschnett/proj/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +MPI = MPICH + +DEBUG = yes + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-mintaka b/Carpet/Carpet/options/carpet-mintaka new file mode 100644 index 000000000..0a9aad429 --- /dev/null +++ b/Carpet/Carpet/options/carpet-mintaka @@ -0,0 +1,32 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-mintaka,v 1.3 2002/10/16 17:33:52 schnetter Exp $ + +CPP = cpp -traditional -DCARPET_REAL +F77 = g77 +F90 = g77 + +CXXFLAGS = -DCARPET_REAL -ftemplate-depth-30 +LDFLAGS = -Wl,-rpath,/home/schnette/lib + +C_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +CXX_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro +F90_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double +F77_OPTIMISE_FLAGS = -O2 -funroll-loops -march=pentiumpro -malign-double + +C_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +CXX_WARN_FLAGS = -Wall -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wstrict-prototypes -Wmissing-declarations +F90_WARN_FLAGS = -Wall +F77_WARN_FLAGS = -Wall + +SYS_INC_DIRS = /home/schnette/lilypond/proj/FlexIO +LIBDIRS = /home/schnette/lilypond/proj/FlexIO +LIBS = AMR h5io hdfio hlio ieeeio hdf5 mfhdf df jpeg z crypt g2c m + +HDF5 = yes +HDF5_DIR = /home/schnette +MPI = MPICH +MPICH_DIR = /usr/lib/mpich + +DEBUG = yes + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/options/carpet-tat-ic b/Carpet/Carpet/options/carpet-tat-ic new file mode 100644 index 000000000..739b4ddd9 --- /dev/null +++ b/Carpet/Carpet/options/carpet-tat-ic @@ -0,0 +1,50 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/options/carpet-tat-ic,v 1.1 2002/11/03 12:22:24 schnetter Exp $ + +CPP = /home/schnette/gcc/bin/cpp -traditional -DCARPET_REAL +CC = icc +CXX = icc +F77 = ifc +F90 = ifc +LD = icc + +LIBDIRS = +LIBS = intrins IEPCF90 F90 imf m irc cxa cprts cxa + +# basic +CFLAGS = -DCARPET_REAL -c99 +CXXFLAGS = -DCARPET_REAL -c99 +F90FLAGS = -DCARPET_REAL -w95 +F77FLAGS = -DCARPET_REAL -w95 +LDFLAGS = -DCARPET_REAL -g -Qoption,ld,-rpath,/home/schnette/opt/intel/compiler60/ia32/lib + +# debugging +DEBUG = yes +C_DEBUG_FLAGS = -g -fp +CXX_DEBUG_FLAGS = -g -fp +F77_DEBUG_FLAGS = -g -fp +F90_DEBUG_FLAGS = -g -fp + +# warnings +#WARN=yes +C_WARN_FLAGS = -w1 +CXX_WARN_FLAGS = -w1 +F77_WARN_FLAGS = +F90_WARN_FLAGS = + +# optimisation +OPTIMISE = yes +C_OPTIMISE_FLAGS = -O3 -tpp6 +CXX_OPTIMISE_FLAGS = -O3 -tpp6 +F77_OPTIMISE_FLAGS = -O3 -tpp6 +F90_OPTIMISE_FLAGS = -O3 -tpp6 + +# HDF +HDF5 = YES +HDF5_DIR = /usr/local + +# MPI +MPI = MPICH +MPICH_DIR = /usr/lib/mpich + +# PTHREADS +PTHREADS = yes diff --git a/Carpet/Carpet/par/carpet-test.par b/Carpet/Carpet/par/carpet-test.par new file mode 100644 index 000000000..9f07305be --- /dev/null +++ b/Carpet/Carpet/par/carpet-test.par @@ -0,0 +1,7 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/par/carpet-test.par,v 1.2 2004/03/23 11:58:54 schnetter Exp $ + +ActiveThorns = "Carpet" + +Cactus::cctk_itlast = 10 + +Carpet::max_refinement_levels = 2 diff --git a/Carpet/Carpet/par/carpet-test.th b/Carpet/Carpet/par/carpet-test.th new file mode 100644 index 000000000..ab588089f --- /dev/null +++ b/Carpet/Carpet/par/carpet-test.th @@ -0,0 +1,2 @@ +Carpet/Carpet # driver (CarpetLib) [ ] {Cactus,IO} +Carpet/CarpetLib # CarpetLib ( ) [ ] { } diff --git a/Carpet/Carpet/par/multipatch.par b/Carpet/Carpet/par/multipatch.par new file mode 100644 index 000000000..44e6ce7cf --- /dev/null +++ b/Carpet/Carpet/par/multipatch.par @@ -0,0 +1,42 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/par/multipatch.par,v 1.1 2004/05/04 22:07:18 schnetter Exp $ + +Cactus::cctk_itlast = 20 + +ActiveThorns = "Slab" + +ActiveThorns = "IOUtil" +IO::out_dir = $parfile + +ActiveThorns = "Carpet CarpetLib CarpetReduce" +Carpet::num_maps = 2 +driver::global_nsize = 12 + +ActiveThorns = "Boundary CartGrid3D CoordBase SymBase" +grid::type = byspacing +grid::dxyz = 0.1 + +#ActiveThorns = "Periodic" +#Periodic::periodic_y = yes +#Periodic::periodic_z = yes + +ActiveThorns = "SimplePatchBoundary" +SimplePatchBoundary::offset_x[1] = 1.0 + +ActiveThorns = "WaveToyC" +WaveToy::bound = radiation + +ActiveThorns = "IDScalarWaveC" +#IDScalarWave::initial_data = plane +#IDScalarWave::kx = 6.28318530717959 +#IDScalarWave::ky = 6.28318530717959 + +ActiveThorns = "Time" +Time::dtfac = 0.5 + +ActiveThorns = "IOBasic" +IOBasic::outInfo_every = 1 +IOBasic::outInfo_vars = "WaveToy::phi" + +ActiveThorns = "CarpetIOASCII" +IOASCII::out1D_every = 1 +IOASCII::out1D_vars = "WaveToy::phi" diff --git a/Carpet/Carpet/par/test_rad.par b/Carpet/Carpet/par/test_rad.par new file mode 100644 index 000000000..ee7af3cd2 --- /dev/null +++ b/Carpet/Carpet/par/test_rad.par @@ -0,0 +1,45 @@ +!DESC "Octant evolution with radiation boundaries" + +# $Id: test_rad.par,v 1.2 2002/10/24 21:11:53 schnetter Exp $ +# +# /*@@ +# @file test_rad.par +# @date Saturday 18th September +# @author Gabrielle Allen +# @desc +# Wavetoy parameter file demonstrating radiation boundaries in Octant +# @enddesc +# @@*/ + +ActiveThorns = "boundary iobasic idscalarwavec time wavetoyc carpet carpetlib carpetslab carpetreduce cartgrid3d ioutil ioascii" + +time::dtfac = 0.5 + +idscalarwave::initial_data = "gaussian" +idscalarwave::sigma = 2.8 +idscalarwave::radius = 5 + +wavetoyc::bound = "radiation" + +grid::type = "BySpacing" +grid::domain = "octant" +grid::dxyz = 0.6 + +driver::global_nx = 15 +driver::global_ny = 15 +driver::global_nz = 15 + +cactus::cctk_itlast = 10 + +IOBasic::outScalar_every = 1 +IOBasic::outScalar_vars = "wavetoy::phi" + +IOASCII::out1D_style = "gnuplot f(x)" +IOASCII::out1D_every = 1 +IOASCII::out1D_z = "no" +IOASCII::out1D_y = "no" +IOASCII::out1D_d = "no" +IOASCII::out1D_vars = "wavetoy::phi " + +IO::out_dir = "test_rad" +IO::out_fileinfo = "none" diff --git a/Carpet/Carpet/par/test_rad.th b/Carpet/Carpet/par/test_rad.th new file mode 100644 index 000000000..73c560c03 --- /dev/null +++ b/Carpet/Carpet/par/test_rad.th @@ -0,0 +1,14 @@ +!DESC "Octant evolution with radiation boundaries" + +CactusBase/Boundary # boundary (grid) [ ] { } +CactusBase/IOBasic # IOBasic (IO) [ ] {IO} +CactusWave/IDScalarWaveC # idscalarwave (wavetoy,grid) [ ] {grid} +CactusBase/Time # time ( ) [ ] { } +CactusWave/WaveToyC # wavetoy (Grid,Boundary) [ ] { } +Carpet/Carpet # driver (CarpetLib) [ ] {Cactus,IO} +Carpet/CarpetLib # CarpetLib ( ) [ ] { } +Carpet/CarpetSlab # Hyperslab (CarpetLib,driver) [ ] { } +Carpet/CarpetReduce # reduce (CarpetLib,driver) [ ] { } +CactusBase/CartGrid3D # grid ( ) [ ] {driver} +CactusBase/IOUtil # IO ( ) [ ] { } +Carpet/CarpetIOASCII # IOASCII (CarpetLib,driver,Hyperslab) [ ] {IO} diff --git a/Carpet/Carpet/par/test_rad_ref.par b/Carpet/Carpet/par/test_rad_ref.par new file mode 100644 index 000000000..e00217ac4 --- /dev/null +++ b/Carpet/Carpet/par/test_rad_ref.par @@ -0,0 +1,53 @@ +!DESC "Octant evolution with radiation boundaries" + +# $Id: test_rad_ref.par,v 1.2 2002/10/24 21:11:53 schnetter Exp $ +# +# /*@@ +# @file test_rad.par +# @date Saturday 18th September +# @author Gabrielle Allen +# @desc +# Wavetoy parameter file demonstrating radiation boundaries in Octant +# @enddesc +# @@*/ + +ActiveThorns = "boundary iobasic idscalarwavec time wavetoyc carpet carpetlib carpetregrid carpetslab carpetreduce cartgrid3d ioutil carpetioascii" + +time::dtfac = 0.5 + +idscalarwave::initial_data = "gaussian" +idscalarwave::sigma = 2.8 +idscalarwave::radius = 5 + +wavetoyc::bound = "radiation" + +grid::type = "BySpacing" +grid::domain = "octant" +grid::dxyz = 0.6 + +# this file produces wrong output because the coordinat thorn +# produces wrong coordinate arrays. + +driver::global_nx = 15 +driver::global_ny = 15 +driver::global_nz = 15 + +Carpet::max_refinement_levels = 2 +CarpetRegrid::refinement_levels = 2 +CarpetRegrid::refined_regions = manual-gridpoint-list +CarpetRegrid::gridpoints = "[ [ ([2,2,2]:[15,15,15]:[1,1,1]) ] ]" +CarpetRegrid::outerbounds = "[ [ [[1,0],[1,0],[1,0]] ] ]" + +cactus::cctk_itlast = 20 + +IOBasic::outScalar_every = 1 +IOBasic::outScalar_vars = "wavetoy::phi" + +IOASCII::out1D_every = 1 +IOASCII::out1D_z = "no" +IOASCII::out1D_y = "no" +IOASCII::out1D_d = "no" +IOASCII::out1D_vars = "wavetoy::phi " + +IO::out_dir = "test_rad_ref" +IO::out_fileinfo = "none" diff --git a/Carpet/Carpet/par/test_rad_ref.th b/Carpet/Carpet/par/test_rad_ref.th new file mode 100644 index 000000000..538d486c2 --- /dev/null +++ b/Carpet/Carpet/par/test_rad_ref.th @@ -0,0 +1,15 @@ +!DESC "Octant evolution with radiation boundaries" + +CactusBase/Boundary # boundary (grid) [ ] { } +CactusBase/IOBasic # IOBasic (IO) [ ] {IO} +CactusWave/IDScalarWaveC # idscalarwave (wavetoy,grid) [ ] {grid} +CactusBase/Time # time ( ) [ ] { } +CactusWave/WaveToyC # wavetoy (Grid,Boundary) [ ] { } +Carpet/Carpet # driver (CarpetLib) [ ] {Cactus,IO} +Carpet/CarpetLib # CarpetLib ( ) [ ] { } +Carpet/CarpetRegrid # CarpetRegrid (CarpetLib,driver) [ ] { } +Carpet/CarpetSlab # Hyperslab (CarpetLib,driver) [ ] { } +Carpet/CarpetReduce # reduce (CarpetLib,driver) [ ] { } +CactusBase/CartGrid3D # grid ( ) [ ] {driver} +CactusBase/IOUtil # IO ( ) [ ] { } +Carpet/CarpetIOASCII # IOASCII (CarpetLib,driver,Hyperslab) [ ] {IO} diff --git a/Carpet/Carpet/param.ccl b/Carpet/Carpet/param.ccl new file mode 100644 index 000000000..3cd8c1a54 --- /dev/null +++ b/Carpet/Carpet/param.ccl @@ -0,0 +1,294 @@ +# Parameter definitions for thorn Carpet +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/param.ccl,v 1.40 2004/08/07 19:47:12 schnetter Exp $ + +shares: Cactus + +USES BOOLEAN terminate_next +USES KEYWORD terminate +USES CCTK_INT cctk_itlast +USES CCTK_REAL cctk_initial_time +USES CCTK_REAL cctk_final_time +USES CCTK_REAL max_runtime + + + +shares: IO + +USES STRING out_dir + + + +private: + +BOOLEAN domain_from_coordbase "Use the domain description from CoordBase" +{ +} "no" + + + +CCTK_INT global_nx "Grid size in x direction" +{ + 0:* :: "must be nonnegative" +} 10 + +CCTK_INT global_ny "Grid size in y direction" +{ + 0:* :: "must be nonnegative" +} 10 + +CCTK_INT global_nz "Grid size in z direction" +{ + 0:* :: "must be nonnegative" +} 10 + +CCTK_INT global_nsize "Grid size in each spatial direction" +{ + 0:* :: "must be nonnegative" + -1 :: "use the per-dimension parameters" +} -1 + + + +CCTK_INT ghost_size_x "Ghost zones in x direction" +{ + 0:* :: "must be nonnegative" +} 1 + +CCTK_INT ghost_size_y "Ghost zones in y direction" +{ + 0:* :: "must be nonnegative" +} 1 + +CCTK_INT ghost_size_z "Ghost zones in z direction" +{ + 0:* :: "must be nonnegative" +} 1 + +CCTK_INT ghost_size "Ghost zones in each spatial direction" +{ + 0:* :: "must be nonnegative" + -1 :: "use the per-dimension parameters" +} -1 + + + +restricted: + +BOOLEAN periodic "do not use this parameter" +{ +} "no" + +BOOLEAN periodic_x "do not use this parameter" +{ +} "no" + +BOOLEAN periodic_y "do not use this parameter" +{ +} "no" + +BOOLEAN periodic_z "do not use this parameter" +{ +} "no" + + + +private: + +CCTK_INT max_refinement_levels "Maximum number of refinement levels (including the base level)" +{ + 1:* :: "must be positive" +} 1 + +CCTK_INT refinement_factor "Refinement factor" +{ + 1:* :: "must be positive" +} 2 + + + +CCTK_INT convergence_level "Convergence level" +{ + *:* :: "negative for finer, positive for coarser resolutions" +} 0 + +CCTK_INT num_convergence_levels "Number of convergence levels (including the base level)" +{ + 1:* :: "must be positive" +} 1 + +CCTK_INT convergence_factor "Multigrid factor" +{ + 1:* :: "must be positive" +} 2 + + + +CCTK_INT num_maps "Number of maps" +{ + 1:* :: "" +} 1 + + + +CCTK_INT prolongation_order_space "Order of prolongation operator in space" STEERABLE=recover +{ + 1 :: "first order (linear)" + 3 :: "third order (cubic)" + 5 :: "fifth order" +} 1 + +CCTK_INT prolongation_order_time "Order of prolongation operator in time" STEERABLE=recover +{ + 0 :: "zeroth order (constant)" + 1 :: "first order (linear)" + 2 :: "second order (quadratic)" +} 1 + + + +CCTK_INT buffer_width "Width of the buffer zone inside the fine grid" STEERABLE=recover +{ + 0:* :: "Should be the radius of the numerical domain of dependence of the time integrator, minus the number of ghost zones" +} 0 + + + +CCTK_STRING base_extents "Extents of base grid components, in grid point units of the finest level" +{ + "^$" :: "leave empty for one grid component covering the whole region (default)" +# We want the string to contain a list of bboxes. Each bbox contains +# three vectors specifying the lower bound, upper bound, and stride. +# (The upper bound is inclusive. All values are nonnegative integers.) +# The syntax for vectors, bboxes, and lists is described below. +# All spaces are optional. +# The () parentheses and [] brackets are literals. +# The {} braces are used for grouping. +# If you put everything together, you get the tapeworm below. +# There should be a way to define abbreviations in regexps! +# Having #defines in param.ccl files would help a lot. +# VECT := " [ 0 , 0 , 0 ]" +# BBOX := " (VECT :VECT :VECT )" +# LIST := " [{{BBOX ,}*BBOX}? ]" + "^\[(([[:space:]]*\([[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*:[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*:[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*\)[[:space:]]*,)*[[:space:]]*\([[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*:[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*:[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*\))?[[:space:]]*\]$" :: "[ ([<imin>,<jmin>,<kmin>]:[<imax>,<jmax>,<kmax>]:[<istride>,<jstride>,<kstride>]), ... ]" +} "" + +CCTK_STRING base_outerbounds "Outer boundaries of base grid components" +{ + "^$" :: "leave empty for using the default, which depends on cctk_gsh" +# See above for an explanation of this syntax, and of the tapeworm below. +# Each vector element is 0 or 1, +# where 0 is handled by synchronisation or prolongation, +# and 1 stands for a user-supplied ("outer") boundary condition. +# BND := " [ 0 , 0 ]" +# VECT := " [ BND , BND , BND ]" +# LIST := " [{{VECT ,}*VECT}? ]" + "^\[(([[:space:]]*\[[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*,[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*,[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*\][[:space:]]*,)*[[:space:]]*\[[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*,[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*,[[:space:]]*\[[[:space:]]*[[:digit:]]+[[:space:]]*,[[:space:]]*[[:digit:]]+[[:space:]]*\][[:space:]]*\])?[[:space:]]*\]$" :: "[ [ [<ilower>,<iupper>], [<jlower>,<jupper>], [<klower>,<kupper>] ], ... ]" +} "" + + + +BOOLEAN enable_all_storage "Enable storage for all grid functions" STEERABLE=recover +{ +} "yes" + + + +BOOLEAN poison_new_timelevels "Try to catch uninitialised grid elements by setting new timelevels to values that will catch your attention" STEERABLE=always +{ +} "no" + +BOOLEAN check_for_poison "Explicitely check for the poison value after every time step" STEERABLE=always +{ +} "no" + +CCTK_INT poison_value "Integer value (0..255) used to poison new timelevels (with memset)" STEERABLE=always +{ + 0:255 :: "Must fit into a byte. Use 0 for zero, 255 for nan, and e.g. 113 for a large value." +} 255 + +CCTK_INT max_poison_locations "Maximum number of poison locations that are printed to the screen" STEERABLE=always +{ + -1 :: "print all locations" + 0:* :: "print only that many locations" +} 10 + + + +BOOLEAN checksum_timelevels "Try to catch unintentionally changed timelevels by taking checksums and comparing against these" STEERABLE=always +{ +} "no" + + + +BOOLEAN suppress_restriction "Suppress the restriction operations. This makes the coarser refinement levels independent of the finer ones." STEERABLE=always +{ +} "no" + + + +BOOLEAN verbose "Display info on the screen" STEERABLE=always +{ +} "no" + +BOOLEAN veryverbose "Display a lot of info on the screen" STEERABLE=always +{ +} "no" + +BOOLEAN barriers "Insert barriers at strategic places for debugging purposes (slows down execution)" STEERABLE=always +{ +} "no" + + + +KEYWORD processor_topology "How to determine the processor topology" STEERABLE=recover +{ + "manual" :: "Specified by processor_topology_*" + "along-z" :: "Split the region along the z direction only" + "along-dir" :: "Split the region along one direction only" + "automatic" :: "Choose the topology automatically" +} "automatic" + +CCTK_INT processor_topology_3d_x "Number of processors in x-direction" STEERABLE=recover +{ + 1:* :: "must be positive" +} 1 + +CCTK_INT processor_topology_3d_y "Number of processors in y-direction" STEERABLE=recover +{ + 1:* :: "must be positive" +} 1 + +CCTK_INT processor_topology_3d_z "Number of processors in z-direction" STEERABLE=recover +{ + 1:* :: "must be positive" +} 1 + +CCTK_INT split_direction "Direction in which the domain should be split" STEERABLE=recover +{ + 0:* :: "0 for x, 1 for y, 2 for z, etc." +} 2 + + + +STRING grid_structure_filename "File name to output grid structure to (empty = no output)" STEERABLE=recover +{ + ".*" :: "must be a legal file name" +} "" + + + +private: + +BOOLEAN init_each_timelevel "Call initial data routines once for each timelevel" STEERABLE=always +{ +} "no" + +BOOLEAN prolongate_initial_data "Prolongate the refined regions during initial data generation" STEERABLE=always +{ +} "yes" + + + +BOOLEAN init_3_timelevels "Set up 3 timelevels of initial data" STEERABLE=always +{ +} "no" diff --git a/Carpet/Carpet/schedule.ccl b/Carpet/Carpet/schedule.ccl new file mode 100644 index 000000000..491f070ba --- /dev/null +++ b/Carpet/Carpet/schedule.ccl @@ -0,0 +1,7 @@ +# Schedule definitions for thorn Carpet +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/schedule.ccl,v 1.7 2004/05/27 12:28:01 schnetter Exp $ + +schedule CarpetStartup at STARTUP as Driver_Startup +{ + LANG: C +} "Startup routine" diff --git a/Carpet/Carpet/src/CallFunction.cc b/Carpet/Carpet/src/CallFunction.cc new file mode 100644 index 000000000..4511c10ef --- /dev/null +++ b/Carpet/Carpet/src/CallFunction.cc @@ -0,0 +1,298 @@ +#include <assert.h> +#include <stdlib.h> + +#include <algorithm> + +#include "cctk.h" +#include "cctki_GHExtensions.h" + +#include "gh.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/CallFunction.cc,v 1.19 2004/08/02 11:43:15 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_CallFunction_cc); +} + + + +namespace Carpet { + + using namespace std; + + /// Traverse one function on all components of one refinement level + /// of one multigrid level. + int CallFunction (void* function, ///< the function to call + cFunctionData* attribute, ///< attributes of the function + void* data) ///< ??? + { +// Checkpoint ("Starting CallFunction..."); + + cGH* cgh = (cGH*)data; + + assert (!! attribute->meta + + !! attribute->global + + !! attribute->level + + !! attribute->singlemap + + !! attribute->local <= 1); + + assert (!! attribute->loop_global + + !! attribute->loop_level + + !! attribute->loop_singlemap + + !! attribute->loop_local <= 1); + + if (attribute->meta || is_meta_mode()) { + // Convtest operation + + if (do_meta_mode) { + if (attribute->loop_local) { + BEGIN_META_MODE(cgh) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + Checkpoint ("Meta time local mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } END_META_MODE; + } else if (attribute->loop_singlemap) { + BEGIN_META_MODE(cgh) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + Checkpoint ("Meta time singlemap mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_MAP_LOOP; + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } END_META_MODE; + } else if (attribute->loop_level) { + BEGIN_META_MODE(cgh) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + Checkpoint ("Meta time level mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } END_META_MODE; + } else if (attribute->loop_global) { + BEGIN_META_MODE(cgh) { + BEGIN_MGLEVEL_LOOP(cgh) { + Checkpoint ("Meta time global mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_MGLEVEL_LOOP; + } END_META_MODE; + } else { + BEGIN_META_MODE(cgh) { + Checkpoint ("Meta mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_META_MODE; + } + } + + } else if (attribute->global || is_global_mode()) { + // Global operation: call once + + assert (! attribute->loop_meta); + + if (do_global_mode) { + if (attribute->loop_local) { + BEGIN_GLOBAL_MODE(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + Checkpoint ("Global time local mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_GLOBAL_MODE; + } else if (attribute->loop_singlemap) { + BEGIN_GLOBAL_MODE(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + Checkpoint ("Global time singlemap mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_MAP_LOOP; + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_GLOBAL_MODE; + } else if (attribute->loop_level) { + BEGIN_GLOBAL_MODE(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + Checkpoint ("Global time level mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_GLOBAL_MODE; + } else { + BEGIN_GLOBAL_MODE(cgh) { + Checkpoint ("Global mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + } END_GLOBAL_MODE; + } + } + + } else if (attribute->level) { + // Level operation: call once per refinement level + + assert (! attribute->loop_meta); + assert (! attribute->loop_global); + + if (attribute->loop_local) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + Checkpoint ("Level time local mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } else if (attribute->loop_singlemap) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + Checkpoint ("Level time singlemap mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_MAP_LOOP; + } else { + Checkpoint ("Level mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + + } else if (attribute->singlemap) { + // Single map operation: call once per refinement level and map + + assert (! attribute->loop_meta); + assert (! attribute->loop_global); + assert (! attribute->loop_level); + + if (attribute->loop_local) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + Checkpoint ("Singlemap time local mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } else { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + Checkpoint ("Singlemap mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_MAP_LOOP; + } + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + + } else { + // Local operation: call once per component + + assert (! attribute->loop_meta); + assert (! attribute->loop_global); + assert (! attribute->loop_level); + assert (! attribute->loop_singlemap); + + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + Checkpoint ("Local mode call at %s to %s::%s", + attribute->where, attribute->thorn, attribute->routine); + const int res = CCTK_CallFunction (function, attribute, data); + assert (res==0); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + for (int n=0; n<attribute->n_SyncGroups; ++n) { + char * const groupname = CCTK_GroupName (attribute->SyncGroups[n]); + SyncGroup (cgh, groupname); + free (groupname); + } + + } + +// Checkpoint ("done with CallFunction."); + + // The return value indicates whether the grid functions have been + // synchronised. + // 0: let the flesh do the synchronisation + // 1: we did the synchronisation + return 1; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/CarpetParamCheck.cc b/Carpet/Carpet/src/CarpetParamCheck.cc new file mode 100644 index 000000000..e3e407120 --- /dev/null +++ b/Carpet/Carpet/src/CarpetParamCheck.cc @@ -0,0 +1,39 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/CarpetParamCheck.cc,v 1.9 2003/09/19 16:04:31 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_CarpetParamCheck_cc); +} + + + +namespace Carpet { + + using namespace std; + + /** Ensure that the parameters have legal values. + * + * Note that this checking happens only after most of Carpet has + * already been set up. + */ + void CarpetParamCheck (CCTK_ARGUMENTS) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + if (CCTK_ParameterQueryTimesSet ("periodic", "Carpet") + || CCTK_ParameterQueryTimesSet ("periodic_x", "Carpet") + || CCTK_ParameterQueryTimesSet ("periodic_y", "Carpet") + || CCTK_ParameterQueryTimesSet ("periodic_z", "Carpet")) { + CCTK_PARAMWARN ("Some of the parameters \"Carpet::periodic*\" have been set. These parameters are there for compatibility reasons only and must not be used."); + } + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/CarpetStartup.cc b/Carpet/Carpet/src/CarpetStartup.cc new file mode 100644 index 000000000..c55c99d9a --- /dev/null +++ b/Carpet/Carpet/src/CarpetStartup.cc @@ -0,0 +1,45 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/CarpetStartup.cc,v 1.5 2003/09/19 16:04:31 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_CarpetStartup_cc); +} + + + +namespace Carpet { + + using namespace std; + + void CarpetStartup() + { + CCTK_RegisterBanner ("AMR driver provided by Carpet"); + + GHExtension = CCTK_RegisterGHExtension("Carpet"); + CCTK_RegisterGHExtensionSetupGH (GHExtension, SetupGH); + + CCTK_OverloadInitialise (Initialise); + CCTK_OverloadEvolve (Evolve); + CCTK_OverloadShutdown (Shutdown); + + CCTK_OverloadSyncGroup (SyncGroup); + CCTK_OverloadEnableGroupStorage (EnableGroupStorage); + CCTK_OverloadDisableGroupStorage (DisableGroupStorage); + CCTK_OverloadEnableGroupComm (EnableGroupComm); + CCTK_OverloadDisableGroupComm (DisableGroupComm); + CCTK_OverloadBarrier (Barrier); + CCTK_OverloadExit (Exit); + CCTK_OverloadAbort (Abort); + CCTK_OverloadMyProc (MyProc); + CCTK_OverloadnProcs (nProcs); + CCTK_OverloadArrayGroupSizeB (ArrayGroupSizeB); + CCTK_OverloadQueryGroupStorageB (QueryGroupStorageB); + CCTK_OverloadGroupDynamicData (GroupDynamicData); + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Checksum.cc b/Carpet/Carpet/src/Checksum.cc new file mode 100644 index 000000000..6943e681a --- /dev/null +++ b/Carpet/Carpet/src/Checksum.cc @@ -0,0 +1,181 @@ +#include <assert.h> +#include <stdlib.h> + +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Checksum.cc,v 1.15 2004/03/24 17:44:51 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Checksum_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + // Checksum information + struct ckdesc { + bool valid; + unsigned int sum; + }; + + // Helper class + struct ckdesc4 { + vector<vector<vector<vector<ckdesc> > > > a; // [m][c][var][tl] + }; + + // Checksum information + vector<vector<vector<ckdesc4> > > checksums; // [rl][ml][group] + + + + void CalculateChecksums (const cGH* cgh, const checktimes where) + { + DECLARE_CCTK_PARAMETERS; + + if (! checksum_timelevels) return; + + Checkpoint ("CalculateChecksums"); + + checksums.resize(maxreflevels); + checksums.at(reflevel).resize(mglevels); + checksums.at(reflevel).at(mglevel).resize(CCTK_NumGroups()); + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + const int grouptype = CCTK_GroupTypeI(group); + if (reflevel == 0 || grouptype == CCTK_GF) { + checksums.at(reflevel).at(mglevel).at(group).a.resize(arrdata.at(group).size()); + BEGIN_MAP_LOOP(cgh, grouptype) { + checksums.at(reflevel).at(mglevel).at(group).a.at(map).resize(arrdata.at(group).at(map).hh->components(reflevel)); + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + const int nvars = CCTK_NumVarsInGroupI(group); + checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).resize(nvars); + if (nvars > 0) { + + const int n0 = CCTK_FirstVarIndexI(group); + const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n0)); + assert (sz>0); + + ivect size(1); + const int gpdim = groupdata.at(group).info.dim; + for (int d=0; d<gpdim; ++d) { + size[d] = groupdata.at(group).info.lsh[d]; + } + const int np = prod(size); + + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + for (int var=0; var<nvars; ++var) { + checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).resize(num_tl); + for (int tl=min_tl; tl<=max_tl; ++tl) { + + const int n = n0 + var; + const void* data = cgh->data[n][tl]; + unsigned int chk = 0; + for (int i=0; i<np*sz/(int)sizeof chk; ++i) { + chk += ((const unsigned int*)data)[i]; + } + + checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).at(tl).sum = chk; + checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).at(tl).valid = true; + + } // for tl + } // for var + } // if group has vars + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } // if grouptype fits + } // if storage + } // for group + + } + + + + void CheckChecksums (const cGH* cgh, const checktimes where) + { + DECLARE_CCTK_PARAMETERS; + + if (! checksum_timelevels) return; + + Checkpoint ("CheckChecksums"); + + assert ((int)checksums.size()==maxreflevels); + assert ((int)checksums.at(reflevel).size()==mglevels); + assert ((int)checksums.at(reflevel).at(mglevel).size()==CCTK_NumGroups()); + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + const int grouptype = CCTK_GroupTypeI(group); + if (reflevel == 0 || grouptype == CCTK_GF) { + assert (checksums.at(reflevel).at(mglevel).at(group).a.size()==arrdata.at(group).size()); + BEGIN_MAP_LOOP(cgh, grouptype) { + assert ((int)checksums.at(reflevel).at(mglevel).at(group).a.at(map).size()==arrdata.at(group).at(map).hh->components(reflevel)); + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + const int nvars = CCTK_NumVarsInGroupI(group); + assert ((int)checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).size()==nvars); + if (nvars > 0) { + + const int n0 = CCTK_FirstVarIndexI(group); + const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n0)); + assert (sz>0); + + ivect size(1); + const int gpdim = groupdata.at(group).info.dim; + for (int d=0; d<gpdim; ++d) { + size[d] = groupdata.at(group).info.lsh[d]; + } + const int np = prod(size); + + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + for (int var=0; var<nvars; ++var) { + assert ((int)checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).size()==num_tl); + for (int tl=min_tl; tl<=max_tl; ++tl) { + if (checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).at(tl).valid) { + + const int n = n0 + var; + const void* data = cgh->data[n][tl]; + unsigned int chk = 0; + for (int i=0; i<np*sz/(int)sizeof chk; ++i) { + chk += ((const unsigned int*)data)[i]; + } + const bool unexpected_change = + chk != checksums.at(reflevel).at(mglevel).at(group).a.at(map).at(component).at(var).at(tl).sum; + + if (unexpected_change) { + char* fullname = CCTK_FullName(n); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Timelevel %d, component %d, refinement level %d of the variable \"%s\" has changed unexpectedly", + tl, component, reflevel, fullname); + free (fullname); + } + + } // if valid + } // for tl + } // for var + } // if group has vars + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } // if grouptype fits + } // if storage + } // for group + + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Comm.cc b/Carpet/Carpet/src/Comm.cc new file mode 100644 index 000000000..c66dd6915 --- /dev/null +++ b/Carpet/Carpet/src/Comm.cc @@ -0,0 +1,165 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "ggf.hh" +#include "gh.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Comm.cc,v 1.29 2004/05/21 18:16:23 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Comm_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + int SyncGroup (const cGH* cgh, const char* groupname) + { + DECLARE_CCTK_PARAMETERS; + + const int group = CCTK_GroupIndex(groupname); + assert (group>=0 && group<CCTK_NumGroups()); + assert (group<(int)arrdata.size()); + + Checkpoint ("SyncGroup \"%s\" time=%g", groupname, (double)cgh->cctk_time); + + const int grouptype = CCTK_GroupTypeI(group); + + if (grouptype == CCTK_GF) { + if (reflevel == -1) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise in global mode " + "(Tried to synchronise group \"%s\")", + groupname); + } + if (map != -1 && component == -1) { + if (maps == 1) { + CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, + "Synchronising group \"%s\" in singlemap mode", + groupname); + } else { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise in singlemap mode " + "(Tried to synchronise group \"%s\")", + groupname); + } + } + if (component != -1) { + if (maps == 1 && vhh.at(map)->local_components(reflevel) == 1) { + CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, + "Synchronising group \"%s\" in local mode", + groupname); + } else { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise in local mode " + "(Tried to synchronise group \"%s\")", + groupname); + } + } + } + + if (! CCTK_QueryGroupStorageI(cgh, group)) { + CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot synchronise group \"%s\" because it has no storage", + groupname); + return -1; + } + + if (CCTK_NumVarsInGroupI(group) == 0) return 0; + + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int tl = 0; + + // Prolongate the boundaries + if (do_prolongate) { + switch (grouptype) { + + case CCTK_GF: + assert (reflevel>=0 && reflevel<reflevels); + if (reflevel > 0) { + + // use the current time here (which may be modified by the + // user) + const CCTK_REAL time + = (cgh->cctk_time - cctk_initial_time) / delta_time; + + for (comm_state<dim> state; !state.done(); state.step()) { + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + for (int c=0; c<vhh.at(m)->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->ref_bnd_prolongate + (state, tl, reflevel, c, mglevel, time); + } + } + } + } // for state + } // if reflevel>0 + break; + + case CCTK_SCALAR: + case CCTK_ARRAY: + // do nothing + break; + + default: + assert (0); + } // switch grouptype + } // if do_prolongate + + // Sync + for (comm_state<dim> state; !state.done(); state.step()) { + switch (CCTK_GroupTypeI(group)) { + + case CCTK_GF: + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + for (int c=0; c<vhh.at(m)->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->sync + (state, tl, reflevel, c, mglevel); + } + } + } + break; + + case CCTK_SCALAR: + case CCTK_ARRAY: + for (int var=0; var<(int)arrdata.at(group).at(0).data.size(); ++var) { + arrdata.at(group).at(0).data.at(var)->sync (state, 0, 0, 0, 0); + } + break; + + default: + assert (0); + } // switch grouptype + } // for state + + return 0; + } + + + + int EnableGroupComm (const cGH* cgh, const char* groupname) + { + // Communication is always enabled + return 0; + } + + int DisableGroupComm (const cGH* cgh, const char* groupname) + { + // Communication is always enabled + return -1; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Cycle.cc b/Carpet/Carpet/src/Cycle.cc new file mode 100644 index 000000000..69a195563 --- /dev/null +++ b/Carpet/Carpet/src/Cycle.cc @@ -0,0 +1,115 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" + +#include "ggf.hh" +#include "gh.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Cycle.cc,v 1.19 2004/05/21 18:16:23 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Cycle_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + void CycleTimeLevels (const cGH* cgh) + { + Checkpoint ("CycleTimeLevels"); + assert (is_level_mode()); + + for (int group=0; group<CCTK_NumGroups(); ++group) { + assert (group<(int)arrdata.size()); + if (CCTK_QueryGroupStorageI(cgh, group)) { + switch (CCTK_GroupTypeI(group)) { + + case CCTK_GF: + assert (reflevel>=0 && reflevel<reflevels); + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + assert (m<(int)arrdata.at(group).size()); + assert (var<(int)arrdata.at(group).at(m).data.size()); + for (int c=0; c<arrdata.at(group).at(m).hh->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->cycle (reflevel, c, mglevel); + } + } + } + break; + + case CCTK_SCALAR: + case CCTK_ARRAY: + if (do_global_mode) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + assert (var<(int)arrdata.at(group).at(0).data.size()); + for (int c=0; c<arrdata.at(group).at(0).hh->components(0); ++c) { + arrdata.at(group).at(0).data.at(var)->cycle (0, c, mglevel); + } + } + } + break; + + default: + assert (0); + } // switch grouptype + } // if storage + } // for group + } + + + + void FlipTimeLevels (const cGH* cgh) + { + Checkpoint ("FlipTimeLevels"); + assert (is_level_mode()); + + for (int group=0; group<CCTK_NumGroups(); ++group) { + assert (group<(int)arrdata.size()); + if (CCTK_QueryGroupStorageI(cgh, group)) { + const int num_vars = CCTK_NumVarsInGroupI(group); + if (num_vars>0) { + const int var0 = CCTK_FirstVarIndexI(group); + assert (var0>=0); + + switch (CCTK_GroupTypeI(group)) { + + case CCTK_GF: + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + assert (var<(int)arrdata.at(group).at(m).data.size()); + for (int c=0; c<arrdata.at(group).at(m).hh->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->flip (reflevel, c, mglevel); + } + } + } + break; + + case CCTK_SCALAR: + case CCTK_ARRAY: + if (do_global_mode) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + assert (var<(int)arrdata.at(group).at(0).data.size()); + for (int c=0; c<arrdata.at(group).at(0).hh->components(0); ++c) { + arrdata.at(group).at(0).data.at(var)->flip (0, c, mglevel); + } + } + } + break; + + default: + assert (0); + } // switch grouptype + + } // if num_vars>0 + } // if storage + } // for group + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Evolve.cc b/Carpet/Carpet/src/Evolve.cc new file mode 100644 index 000000000..e226a8330 --- /dev/null +++ b/Carpet/Carpet/src/Evolve.cc @@ -0,0 +1,351 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Termination.h" + +// IRIX wants this before <time.h> +#if HAVE_SYS_TYPES_H +# include <sys/types.h> +#endif + +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# elif HAVE_TIME_H +# include <time.h> +# endif +#endif + +#if HAVE_UNISTD_H +# include <unistd.h> +#endif + +#include "dist.hh" +#include "th.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Evolve.cc,v 1.54 2004/08/19 15:38:20 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Evolve_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + static bool do_terminate (const cGH *cgh, + const CCTK_REAL time, const int iteration) + { + DECLARE_CCTK_PARAMETERS; + + bool term; + + // Early shortcut + if (terminate_next || CCTK_TerminationReached(cgh)) { + + term = true; + + } else { + + const bool term_iter = iteration >= cctk_itlast; + const bool term_time + = (delta_time > 0 + ? time >= cctk_final_time - 1.0e-8 * cgh->cctk_delta_time + : time <= cctk_final_time - 1.0e-8 * cgh->cctk_delta_time); +#ifdef HAVE_TIME_GETTIMEOFDAY + // get the current time + struct timeval tv; + gettimeofday (&tv, 0); + const double thetime = tv.tv_sec + tv.tv_usec / 1e6; + + static bool firsttime = true; + static double initial_runtime; + if (firsttime) { + firsttime = false; + initial_runtime = thetime; + } + + const double runtime = thetime - initial_runtime; + const bool term_runtime = (max_runtime > 0 + && runtime >= 60.0 * max_runtime); +#else + const bool term_runtime = false; +#endif + + if (CCTK_Equals(terminate, "never")) { + term = false; + } else if (CCTK_Equals(terminate, "iteration")) { + term = term_iter; + } else if (CCTK_Equals(terminate, "time")) { + term = term_time; + } else if (CCTK_Equals(terminate, "runtime")) { + term = term_runtime; + } else if (CCTK_Equals(terminate, "any")) { + term = term_iter || term_time || term_runtime; + } else if (CCTK_Equals(terminate, "all")) { + term = term_iter && term_time && term_runtime; + } else if (CCTK_Equals(terminate, "either")) { + term = term_iter || term_time; + } else if (CCTK_Equals(terminate, "both")) { + term = term_iter && term_time; + } else if (CCTK_Equals(terminate, "immediately")) { + term = true; + } else { + CCTK_WARN (0, "Unsupported termination condition"); + } + + } + + { + int local, global; + local = term; + MPI_Allreduce (&local, &global, 1, MPI_INT, MPI_LOR, dist::comm); + term = global; + } + + return term; + } + + + + int Evolve (tFleshConfig* fc) + { + DECLARE_CCTK_PARAMETERS; + + Waypoint ("Starting evolution loop"); + + const int convlev = 0; + cGH* cgh = fc->GH[convlev]; + + // Main loop + while (! do_terminate(cgh, cgh->cctk_time, cgh->cctk_iteration)) { + + + + // Advance time + ++cgh->cctk_iteration; + global_time = cctk_initial_time + + cgh->cctk_iteration * delta_time / maxreflevelfact; + cgh->cctk_time = global_time; + if ((cgh->cctk_iteration-1) + % (maxreflevelfact / ipow(reffact, reflevels-1)) == 0) { + Waypoint ("Evolving iteration %d at t=%g", + cgh->cctk_iteration, (double)cgh->cctk_time); + } + + + + // Regrid + { + bool did_regrid = false; + for (int rl=0; rl<reflevels; ++rl) { + { + const int ml=0; + const int do_every = maxreflevelfact / ipow(reffact, rl); + if ((cgh->cctk_iteration-1) % do_every == 0) { + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + Checkpoint ("Regrid"); + did_regrid |= Regrid (cgh, false, true); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // if do_every + } // ml + } // for rl + + if (did_regrid) { + for (int rl=0; rl<reflevels; ++rl) { + for (int ml=mglevels-1; ml>=0; --ml) { + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Postregrid at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Postregrid + Checkpoint ("Scheduling POSTREGRID"); + CCTK_ScheduleTraverse ("CCTK_POSTREGRID", cgh, CallFunction); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // for ml + } // for rl + } // if did_regrid + } + + + + for (int ml=mglevels-1; ml>=0; --ml) { + + bool have_done_global_mode = false; + bool have_done_anything = false; + + for (int rl=0; rl<reflevels; ++rl) { + const int do_every + = ipow(mgfact, ml) * (maxreflevelfact / ipow(reffact, rl)); + if ((cgh->cctk_iteration-1) % do_every == 0) { + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + do_global_mode = ! have_done_global_mode; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + assert (! (have_done_global_mode && do_global_mode)); + have_done_global_mode |= do_global_mode; + have_done_anything = true; + + // Advance times + for (int m=0; m<maps; ++m) { + vtt.at(m)->advance_time (reflevel, mglevel); + } + cgh->cctk_time = (global_time + - delta_time / maxreflevelfact + + delta_time * mglevelfact / reflevelfact); + CycleTimeLevels (cgh); + + Waypoint ("Evolution I at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checking + CalculateChecksums (cgh, allbutcurrenttime); + Poison (cgh, currenttimebutnotifonly); + + // Evolve + Checkpoint ("Scheduling PRESTEP"); + CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); + Checkpoint ("Scheduling EVOL"); + CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, currenttime); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // if do_every + } // for rl + + if (have_done_anything) assert (have_done_global_mode); + + } // for ml + + + + for (int ml=mglevels-1; ml>=0; --ml) { + for (int rl=reflevels-1; rl>=0; --rl) { + const int do_every + = ipow(mgfact, ml) * (maxreflevelfact / ipow(reffact, rl)); + if (cgh->cctk_iteration % do_every == 0) { + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + Waypoint ("Evolution/Restrict at iteration %d time %g", + cgh->cctk_iteration, (double)cgh->cctk_time); + + // Restrict + Restrict (cgh); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // if do_every + } // for rl + } // for ml + + + + for (int ml=mglevels-1; ml>=0; --ml) { + + bool have_done_global_mode = false; + bool have_done_anything = false; + + for (int rl=0; rl<reflevels; ++rl) { + const int do_every + = ipow(mgfact, ml) * (maxreflevelfact / ipow(reffact, rl)); + if (cgh->cctk_iteration % do_every == 0) { + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + int finest_active_reflevel = -1; + { + for (int rl_=0; rl_<reflevels; ++rl_) { + const int do_every_ + = ipow(mgfact, ml) * (maxreflevelfact / ipow(reffact, rl_)); + if (cgh->cctk_iteration % do_every_ == 0) { + finest_active_reflevel = rl_; + } + } + assert (finest_active_reflevel >= 0); + } + do_global_mode = rl == finest_active_reflevel; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + assert (! (have_done_global_mode && do_global_mode)); + have_done_global_mode |= do_global_mode; + have_done_anything = true; + + Waypoint ("Evolution II at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + Checkpoint ("Scheduling POSTRESTRICT"); + CCTK_ScheduleTraverse ("CCTK_POSTRESTRICT", cgh, CallFunction); + + // Poststep + Checkpoint ("Scheduling POSTSTEP"); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, currenttime); + CalculateChecksums (cgh, currenttime); + + // Checkpoint + Checkpoint ("Scheduling CHECKPOINT"); + CCTK_ScheduleTraverse ("CCTK_CHECKPOINT", cgh, CallFunction); + + // Analysis + Checkpoint ("Scheduling ANALYSIS"); + CCTK_ScheduleTraverse ("CCTK_ANALYSIS", cgh, CallFunction); + + // Output + Checkpoint ("OutputGH"); + CCTK_OutputGH (cgh); + + // Checking + CheckChecksums (cgh, alltimes); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // if do_every + } // for rl + + if (have_done_anything) assert (have_done_global_mode); + + } // for ml + + + + } // main loop + + Waypoint ("Done with evolution loop"); + + return 0; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Initialise.cc b/Carpet/Carpet/src/Initialise.cc new file mode 100644 index 000000000..fde570065 --- /dev/null +++ b/Carpet/Carpet/src/Initialise.cc @@ -0,0 +1,556 @@ +#include <assert.h> +#include <stdlib.h> + +#include <iostream> + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctki_GHExtensions.h" +#include "cctki_ScheduleBindings.h" +#include "cctki_WarnLevel.h" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Initialise.cc,v 1.52 2004/08/19 15:38:20 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Initialise_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + int Initialise (tFleshConfig* fc) + { + DECLARE_CCTK_PARAMETERS; + + // Initialise stuff + const int convlev = 0; + cGH* const cgh = CCTK_SetupGH (fc, convlev); + CCTKi_AddGH (fc, convlev, cgh); + + // Delay checkpoint until MPI has been initialised + Waypoint ("Starting initialisation"); + + // Initialise stuff + cgh->cctk_iteration = 0; + global_time = cctk_initial_time; + delta_time = 1.0; + cgh->cctk_time = global_time; + cgh->cctk_delta_time = delta_time; + + do_global_mode = true; + do_meta_mode = true; + + // Enable storage and communtication + CCTKi_ScheduleGHInit (cgh); + + // Initialise stuff + CCTKi_InitGHExtensions (cgh); + + + + // Output the grid structure + { + // Loop over maps + for (int m=0; m<maps; ++m) { + // Write grid structure to file + OutputGridStructure + (cgh, m, + vhh.at(m)->extents, vhh.at(m)->outer_boundaries, + vhh.at(m)->processors); + } // loop over maps + } + + + + BEGIN_MGLEVEL_LOOP(cgh) { + do_global_mode = true; + do_meta_mode = mglevel==mglevels-1; + + // Register coordinates + Checkpoint ("Scheduling CCTK_WRAGH"); + CCTK_ScheduleTraverse ("CCTK_WRAGH", cgh, CallFunction); + + // Check parameters + Checkpoint ("Scheduling PARAMCHECK"); + CCTK_ScheduleTraverse ("CCTK_PARAMCHECK", cgh, CallFunction); + CCTKi_FinaliseParamWarn(); + } END_MGLEVEL_LOOP; + + + + if (fc->recovered) { + // if recovering + + + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + cgh->cctk_time = global_time; + + Waypoint ("Recovering I at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Set up the grids + Checkpoint ("Scheduling BASEGRID"); + CCTK_ScheduleTraverse ("CCTK_BASEGRID", cgh, CallFunction); + + // Recover + Checkpoint ("Scheduling RECOVER_VARIABLES"); + CCTK_ScheduleTraverse ("CCTK_RECOVER_VARIABLES", cgh, CallFunction); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + + // Regrid + { + bool did_regrid = false; + { + const int ml=0; + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + // Regrid + Checkpoint ("Regrid"); + did_regrid |= Regrid (cgh, true, false); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // ml + + if (did_regrid) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = true; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Postregrid at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Postregrid + Checkpoint ("Scheduling POSTREGRID"); + CCTK_ScheduleTraverse ("CCTK_POSTREGRID", cgh, CallFunction); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // if did_regrid + } + + } // for rl + + + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==reflevels-1; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Recovering II at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Post recover + Checkpoint ("Scheduling POST_RECOVER_VARIABLES"); + CCTK_ScheduleTraverse + ("CCTK_POST_RECOVER_VARIABLES", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, alltimes); + CheckChecksums (cgh, allbutcurrenttime); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + + + } else { + // if not recovering + + + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + cgh->cctk_time = global_time; + + Waypoint ("Initialisation I at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checking + Poison (cgh, alltimes); + + // Set up the grids + Checkpoint ("Scheduling BASEGRID"); + CCTK_ScheduleTraverse ("CCTK_BASEGRID", cgh, CallFunction); + + const int num_tl = init_each_timelevel ? 3 : 1; + + // Rewind + for (int m=0; m<maps; ++m) { + vtt.at(m)->set_delta + (reflevel, mglevel, - vtt.at(m)->get_delta (reflevel, mglevel)); + FlipTimeLevels (cgh); + for (int tl=0; tl<num_tl; ++tl) { + vtt.at(m)->advance_time (reflevel, mglevel); + CycleTimeLevels (cgh); + } + vtt.at(m)->set_delta + (reflevel, mglevel, - vtt.at(m)->get_delta (reflevel, mglevel)); + FlipTimeLevels (cgh); + } + + const bool outer_do_global_mode = do_global_mode; + for (int tl=num_tl-1; tl>=0; --tl) { + do_global_mode = outer_do_global_mode && tl==0; + + // Advance times + for (int m=0; m<maps; ++m) { + vtt.at(m)->advance_time (reflevel, mglevel); + } + cgh->cctk_time + = global_time - tl * delta_time * mglevelfact / reflevelfact; + CycleTimeLevels (cgh); + + // Set up the initial data + Checkpoint ("Scheduling INITIAL"); + CCTK_ScheduleTraverse ("CCTK_INITIAL", cgh, CallFunction); + + } // for tl + do_global_mode = outer_do_global_mode; + + // Checking + PoisonCheck (cgh, currenttime); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + + // Regrid + { + bool did_regrid = false; + { + const int ml=0; + enter_global_mode (cgh, ml); + enter_level_mode (cgh, rl); + + // Regrid + Checkpoint ("Regrid"); + did_regrid |= Regrid (cgh, false, prolongate_initial_data); + + leave_level_mode (cgh); + leave_global_mode (cgh); + } // ml + + if (did_regrid) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = true; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Postregrid at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Postregrid + Checkpoint ("Scheduling POSTREGRID"); + CCTK_ScheduleTraverse ("CCTK_POSTREGRID", cgh, CallFunction); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // if did_regrid + } + + } // for rl + + + + for (int rl=reflevels-1; rl>=0; --rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + + Waypoint ("Initialisation/Restrict at iteration %d time %g", + cgh->cctk_iteration, (double)cgh->cctk_time); + + // Restrict + Restrict (cgh); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==reflevels-1; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Initialisation II at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + Checkpoint ("Scheduling POSTRESTRICTINITIAL"); + CCTK_ScheduleTraverse + ("CCTK_POSTRESTRICTINITIAL", cgh, CallFunction); + + // Postinitial + Checkpoint ("Scheduling POSTINITIAL"); + CCTK_ScheduleTraverse ("CCTK_POSTINITIAL", cgh, CallFunction); + + // Poststep + Checkpoint ("Scheduling POSTSTEP"); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, alltimes); + CheckChecksums (cgh, allbutcurrenttime); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + + + if (init_3_timelevels) { + // Use Scott Hawley's algorithm for getting two extra + // timelevels of data + Waypoint ("Initialising three timelevels"); + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + // Advance times + for (int m=0; m<maps; ++m) { + vtt.at(m)->advance_time (reflevel, mglevel); + } + cgh->cctk_time + = global_time + delta_time * mglevelfact / reflevelfact; + CycleTimeLevels (cgh); + + Waypoint ("Initialisation 3TL evolution I (a) (forwards) at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checking + CalculateChecksums (cgh, allbutcurrenttime); + Poison (cgh, currenttimebutnotifonly); + + // Evolve forward + Checkpoint ("Scheduling PRESTEP"); + CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); + Checkpoint ("Scheduling EVOL"); + CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, currenttime); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + delta_time *= -1; + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + // Flip time levels + Waypoint ("Flipping timelevels"); + FlipTimeLevels (cgh); + + cgh->cctk_time + = global_time + delta_time * mglevelfact / reflevelfact; + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Initialisation 3TL evolution I (b) (backwards) at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checking + CalculateChecksums (cgh, allbutcurrenttime); + Poison (cgh, currenttimebutnotifonly); + + // Evolve backward + Checkpoint ("Scheduling PRESTEP"); + CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); + Checkpoint ("Scheduling EVOL"); + CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, alltimes); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + Waypoint ("Hourglass structure in place"); + + // Evolve each level "backwards" one more timestep + // Starting with the finest level and proceeding to the coarsest + for (int rl=reflevels-1; rl>=0; --rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Initialisation 3TL evolution II (b) (backwards) at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Restrict + Restrict (cgh); + + Checkpoint ("Scheduling POSTRESTRICT"); + CCTK_ScheduleTraverse ("CCTK_POSTRESTRICT", cgh, CallFunction); + + // Poststep + Checkpoint ("Scheduling POSTSTEP"); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, alltimes); + + // Advance times + for (int m=0; m<maps; ++m) { + vtt.at(m)->advance_time (reflevel, mglevel); + } + cgh->cctk_time + = global_time + 2 * delta_time * mglevelfact / reflevelfact; + CycleTimeLevels (cgh); + + Waypoint ("Initialisation 3TL evolution I (c) (backwards) at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checking + CalculateChecksums (cgh, allbutcurrenttime); + Poison (cgh, currenttimebutnotifonly); + + // Evolve backward + Checkpoint ("Scheduling PRESTEP"); + CCTK_ScheduleTraverse ("CCTK_PRESTEP", cgh, CallFunction); + Checkpoint ("Scheduling EVOL"); + CCTK_ScheduleTraverse ("CCTK_EVOL", cgh, CallFunction); + Checkpoint ("Scheduling POSTSTEP"); + CCTK_ScheduleTraverse ("CCTK_POSTSTEP", cgh, CallFunction); + + // Checking + PoisonCheck (cgh, alltimes); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + delta_time *= -1; + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + // Flip time levels back + Waypoint ("Flipping timelevels back"); + FlipTimeLevels (cgh); + + // Invert level times back + for (int m=0; m<maps; ++m) { + vtt.at(m)->set_delta + (reflevel, mglevel, - vtt.at(m)->get_delta (reflevel, mglevel)); + vtt.at(m)->advance_time (reflevel, mglevel); + vtt.at(m)->advance_time (reflevel, mglevel); + vtt.at(m)->set_delta + (reflevel, mglevel, - vtt.at(m)->get_delta (reflevel, mglevel)); + } + cgh->cctk_time = global_time; + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + Waypoint ("Finished initialising three timelevels"); + + } // if init_3_timelevels + + } // if not recovering + + + + for (int rl=0; rl<reflevels; ++rl) { + BEGIN_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==reflevels-1; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Waypoint ("Initialisation III at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Checkpoint + Checkpoint ("Scheduling CPINITIAL"); + CCTK_ScheduleTraverse ("CCTK_CPINITIAL", cgh, CallFunction); + + // Analysis + Checkpoint ("Scheduling ANALYSIS"); + CCTK_ScheduleTraverse ("CCTK_ANALYSIS", cgh, CallFunction); + + // Output + Checkpoint ("OutputGH"); + CCTK_OutputGH (cgh); + + // Checking + PoisonCheck (cgh, alltimes); + CheckChecksums (cgh, allbutcurrenttime); + + leave_level_mode (cgh); + } END_MGLEVEL_LOOP; + } // for rl + + + + Waypoint ("Done with initialisation"); + + return 0; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Poison.cc b/Carpet/Carpet/src/Poison.cc new file mode 100644 index 000000000..7f1a00f2e --- /dev/null +++ b/Carpet/Carpet/src/Poison.cc @@ -0,0 +1,194 @@ +#include <assert.h> +#include <stdlib.h> +#include <string.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Poison.cc,v 1.17 2004/03/23 19:30:14 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Poison_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + void Poison (const cGH* cgh, const checktimes where) + { + DECLARE_CCTK_PARAMETERS; + + if (! poison_new_timelevels) return; + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + PoisonGroup (cgh, group, where); + } // if has storage + } // for group + } + + + + void PoisonGroup (const cGH* cgh, const int group, const checktimes where) + { + DECLARE_CCTK_PARAMETERS; + + assert (group>=0 && group<CCTK_NumGroups()); + + if (! poison_new_timelevels) return; + + if (! CCTK_QueryGroupStorageI(cgh, group)) { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot poison group \"%s\" because it has no storage", + groupname); + free (groupname); + return; + } + + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int nvar = CCTK_NumVarsInGroupI(group); + const int sz = CCTK_VarTypeSize(CCTK_VarTypeI(n0)); + assert (sz>0); + + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + if (min_tl <= max_tl) { + + { + char * const groupname = CCTK_GroupName(group); + Checkpoint ("PoisonGroup \"%s\"", groupname); + free (groupname); + } + + const int grouptype = CCTK_GroupTypeI(group); + + BEGIN_MAP_LOOP(cgh, grouptype) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + + ivect size(1); + const int gpdim = groupdata.at(group).info.dim; + for (int d=0; d<gpdim; ++d) { + size[d] = groupdata.at(group).info.lsh[d]; + } + const int np = prod(size); + + for (int var=0; var<nvar; ++var) { + const int n = n0 + var; + for (int tl=min_tl; tl<=max_tl; ++tl) { + memset (cgh->data[n][tl], poison_value, np*sz); + } // for tl + } // for var + + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + + } // if tl + } + + + + void PoisonCheck (const cGH* cgh, const checktimes where) + { + DECLARE_CCTK_PARAMETERS; + + if (! check_for_poison) return; + + Checkpoint ("PoisonCheck"); + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + + const int grouptype = CCTK_GroupTypeI(group); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int nvar = CCTK_NumVarsInGroupI(group); + const int tp = CCTK_VarTypeI(n0); + const int gpdim = groupdata.at(group).info.dim; + + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int min_tl = mintl(where, num_tl); + const int max_tl = maxtl(where, num_tl); + + BEGIN_MAP_LOOP(cgh, grouptype) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) { + + ivect size(1); + for (int d=0; d<gpdim; ++d) { + size[d] = groupdata.at(group).info.lsh[d]; + } + const int np = prod(size); + + for (int var=0; var<nvar; ++var) { + const int n = n0 + var; + + for (int tl=min_tl; tl<=max_tl; ++tl) { + + const void* const data = cgh->data[n][tl]; + int numpoison=0; + for (int k=0; k<size[2]; ++k) { + for (int j=0; j<size[1]; ++j) { + for (int i=0; i<size[0]; ++i) { + const int idx = i + size[0] * (j + size[1] * k); + bool poisoned=false; + switch (tp) { +#define TYPECASE(N,T) \ + case N: { \ + T worm; \ + memset (&worm, poison_value, sizeof worm); \ + const T & val = ((const T*)data)[idx]; \ + poisoned = memcmp (&worm, &val, sizeof worm) == 0; \ + break; \ + } +#include "typecase" +#undef TYPECASE + default: + UnsupportedVarType(n); + } + if (poisoned) { + ++numpoison; + if (max_poison_locations==-1 + || numpoison<=max_poison_locations) { + char* fullname = CCTK_FullName(n); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Timelevel %d, component %d, map %d, refinement level %d of the variable \"%s\" contains poison at [%d,%d,%d]", + tl, component, map, reflevel, fullname, i,j,k); + free (fullname); + } + } // if poisoned + } // for i + } // for j + } // for k + if (max_poison_locations!=-1 && numpoison>max_poison_locations) { + char* fullname = CCTK_FullName(n); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Timelevel %d, component %d, map %d, refinement level %d of the variable \"%s\" contains poison at %d of %d locations; not all locations were printed", + tl, component, map, reflevel, fullname, numpoison, np); + free (fullname); + } else if (numpoison>0) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Found poison at %d of %d locations", + numpoison, np); + } + + } // for tl + } // for var + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + + } // if has storage + } // for group + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Recompose.cc b/Carpet/Carpet/src/Recompose.cc new file mode 100644 index 000000000..e86761021 --- /dev/null +++ b/Carpet/Carpet/src/Recompose.cc @@ -0,0 +1,861 @@ +#include <assert.h> +#include <math.h> +#include <stdlib.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <iomanip> +#include <list> +#include <sstream> +#include <string> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "CactusBase/IOUtil/src/ioGH.h" + +#include "bbox.hh" +#include "bboxset.hh" +#include "defs.hh" +#include "gh.hh" +#include "vect.hh" + +#include "carpet.hh" +#include "modes.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Recompose.cc,v 1.72 2004/08/19 15:38:20 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Recompose_cc); +} + +#define DEBUG false // false or true + + + +namespace Carpet { + + using namespace std; + + + + // Reduction operator + template<typename iter, typename func> + static typename func::result_type + reduce (iter const first, iter const last, + typename func::result_type const & init) + { + typename func::result_type res (init); + for (iter it (first); it != last; ++it) { + res = func::operator() (res, *it); + } + return res; + } + + + + static void SplitRegions_Automatic_Recursively (bvect const & dims, + int const nprocs, + rvect const rshape, + ibbox const & bb, + bbvect const & ob, + int const & p, + vector<ibbox> & bbs, + vector<bbvect> & obs, + vector<int> & ps); + static void SplitRegions_AsSpecified (const cGH* cgh, + vector<ibbox>& bbs, + vector<bbvect>& obs, + vector<int>& ps); + + + + void CheckRegions (const gh<dim>::rexts & bbsss, + const gh<dim>::rbnds & obss, + const gh<dim>::rprocs& pss) + { + // At least one level + if (bbsss.size() == 0) { + CCTK_WARN (0, "I cannot set up a grid hierarchy with zero refinement levels."); + } + assert (bbsss.size() > 0); + // At most maxreflevels levels + if ((int)bbsss.size() > maxreflevels) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "I cannot set up a grid hierarchy with more than Carpet::max_refinement_levels refinement levels. I found Carpet::max_refinement_levels=%d, while %d levels were requested.", + (int)maxreflevels, (int)bbsss.size()); + } + assert ((int)bbsss.size() <= maxreflevels); + for (int rl=0; rl<(int)bbsss.size(); ++rl) { + // No empty levels + assert (bbsss.at(rl).size() > 0); + for (int c=0; c<(int)bbsss.at(rl).size(); ++c) { + // At least one multigrid level + assert (bbsss.at(rl).at(c).size() > 0); + for (int ml=0; ml<(int)bbsss.at(rl).at(c).size(); ++ml) { + // Check sizes + // Do allow processors with zero grid points +// assert (all(bbsss.at(rl).at(c).at(ml).lower() <= bbsssi.at(rl).at(c).at(ml).upper())); + // Check strides + const int str = ipow(reffact, maxreflevels-rl-1) * ipow(mgfact, ml); + assert (all(bbsss.at(rl).at(c).at(ml).stride() == str)); + // Check alignments + assert (all(bbsss.at(rl).at(c).at(ml).lower() % str == 0)); + assert (all(bbsss.at(rl).at(c).at(ml).upper() % str == 0)); + } + } + } + + assert (pss.size() == bbsss.size()); + assert (obss.size() == bbsss.size()); + for (int rl=0; rl<(int)bbsss.size(); ++rl) { + assert (obss.at(rl).size() == bbsss.at(rl).size()); + assert (pss.at(rl).size() == bbsss.at(rl).size()); + } + + } + + + + bool Regrid (const cGH* cgh, const bool force_recompose, const bool do_init) + { + assert (is_level_mode()); + + if (! CCTK_IsFunctionAliased ("Carpet_Regrid")) { + static bool didtell = false; + if (!didtell) { + CCTK_WARN (1, "No regridding routine has been provided. There will be no regridding. Maybe you forgot to activate a regridding thorn?"); + didtell = true; + } + return false; + } + + bool did_change = false; + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + + gh<dim>::rexts bbsss = vhh.at(map)->extents; + gh<dim>::rbnds obss = vhh.at(map)->outer_boundaries; + gh<dim>::rprocs pss = vhh.at(map)->processors; + + // Check whether to recompose + CCTK_INT const do_recompose + = Carpet_Regrid (cgh, &bbsss, &obss, &pss, force_recompose); + assert (do_recompose >= 0); + did_change = did_change || do_recompose; + + if (do_recompose) { + + CCTK_INFO ("Recomposing the grid hierarchy"); + + // Check the regions + CheckRegions (bbsss, obss, pss); + // TODO: check also that the current and all coarser levels + // did not change + + // Write grid structure to file + OutputGridStructure (cgh, map, bbsss, obss, pss); + + // Recompose + vhh.at(map)->recompose (bbsss, obss, pss, do_init); + + OutputGrids (cgh, map, *vhh.at(map)); + + } + + } END_MAP_LOOP; + + // Calculate new number of levels + reflevels = vhh.at(0)->reflevels(); + for (int m=0; m<maps; ++m) { + assert (vhh.at(m)->reflevels() == reflevels); + } + + // One cannot switch off the current level + assert (reflevels > reflevel); + + return did_change; + } + + + + void OutputGrids (const cGH* cgh, const int m, const gh<dim>& hh) + { + CCTK_INFO ("New grid structure (grid points):"); + cout << " Refinement level " << reflevel << ", map " << map << endl; + for (int rl=0; rl<hh.reflevels(); ++rl) { + for (int c=0; c<hh.components(rl); ++c) { + for (int ml=0; ml<hh.mglevels(rl,c); ++ml) { + const int convfact = ipow(mgfact, ml); + const int levfact = ipow(reffact, rl); + const ivect lower = hh.extents.at(rl).at(c).at(ml).lower(); + const ivect upper = hh.extents.at(rl).at(c).at(ml).upper(); + assert (all(lower * levfact % maxreflevelfact == 0)); + assert (all(upper * levfact % maxreflevelfact == 0)); + assert (all(((upper - lower) * levfact / maxreflevelfact) + % convfact == 0)); + cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" + << " exterior: " + << "proc " + << hh.processors.at(rl).at(c) + << " " + << lower * levfact / maxreflevelfact + << " : " + << upper * levfact / maxreflevelfact + << " (" + << (upper - lower) * levfact / maxreflevelfact / convfact + 1 + << ")" + << endl; + } + } + } + + CCTK_INFO ("New grid structure (coordinates):"); + for (int rl=0; rl<hh.reflevels(); ++rl) { + for (int c=0; c<hh.components(rl); ++c) { + for (int ml=0; ml<hh.mglevels(rl,c); ++ml) { + const rvect origin = origin_space.at(0); + const rvect delta = delta_space; + const ivect lower = hh.extents.at(rl).at(c).at(ml).lower(); + const ivect upper = hh.extents.at(rl).at(c).at(ml).upper(); + const int convfact = ipow(mgfact, ml); + const int levfact = ipow(reffact, rl); + cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" + << " exterior: " + << origin + delta * lower / maxreflevelfact + << " : " + << origin + delta * upper / maxreflevelfact + << " : " + << delta * convfact / levfact << endl; + } + } + } + } + + + + void OutputGridStructure (const cGH * const cgh, + const int m, + const gh<dim>::rexts & bbsss, + const gh<dim>::rbnds & obss, + const gh<dim>::rprocs& pss) + { + DECLARE_CCTK_PARAMETERS; + + // Output only on the root processor + if (CCTK_MyProc(cgh) != 0) return; + + // Output only if output is desired + if (strcmp(grid_structure_filename, "") == 0) return; + + // Get grid hierarchy extention from IOUtil + const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cgh, "IO"); + + // Output only if IO exists and has been initialised + if (! iogh) return; + + assert (iogh); + + // Create the output directory + CCTK_CreateDirectory (0755, out_dir); + + ostringstream filenamebuf; + filenamebuf << out_dir << "/" << grid_structure_filename; + // we need a persistent temporary here + string filenamestr = filenamebuf.str(); + const char * filename = filenamestr.c_str(); + + ofstream file; + + static bool do_truncate = true; + + if (do_truncate) { + do_truncate = false; + struct stat fileinfo; + if (! iogh->recovered + || stat(filename, &fileinfo)!=0) { + file.open (filename, ios::out | ios::trunc); + assert (file.good()); + file << "# grid structure" << endl + << "# format: map reflevel component mglevel processor bounding-box is-outer-boundary" << endl; + assert (file.good()); + } + } + if (! file.is_open()) { + file.open (filename, ios::app); + assert (file.good()); + } + + file << "iteration " << cgh->cctk_iteration << endl; + file << "maps " << maps << endl; + file << m << " reflevels " << bbsss.size() << endl; + for (int rl=0; rl<(int)bbsss.size(); ++rl) { + file << m << " " << rl << " components " << bbsss.at(rl).size() << endl; + for (int c=0; c<(int)bbsss.at(rl).size(); ++c) { + file << m << " " << rl << " " << c << " mglevels " << bbsss.at(rl).at(c).size() << endl; + for (int ml=0; ml<(int)bbsss.at(rl).at(c).size(); ++ml) { + file << m << " " << rl << " " << c << " " << ml << " " << pss.at(rl).at(c) << " " << bbsss.at(rl).at(c).at(ml) << obss.at(rl).at(c) << endl; + } + } + } + file << endl; + + file.close(); + assert (file.good()); + } + + + + // TODO: this routine should go into CarpetRegrid (except maybe + // SplitRegions_AlongZ for grid arrays) + void SplitRegions (const cGH* cgh, vector<ibbox>& bbs, vector<bbvect>& obs, + vector<int>& ps) + { + DECLARE_CCTK_PARAMETERS; + + if (CCTK_EQUALS (processor_topology, "along-z")) { + SplitRegions_AlongZ (cgh, bbs, obs, ps); + } else if (CCTK_EQUALS (processor_topology, "along-dir")) { + SplitRegions_AlongDir (cgh, bbs, obs, ps, split_direction); + } else if (CCTK_EQUALS (processor_topology, "automatic")) { + SplitRegions_Automatic (cgh, bbs, obs, ps); + } else if (CCTK_EQUALS (processor_topology, "manual")) { + SplitRegions_AsSpecified (cgh, bbs, obs, ps); + } else { + assert (0); + } + } + + + + void SplitRegions_AlongZ (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps) + { + SplitRegions_AlongDir (cgh, bbs, obs, ps, 2); + } + + + + void SplitRegions_AlongDir (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps, + const int dir) + { + // Something to do? + if (bbs.size() == 0) { + ps.resize(0); + return; + } + + const int nprocs = CCTK_nProcs(cgh); + + if (nprocs==1) { + ps.resize(1); + ps.at(0) = 0; + return; + } + + assert (bbs.size() == 1); + + assert (dir>=0 && dir<dim); + + const ivect rstr = bbs.at(0).stride(); + const ivect rlb = bbs.at(0).lower(); + const ivect rub = bbs.at(0).upper() + rstr; + const bbvect obnd = obs.at(0); + + bbs.resize(nprocs); + obs.resize(nprocs); + ps.resize(nprocs); + for (int c=0; c<nprocs; ++c) { + ivect cstr = rstr; + ivect clb = rlb; + ivect cub = rub; + const int glonpz = (rub[dir] - rlb[dir]) / cstr[dir]; + const int locnpz = (glonpz + nprocs - 1) / nprocs; + const int zstep = locnpz * cstr[dir]; + clb[dir] = rlb[dir] + zstep * c; + cub[dir] = rlb[dir] + zstep * (c+1); + if (clb[dir] > rub[dir]) clb[dir] = rub[dir]; + if (cub[dir] > rub[dir]) cub[dir] = rub[dir]; + assert (clb[dir] <= cub[dir]); + assert (cub[dir] <= rub[dir]); + bbs.at(c) = ibbox(clb, cub-cstr, cstr); + obs.at(c) = obnd; + ps.at(c) = c; + if (c>0) obs.at(c)[dir][0] = false; + if (c<nprocs-1) obs.at(c)[dir][1] = false; + } + + for (int n=0; n<(int)ps.size(); ++n) { + assert (ps.at(n) == n); + } + } + + + + static void SplitRegions_Automatic_Recursively (bvect const & dims, + int const nprocs, + rvect const rshape, + ibbox const & bb, + bbvect const & ob, + int const & p, + vector<ibbox> & bbs, + vector<bbvect> & obs, + vector<int> & ps) + { + if (DEBUG) cout << "SRAR enter" << endl; + // check preconditions + assert (nprocs >= 1); + + // are we done? + if (all(dims)) { + if (DEBUG) cout << "SRAR bottom" << endl; + + // check precondition + assert (nprocs == 1); + + // return arguments + bbs.assign (1, bb); + obs.assign (1, ob); + ps.assign (1, p); + + // return + if (DEBUG) cout << "SRAR exit" << endl; + return; + } + + // choose a direction + int mydim = -1; + CCTK_REAL mysize = 0; + int alldims = 0; + CCTK_REAL allsizes = 1; + for (int d=0; d<dim; ++d) { + if (! dims[d]) { + ++ alldims; + allsizes *= rshape[d]; + if (rshape[d] >= mysize) { + mydim = d; + mysize = rshape[d]; + } + } + } + assert (mydim>=0 && mydim<dim); + assert (mysize>=0); + if (DEBUG) cout << "SRAR mydim " << mydim << endl; + if (DEBUG) cout << "SRAR mysize " << mysize << endl; + + if (mysize == 0) { + // the bbox is empty + if (DEBUG) cout << "SRAR empty" << endl; + + // create the bboxes + bbs.clear(); + obs.clear(); + ps.clear(); + bbs.reserve(nprocs); + obs.reserve(nprocs); + ps.reserve(nprocs); + + // create a new bbox + assert (bb.empty()); + bbvect const newob (false); + ibbox const newbb (bb); + int const newp (p); + if (DEBUG) cout << "SRAR " << mydim << " newbb " << newbb << endl; + if (DEBUG) cout << "SRAR " << mydim << " newob " << newob << endl; + if (DEBUG) cout << "SRAR " << mydim << " newp " << newp << endl; + + // store + bbs.insert (bbs.end(), nprocs, newbb); + obs.insert (obs.end(), nprocs, newob); + for (int pp=0; pp<nprocs; ++pp) ps.insert (ps.end(), 1, newp+pp); + + // check postconditions + assert ((int)bbs.size() == nprocs); + assert ((int)obs.size() == nprocs); + assert ((int)ps.size() == nprocs); + if (DEBUG) cout << "SRAR exit" << endl; + return; + } + + // mark this direction as done + assert (! dims[mydim]); + bvect const newdims = dims.replace(mydim, true); + + // choose a number of slices for this direction + int const nslices + = min(nprocs, + (int)floor(mysize * pow(nprocs/allsizes, 1.0/alldims) + 0.5)); + assert (nslices <= nprocs); + if (DEBUG) cout << "SRAR " << mydim << " nprocs " << nprocs << endl; + if (DEBUG) cout << "SRAR " << mydim << " nslices " << nslices << endl; + + // split the remaining processors + vector<int> mynprocs(nslices); + int const mynprocs_base = nprocs / nslices; + int const mynprocs_left = nprocs - nslices * mynprocs_base; + for (int n=0; n<nslices; ++n) { + mynprocs.at(n) = n < mynprocs_left ? mynprocs_base+1 : mynprocs_base; + } + int sum_mynprocs = 0; + for (int n=0; n<nslices; ++n) { + sum_mynprocs += mynprocs.at(n); + } + assert (sum_mynprocs == nprocs); + if (DEBUG) cout << "SRAR " << mydim << " mynprocs " << mynprocs << endl; + + // split the region + vector<int> myslice(nslices); + int slice_left = ((bb.upper() - bb.lower()) / bb.stride())[mydim] + 1; + int nprocs_left = nprocs; + for (int n=0; n<nslices; ++n) { + if (n == nslices-1) { + myslice.at(n) = slice_left; + } else { + myslice.at(n) = (int)floor(1.0 * slice_left * mynprocs.at(n) / nprocs_left + 0.5); + } + assert (myslice.at(n) >= 0); + slice_left -= myslice.at(n); + nprocs_left -= mynprocs.at(n); + } + assert (slice_left == 0); + assert (nprocs_left == 0); + if (DEBUG) cout << "SRAR " << mydim << " myslice " << myslice << endl; + + // create the bboxes and recurse + if (DEBUG) cout << "SRAR " << mydim << ": create bboxes" << endl; + bbs.clear(); + obs.clear(); + ps.clear(); + bbs.reserve(nprocs); + obs.reserve(nprocs); + ps.reserve(nprocs); + ivect last_up; + for (int n=0; n<nslices; ++n) { + if (DEBUG) cout << "SRAR " << mydim << " n " << n << endl; + + // create a new bbox + ivect lo = bb.lower(); + ivect up = bb.upper(); + ivect str = bb.stride(); + bbvect newob = ob; + if (n > 0) { + lo[mydim] = last_up[mydim] + str[mydim]; + newob[mydim][0] = false; + } + if (n < nslices-1) { + up[mydim] = lo[mydim] + (myslice.at(n)-1) * str[mydim]; + newob[mydim][1] = false; + last_up = up; + } + ibbox newbb(lo, up, str); + int newp(p + n * mynprocs_base + (n < mynprocs_left ? n : mynprocs_left)); + if (DEBUG) cout << "SRAR " << mydim << " newbb " << newbb << endl; + if (DEBUG) cout << "SRAR " << mydim << " newob " << newob << endl; + if (DEBUG) cout << "SRAR " << mydim << " newp " << newp << endl; + + // recurse + vector<ibbox> newbbs; + vector<bbvect> newobs; + vector<int> newps; + SplitRegions_Automatic_Recursively + (newdims, mynprocs.at(n), rshape, + newbb, newob, newp, newbbs, newobs, newps); + if (DEBUG) cout << "SRAR " << mydim << " newbbs " << newbbs << endl; + if (DEBUG) cout << "SRAR " << mydim << " newobs " << newobs << endl; + if (DEBUG) cout << "SRAR " << mydim << " newps " << newps << endl; + + // store + assert ((int)newbbs.size() == mynprocs.at(n)); + assert ((int)newobs.size() == mynprocs.at(n)); + assert ((int)newps.size() == mynprocs.at(n)); + bbs.insert (bbs.end(), newbbs.begin(), newbbs.end()); + obs.insert (obs.end(), newobs.begin(), newobs.end()); + ps.insert (ps.end(), newps.begin(), newps.end()); + } + + // check postconditions + assert ((int)bbs.size() == nprocs); + assert ((int)obs.size() == nprocs); + assert ((int)ps.size() == nprocs); + for (int n=0; n<(int)ps.size(); ++n) { + assert ((int)ps.at(n) == p+n); + } + if (DEBUG) cout << "SRAR exit" << endl; + } + + + + void SplitRegions_Automatic (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps) + { + if (DEBUG) cout << "SRA enter" << endl; + // Something to do? + if (bbs.size() == 0) { + ps.resize(0); + return; + } + + const int nprocs = CCTK_nProcs(cgh); + if (DEBUG) cout << "SRA nprocs " << nprocs << endl; + + // nslices: number of disjoint bboxes + int const nslices = bbs.size(); + if (DEBUG) cout << "SRA nslices " << nslices << endl; + // ncomps: number of components per processor + int const ncomps = (nslices + nprocs - 1) / nprocs; + if (DEBUG) cout << "SRA ncomps " << ncomps << endl; + assert (ncomps > 0); + vector<int> mysize(nslices); + for (int c=0; c<nslices; ++c) { + mysize.at(c) = bbs.at(c).size(); + } + vector<int> mynprocs(nslices); + { + if (DEBUG) cout << "SRA: distributing processors to slices" << endl; + int ncomps_left = nprocs * ncomps; + for (int c=0; c<nslices; ++c) { + mynprocs.at(c) = 1; + -- ncomps_left; + } + while (ncomps_left > 0) { + if (DEBUG) cout << "SRA ncomps_left " << ncomps_left << endl; + int maxc = -1; + CCTK_REAL maxratio = -1; + for (int c=0; c<nslices; ++c) { + CCTK_REAL const ratio = (CCTK_REAL)mysize.at(c) / mynprocs.at(c); + if (ratio > maxratio) { maxc=c; maxratio=ratio; } + } + assert (maxc>=0 && maxc<nslices); + ++ mynprocs.at(maxc); + if (DEBUG) cout << "SRA maxc " << maxc << endl; + if (DEBUG) cout << "SRA mynprocs[maxc] " << mynprocs.at(maxc) << endl; + -- ncomps_left; + } + assert (ncomps_left == 0); + int sum_nprocs = 0; + for (int c=0; c<nslices; ++c) { + sum_nprocs += mynprocs.at(c); + } + assert (sum_nprocs == nprocs * ncomps); + } + if (DEBUG) cout << "SRA mynprocs " << mynprocs << endl; + + vector<ibbox> allbbs; + vector<bbvect> allobs; + vector<int> allps; + + if (DEBUG) cout << "SRA: splitting regions" << endl; + for (int c=0, p=0; c<nslices; p+=mynprocs.at(c), ++c) { + + const ibbox bb = bbs.at(c); + const bbvect ob = obs.at(c); + if (DEBUG) cout << "SRA c " << c << endl; + if (DEBUG) cout << "SRA p " << p << endl; + if (DEBUG) cout << "SRA bb " << bb << endl; + if (DEBUG) cout << "SRA ob " << ob << endl; + + const ivect rstr = bb.stride(); + const ivect rlb = bb.lower(); + const ivect rub = bb.upper() + rstr; + + // calculate real shape factors + rvect rshape; + if (any(rub == rlb)) { + // the bbox is empty + rshape = 0.0; + } else { + for (int d=0; d<dim; ++d) { + rshape[d] = (CCTK_REAL)(rub[d]-rlb[d]) / (rub[0]-rlb[0]); + } + const CCTK_REAL rfact = pow(nprocs / prod(rshape), 1.0/dim); + rshape *= rfact; + assert (abs(prod(rshape) - nprocs) < 1e-6); + } + if (DEBUG) cout << "SRA shapes " << rshape << endl; + + bvect const dims = false; + + vector<ibbox> thebbs; + vector<bbvect> theobs; + vector<int> theps; + + SplitRegions_Automatic_Recursively + (dims, mynprocs.at(c), rshape, bb, ob, p, thebbs, theobs, theps); + if (DEBUG) cout << "SRA thebbs " << thebbs << endl; + if (DEBUG) cout << "SRA theobs " << theobs << endl; + if (DEBUG) cout << "SRA theps " << theps << endl; + + allbbs.insert(allbbs.end(), thebbs.begin(), thebbs.end()); + allobs.insert(allobs.end(), theobs.begin(), theobs.end()); + allps.insert(allps.end(), theps.begin(), theps.end()); + + } // for c + + bbs = allbbs; + obs = allobs; + ps = allps; + for (int n=0; n<(int)ps.size(); ++n) { + ps.at(n) /= ncomps; + assert (ps.at(n) >= 0 && ps.at(n) < nprocs); + } + + if (DEBUG) cout << "SRA exit" << endl; + } + + + + static void SplitRegions_AsSpecified (const cGH* cgh, + vector<ibbox>& bbs, + vector<bbvect>& obs, + vector<int>& ps) + { + DECLARE_CCTK_PARAMETERS; + + // Something to do? + if (bbs.size() == 0) { + ps.resize(0); + return; + } + + const int nprocs = CCTK_nProcs(cgh); + + assert (bbs.size() == 1); + + const ivect rstr = bbs.at(0).stride(); + const ivect rlb = bbs.at(0).lower(); + const ivect rub = bbs.at(0).upper() + rstr; + const bbvect obnd = obs.at(0); + + const ivect nprocs_dir + (processor_topology_3d_x, processor_topology_3d_y, + processor_topology_3d_z); + assert (all (nprocs_dir > 0)); + if (prod(nprocs_dir) != nprocs) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The specified processor topology [%d,%d,%d] requires %d processors, but there are %d processors", nprocs_dir[0], nprocs_dir[1], nprocs_dir[2], prod(nprocs_dir), nprocs); + } + assert (prod(nprocs_dir) == nprocs); + + bbs.resize(nprocs); + obs.resize(nprocs); + ps.resize(nprocs); + const ivect cstr = rstr; + const ivect glonp = (rub - rlb) / cstr; +// const ivect locnp = (glonp + nprocs_dir - 1) / nprocs_dir; + const ivect locnp = glonp / nprocs_dir; + const ivect rem = glonp % nprocs_dir; + const ivect step = locnp * cstr; + assert (dim==3); + for (int k=0; k<nprocs_dir[2]; ++k) { + for (int j=0; j<nprocs_dir[1]; ++j) { + for (int i=0; i<nprocs_dir[0]; ++i) { + const int c = i + nprocs_dir[0] * (j + nprocs_dir[1] * k); + const ivect ipos (i, j, k); + ivect clb = rlb + step * ipos; + ivect cub = rlb + step * (ipos+1); +// clb = min (clb, rub); +// cub = min (cub, rub); + for (int d=0; d<dim; ++d) { + if (ipos[d]<rem[d]) { + clb[d] += cstr[d] * ipos[d]; + cub[d] += cstr[d] * (ipos[d]+1); + } else { + clb[d] += cstr[d] * rem[d]; + cub[d] += cstr[d] * rem[d]; + } + } + assert (all (clb >= 0)); + assert (all (clb <= cub)); + assert (all (cub <= rub)); + assert (all (! (ipos==0) || clb==rlb)); + assert (all (! (ipos==nprocs_dir-1) || cub==rub)); + bbs.at(c) = ibbox(clb, cub-cstr, cstr); + obs.at(c) = obnd; + ps.at(c) = c; + if (i>0) obs.at(c)[0][0] = false; + if (j>0) obs.at(c)[1][0] = false; + if (k>0) obs.at(c)[2][0] = false; + if (i<nprocs_dir[0]-1) obs.at(c)[0][1] = false; + if (j<nprocs_dir[1]-1) obs.at(c)[1][1] = false; + if (k<nprocs_dir[2]-1) obs.at(c)[2][1] = false; + } + } + } + + for (int n=0; n<(int)ps.size(); ++n) { + assert (ps.at(n) == n); + } + } + + + + static void MakeMultigridBoxes (const cGH* cgh, + ibbox const & base, + ibbox const & bb, + bbvect const & ob, + vector<ibbox>& bbs) + { + bbs.resize (mglevels); + bbs.at(0) = bb; + // boundary offsets + jjvect nboundaryzones, is_internal, is_staggered, shiftout; + const int ierr = GetBoundarySpecification + (2*dim, &nboundaryzones[0][0], &is_internal[0][0], + &is_staggered[0][0], &shiftout[0][0]); + assert (!ierr); + // (distance in grid points between the exterior and the physical boundary) + iivect offset; + for (int d=0; d<dim; ++d) { + for (int f=0; f<2; ++f) { + assert (! is_staggered[d][f]); + offset[d][f] = (+ (is_internal[d][f] ? 0 : nboundaryzones[d][f] - 1) + + shiftout[d][f]); + } + } + vector<ibbox> bases(mglevels); + bases.at(0) = base; + for (int ml=1; ml<mglevels; ++ml) { + // next finer base + ivect const fbaselo = bases.at(ml-1).lower(); + ivect const fbasehi = bases.at(ml-1).upper(); + ivect const fbasestr = bases.at(ml-1).stride(); + // this base + ivect const basestr = fbasestr * mgfact; + ivect const baselo = fbaselo + (xpose(offset)[0] - ivect(mgfact) * xpose(offset)[0]) * fbasestr; + ivect const basehi = fbasehi + (xpose(offset)[1] - ivect(mgfact) * xpose(offset)[1]) * fbasestr; + ivect const baselo1 = baselo; + ivect const basehi1 = baselo1 + (basehi - baselo1) / basestr * basestr; + bases.at(ml) = ibbox(baselo1, basehi1, basestr); + // next finer grid + ivect const flo = bbs.at(ml-1).lower(); + ivect const fhi = bbs.at(ml-1).upper(); + ivect const fstr = bbs.at(ml-1).stride(); + // this grid + ivect const str = fstr * mgfact; + ivect const lo = flo + xpose(ob)[0].ifthen ( (xpose(offset)[0] - ivect(mgfact) * xpose(offset)[0]) * fstr, ivect(0)); + ivect const hi = fhi + xpose(ob)[1].ifthen (- (xpose(offset)[1] - ivect(mgfact) * xpose(offset)[1]) * fstr, ivect(0)); + ivect const lo1 = baselo1 + (lo - baselo1 + str - 1) / str * str; + ivect const hi1 = lo1 + (hi - lo1) / str * str; + bbs.at(ml) = ibbox(lo1, hi1, str); + } + } + + void MakeMultigridBoxes (const cGH* cgh, + vector<ibbox> const & bbs, + vector<bbvect> const & obs, + vector<vector<ibbox> >& bbss) + { + assert (bbs.size() == obs.size()); + ibbox base; + for (int c=0; c<(int)bbs.size(); ++c) { + base = base.expanded_containing(bbs.at(c)); + } + bbss.resize(bbs.size()); + for (int c=0; c<(int)bbs.size(); ++c) { + MakeMultigridBoxes (cgh, base, bbs.at(c), obs.at(c), bbss.at(c)); + } + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Restrict.cc b/Carpet/Carpet/src/Restrict.cc new file mode 100644 index 000000000..c44540dba --- /dev/null +++ b/Carpet/Carpet/src/Restrict.cc @@ -0,0 +1,106 @@ +#include <assert.h> +#include <math.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "ggf.hh" +#include "gh.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Restrict.cc,v 1.27 2004/05/21 18:16:23 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Restrict_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + void Restrict (const cGH* cgh) + { + DECLARE_CCTK_PARAMETERS; + + assert (is_level_mode()); + + if (suppress_restriction) { + Checkpoint ("Restriction suppressed"); + return; + } + + Checkpoint ("Restrict"); + + // Restrict + if (reflevel < reflevels-1) { + for (comm_state<dim> state; !state.done(); state.step()) { + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + + const int tl = 0; + + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + assert (m<(int)arrdata.at(group).size()); + + // use background time here (which may not be modified + // by the user) + const CCTK_REAL time = vtt.at(m)->time (tl, reflevel, mglevel); + + const CCTK_REAL time1 = vtt.at(m)->time (0, reflevel, mglevel); + const CCTK_REAL time2 + = (cgh->cctk_time - cctk_initial_time) / delta_time; + assert (fabs(time1 - time2) / (fabs(time1) + fabs(time2) + fabs(cgh->cctk_delta_time)) < 1e-12); + + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + assert (var<(int)arrdata.at(group).at(m).data.size()); + for (int c=0; c<vhh.at(m)->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->ref_restrict + (state, tl, reflevel, c, mglevel, time); + } + } + } + + } // if group has storage + } // if grouptype == CCTK_GF + } // loop over groups + } // for state + } // if not finest refinement level + + + + // Sync + if (reflevel < reflevels-1) { + for (comm_state<dim> state; !state.done(); state.step()) { + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + if (CCTK_QueryGroupStorageI(cgh, group)) { + + const int tl = 0; + + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + assert (m<(int)arrdata.at(group).size()); + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + assert (var<(int)arrdata.at(group).at(m).data.size()); + for (int c=0; c<vhh.at(m)->components(reflevel); ++c) { + arrdata.at(group).at(m).data.at(var)->sync + (state, tl, reflevel, c, mglevel); + } + } + } + + } // if group has storage + } // if grouptype == CCTK_GF + } // loop over groups + } // for state + } // if not finest refinement level + + } + +} // namespace Carpet + diff --git a/Carpet/Carpet/src/SetupGH.cc b/Carpet/Carpet/src/SetupGH.cc new file mode 100644 index 000000000..d19ab3dc3 --- /dev/null +++ b/Carpet/Carpet/src/SetupGH.cc @@ -0,0 +1,960 @@ +#include <assert.h> +#include <limits.h> +#include <math.h> +#include <stdlib.h> +#include <string.h> + +#include <iostream> +#include <sstream> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "util_ErrorCodes.h" +#include "util_Table.h" + +#include "bbox.hh" +#include "defs.hh" +#include "dist.hh" +#include "ggf.hh" +#include "gh.hh" +#include "vect.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/SetupGH.cc,v 1.85 2004/08/07 20:07:27 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_SetupGH_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + static bool CanTransferVariableType (const cGH * const cgh, const int group) + { + // Find out which types correspond to the default types +#if CCTK_INTEGER_PRECISION_1 +# define CCTK_DEFAULT_INTEGER_TYPE CCTK_VARIABLE_INT1 +#elif CCTK_INTEGER_PRECISION_2 +# define CCTK_DEFAULT_INTEGER_TYPE CCTK_VARIABLE_INT2 +#elif CCTK_INTEGER_PRECISION_4 +# define CCTK_DEFAULT_INTEGER_TYPE CCTK_VARIABLE_INT4 +#elif CCTK_INTEGER_PRECISION_8 +# define CCTK_DEFAULT_INTEGER_TYPE CCTK_VARIABLE_INT8 +#else +# error "Unsupported default integer type" +#endif + +#if CCTK_REAL_PRECISION_4 +# define CCTK_DEFAULT_REAL_TYPE CCTK_VARIABLE_REAL4 +# define CCTK_DEFAULT_COMPLEX_TYPE CCTK_VARIABLE_COMPLEX8 +#elif CCTK_REAL_PRECISION_8 +# define CCTK_DEFAULT_REAL_TYPE CCTK_VARIABLE_REAL8 +# define CCTK_DEFAULT_COMPLEX_TYPE CCTK_VARIABLE_COMPLEX16 +#elif CCTK_REAL_PRECISION_16 +# define CCTK_DEFAULT_REAL_TYPE CCTK_VARIABLE_REAL16 +# define CCTK_DEFAULT_COMPLEX_TYPE CCTK_VARIABLE_COMPLEX32 +#else +# error "Unsupported default real type" +#endif + + if (CCTK_NumVarsInGroupI(group) == 0) return true; + + const int var0 = CCTK_FirstVarIndexI(group); + const int type0 = CCTK_VarTypeI(var0); + int type1; + switch (type0) { + case CCTK_VARIABLE_INT: + type1 = CCTK_DEFAULT_INTEGER_TYPE; + break; + case CCTK_VARIABLE_REAL: + type1 = CCTK_DEFAULT_REAL_TYPE; + break; + case CCTK_VARIABLE_COMPLEX: + type1 = CCTK_DEFAULT_COMPLEX_TYPE; + break; + default: + type1 = type0; + } + switch (type1) { + +#ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: + // This type is supported. + return true; +#endif + +#ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: +#endif +#ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: +#endif +#ifdef CCTK_REAL4 /* CCTK_COMPLEX8 */ + case CCTK_VARIABLE_COMPLEX8: +#endif +#ifdef CCTK_REAL8 /* CCTK_COMPLEX16 */ + case CCTK_VARIABLE_COMPLEX16: +#endif +#ifdef CCTK_REAL16 /* CCTK_COMPLEX32 */ + case CCTK_VARIABLE_COMPLEX32: +#endif + // This type is not supported, but could be. + return false; + + case CCTK_VARIABLE_BYTE: +#ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: +#endif +#ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: +#endif +#ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: +#endif +#ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: +#endif + // This type is not supported, and cannot be. + return false; + + default: + { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Internal error: encountered variable type %d (%s) for group %d (%s)", + type1, CCTK_VarTypeName(type1), + group, CCTK_GroupName(group)); + } + } + + // not reached + return false; + } + + + + static operator_type GetTransportOperator (const cGH * const cgh, + const int group) + { + assert (group>=0 && group<CCTK_NumGroups()); + + int ierr; + + if (CCTK_GroupTypeI(group) != CCTK_GF) { + // Ignore everything but true grid functions + return op_error; + } + + const bool can_transfer = CanTransferVariableType (cgh, group); + + cGroup gp; + ierr = CCTK_GroupData (group, &gp); + assert (!ierr); + + // Get prolongation method + char prolong_string[1000]; + bool have_prolong_string = false; + { + const int prolong_length = Util_TableGetString + (gp.tagstable, sizeof prolong_string, prolong_string, "Prolongation"); + if (prolong_length >= 0) { + have_prolong_string = true; + } else if (prolong_length == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + // do nothing + } else { + assert (0); + } + } + + // Get prolongation parameter name + char prolong_param_string[1000]; + bool have_prolong_param_string = false; + { + const int prolong_param_length = Util_TableGetString + (gp.tagstable, sizeof prolong_param_string, prolong_param_string, + "ProlongationParameter"); + if (prolong_param_length >= 0) { + have_prolong_param_string = true; + } else if (prolong_param_length == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + // do nothing + } else { + assert (0); + } + } + + // Complain if both are given + if (have_prolong_string && have_prolong_param_string) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has both the tags \"Prolongation\" and \"ProlongationParameter\". This is not possible.", + groupname); + free (groupname); + } + + // Map the parameter name + if (have_prolong_param_string) { + char * thorn; + char * name; + ierr = CCTK_DecomposeName (prolong_param_string, þ, &name); + if (ierr < 0) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has the \"ProlongationParameter\" tag \"%s\". This is not a valid parameter name.", + groupname, prolong_param_string); + free (groupname); + } + int type; + char const * const * const value + = (static_cast<char const * const *> + (CCTK_ParameterGet (name, thorn, &type))); + if (! value || ! *value) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has the \"ProlongationParameter\" tag \"%s\". This parameter does not exist.", + groupname, prolong_param_string); + free (groupname); + } + if (type != PARAMETER_KEYWORD && type != PARAMETER_STRING) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has the \"ProlongationParameter\" tag \"%s\". This parameter has the wrong type; it must be either KEYWORD or STRING.", + groupname, prolong_param_string); + free (groupname); + } + free (thorn); + free (name); + assert (strlen(*value) < sizeof prolong_string); + strcpy (prolong_string, *value); + have_prolong_string = true; + } + + // Select a default, if necessary + if (! have_prolong_string) { + if (can_transfer) { + // Use the default + if (gp.numtimelevels == 1) { + // Only one time level: do not prolongate + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has only one time level; therefore it will not be prolongated or restricted.", + groupname); + free (groupname); + return op_none; + } else { + // Several time levels: use the default + return op_Lagrange; + } + } else { + if (gp.grouptype == CCTK_GF) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has the variable type \"%s\" which cannot be prolongated or restricted.", + groupname, CCTK_VarTypeName(gp.vartype)); + free (groupname); + return op_none; + } else { + return op_error; + } + } + } + + // Select the prolongation method + assert (have_prolong_string); + if (CCTK_Equals(prolong_string, "none")) { + return op_none; + } else if (CCTK_Equals(prolong_string, "Lagrange")) { + return op_Lagrange; + } else if (CCTK_Equals(prolong_string, "TVD")) { + return op_TVD; + } else if (CCTK_Equals(prolong_string, "ENO")) { + return op_ENO; + } else { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Group \"%s\" has the unknown prolongation method \"%s\".", + groupname, prolong_string); + free (groupname); + return op_error; + } + return op_error; + } + + + + void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cgh) + { + DECLARE_CCTK_PARAMETERS; + + int ierr; + + assert (cgh->cctk_dim == dim); + + // Not sure what to do with that + assert (convLevel==0); + + dist::pseudoinit(); + + // Initialise current position + mglevel = -1; + reflevel = -1; + map = -1; + component = -1; + + + + Waypoint ("Setting up the grid hierarchy"); + + // Processor information + Output ("Carpet is running on %d processors", CCTK_nProcs(cgh)); + + // Multigrid information + basemglevel = convergence_level; + mglevels = num_convergence_levels; + mgfact = convergence_factor; + maxmglevelfact = ipow(mgfact, mglevels-1); + cgh->cctk_convfac = mgfact; + + // Refinement information + maxreflevels = max_refinement_levels; + reffact = refinement_factor; + maxreflevelfact = ipow(reffact, maxreflevels-1); + + // Map information + carpetGH.maps = maps = num_maps;; + + + + // Allocate space for groups + groupdata.resize(CCTK_NumGroups()); + arrdata.resize(CCTK_NumGroups()); + + vhh.resize(maps); + vdd.resize(maps); + vtt.resize(maps); + + // Loop over maps + for (int m=0; m<maps; ++m) { + + // Get boundary description + jjvect nboundaryzones, is_internal, is_staggered, shiftout; + ierr = GetBoundarySpecification + (2*dim, &nboundaryzones[0][0], &is_internal[0][0], + &is_staggered[0][0], &shiftout[0][0]); + assert (!ierr); + + { + ostringstream buf; + buf << "CoordBase boundary specification for map " << m << ":" << endl + << " nboundaryzones: " << nboundaryzones << endl + << " is_internal : " << is_internal << endl + << " is_staggered : " << is_staggered << endl + << " shiftout : " << shiftout; + Output (buf.str().c_str()); + } + + // Ghost zones + ivect lghosts, ughosts; + if (ghost_size == -1) { + lghosts = ivect(ghost_size_x, ghost_size_y, ghost_size_z); + ughosts = ivect(ghost_size_x, ghost_size_y, ghost_size_z); + } else { + lghosts = ivect(ghost_size, ghost_size, ghost_size); + ughosts = ivect(ghost_size, ghost_size, ghost_size); + } + + // Grid size + rvect physical_min, physical_max; + rvect interior_min, interior_max; + rvect exterior_min, exterior_max; + rvect base_spacing; + + if (domain_from_coordbase) { + + ierr = GetDomainSpecification + (dim, &physical_min[0], &physical_max[0], + &interior_min[0], &interior_max[0], + &exterior_min[0], &exterior_max[0], &base_spacing[0]); + assert (!ierr); + + } else { + // Legacy code + + // specify global number of grid points + ivect npoints; + if (global_nsize == -1) { + npoints = ivect(global_nx, global_ny, global_nz); + } else { + npoints = ivect(global_nsize, global_nsize, global_nsize); + } + ostringstream buf; + buf << "Standard grid specification for map " << m << ":" << endl + << " number of grid points: " << npoints; + Output (buf.str().c_str()); + + // reduce to physical domain + exterior_min = 0.0; + exterior_max = rvect(npoints - 1); + base_spacing = 1.0; + ierr = ConvertFromExteriorBoundary + (dim, &physical_min[0], &physical_max[0], + &interior_min[0], &interior_max[0], + &exterior_min[0], &exterior_max[0], &base_spacing[0]); + assert (!ierr); + + } + + { + ostringstream buf; + buf << "CoordBase domain specification for map " << m << ":" << endl + << " physical extent: " << physical_min << " : " << physical_max << " (" << physical_max - physical_min << ")" << endl + << " interior extent: " << interior_min << " : " << interior_max << " (" << interior_max - interior_min << ")" << endl + << " exterior extent: " << exterior_min << " : " << exterior_max << " (" << exterior_max - exterior_min << ")" << endl + << " base_spacing : " << base_spacing; + Output (buf.str().c_str()); + } + + // Adapt for convergence level + rvect const spacing + = base_spacing * pow (CCTK_REAL(convergence_factor), basemglevel); + + // Calculate global number of grid points + ierr = ConvertFromPhysicalBoundary + (dim, &physical_min[0], &physical_max[0], + &interior_min[0], &interior_max[0], + &exterior_min[0], &exterior_max[0], &spacing[0]); + assert (!ierr); + + { + ostringstream buf; + buf << "Adapted domain specification for map " << m << ":" << endl + << " convergence factor: " << convergence_factor << endl + << " convergence level : " << basemglevel << endl + << " physical extent : " << physical_min << " : " << physical_max << " (" << physical_max - physical_min << ")" << endl + << " interior extent : " << interior_min << " : " << interior_max << " (" << interior_max - interior_min << ")" << endl + << " exterior extent : " << exterior_min << " : " << exterior_max << " (" << exterior_max - exterior_min << ")" << endl + << " spacing : " << spacing; + Output (buf.str().c_str()); + } + + rvect const real_npoints = (exterior_max - exterior_min) / spacing + 1; + + { + ostringstream buf; + buf << "Base grid specification for map " << m << ":" << endl + << " number of grid points : " << real_npoints << endl + << " number of ghost points: " << lghosts; + Output (buf.str().c_str()); + } + + const ivect npoints = floor(real_npoints + 0.5); + if (any(abs(rvect(npoints) - real_npoints) > 0.001)) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The domain size for map %d scaled for convergence level %d with convergence factor %d is not integer", + m, basemglevel, convergence_factor); + } + + // Sanity check + // (if this fails, someone requested an insane amount of memory) + assert (all(npoints <= INT_MAX)); + { + int max = INT_MAX; + for (int d=0; d<dim; ++d) { + assert (npoints[d] <= max); + max /= npoints[d]; + } + } + + + + // Base grid extent + const int stride = maxreflevelfact; + const ivect str(stride); + const ivect lb(0); + const ivect ub((npoints - 1) * str); + const ibbox baseext(lb, ub, str); + + // Allocate grid hierarchy + vhh.at(m) = new gh<dim>(refinement_factor, vertex_centered, + convergence_factor, vertex_centered, baseext); + + // Allocate data hierarchy + vdd.at(m) = new dh<dim>(*vhh.at(m), lghosts, ughosts, + prolongation_order_space, buffer_width); + + // Allocate time hierarchy + vtt.at(m) = new th<dim>(*vhh.at(m), 1.0); + + if (max_refinement_levels > 1) { + const int prolongation_stencil_size + = vdd.at(m)->prolongation_stencil_size(); + const int min_nghosts + = ((prolongation_stencil_size + refinement_factor - 1) + / (refinement_factor-1)); + if (any(min(lghosts,ughosts) < min_nghosts)) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "There are not enough ghost zones for the desired spatial prolongation order on map %d. With Carpet::prolongation_order_space=%d, you need at least %d ghost zones.", + m, prolongation_order_space, min_nghosts); + } + + } + + + + // Set initial refinement structure + + vector<ibbox> bbs; + vector<bbvect> obs; + if (strcmp(base_extents, "") == 0) { + + // default: one grid component covering everything + bbs.push_back (vhh.at(m)->baseextent); + obs.push_back (bbvect(true)); + + } else { + + // explicit grid components + // TODO: invent something for the other convergence levels + istringstream ext_str(base_extents); + try { + ext_str >> bbs; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"base_extents\""); + } + CCTK_VInfo (CCTK_THORNSTRING, "Using %d grid patches", bbs.size()); + cout << "grid-patches-are " << bbs << endl; + if (bbs.size()<=0) { + CCTK_WARN (0, "Cannot evolve with 0 grid patches"); + } + istringstream ob_str (base_outerbounds); + try { + ob_str >> obs; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"base_outerbounds\""); + } + assert (obs.size() == bbs.size()); + + } + + // Distribute onto the processors + // (TODO: this should be done globally for all maps) + vector<int> ps; + SplitRegions (cgh, bbs, obs, ps); + + // Create all multigrid levels + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cgh, bbs, obs, bbss); + + // Only one refinement level + vector<vector<vector<ibbox> > > bbsss(1); + vector<vector<bbvect> > obss(1); + vector<vector<int> > pss(1); + bbsss.at(0) = bbss; + obss.at(0) = obs; + pss.at(0) = ps; + + // Check the regions + CheckRegions (bbsss, obss, pss); + +#if 0 + // Do this later, because CactusBase/IO might not yet be initialised + // Write grid structure to file + OutputGridStructure (cgh, m, bbsss, obss, pss); +#endif + + // Recompose grid hierarchy + vhh.at(m)->recompose (bbsss, obss, pss, false); + + CCTK_INFO ("Grid structure (grid points):"); + const int rl = 0; + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + for (int ml=0; ml<vhh.at(m)->mglevels(rl,c); ++ml) { + const ivect lower = vhh.at(m)->extents.at(rl).at(c).at(ml).lower(); + const ivect upper = vhh.at(m)->extents.at(rl).at(c).at(ml).upper(); + const int convfact = ipow(mgfact, ml); + assert (all(lower % maxreflevelfact == 0)); + assert (all(upper % maxreflevelfact == 0)); + assert (all(((upper - lower) / maxreflevelfact) % convfact == 0)); + cout << " [" << ml << "][" << rl << "][" << m << "][" << c << "]" + << " exterior extent: " << lower / maxreflevelfact + << " : " << upper / maxreflevelfact + << " (" << (upper - lower) / maxreflevelfact / convfact + 1 + << ")" << endl; + } + } + + } // loop over maps + + reflevels = 1; + for (int m=0; m<maps; ++m) { + assert (vhh.at(m)->reflevels() == reflevels); + } + + + + // Allocate space for variables in group (but don't enable storage + // yet) + for (int group=0; group<CCTK_NumGroups(); ++group) { + + cGroup gp; + ierr = CCTK_GroupData (group, &gp); + assert (!ierr); + + switch (gp.grouptype) { + + case CCTK_GF: { + assert (gp.dim == dim); + arrdata.at(group).resize(maps); + for (int m=0; m<maps; ++m) { + arrdata.at(group).at(m).hh = vhh.at(m); + arrdata.at(group).at(m).dd = vdd.at(m); + arrdata.at(group).at(m).tt = vtt.at(m); + } + break; + } + + case CCTK_SCALAR: + case CCTK_ARRAY: { + + arrdata.at(group).resize(1); + + ivect sizes(1), ghostsizes(0); + + switch (gp.grouptype) { + + case CCTK_SCALAR: + // treat scalars as DIM=0, DISTRIB=const arrays + assert (gp.dim==0); + assert (gp.disttype == CCTK_DISTRIB_CONSTANT); + break; + + case CCTK_ARRAY: { + assert (gp.dim>=1 || gp.dim<=dim); + const CCTK_INT * const * const sz = CCTK_GroupSizesI(group); + const CCTK_INT * const * const gsz = CCTK_GroupGhostsizesI(group); + for (int d=0; d<gp.dim; ++d) { + if (sz) sizes[d] = *sz[d]; + if (gsz) ghostsizes[d] = *gsz[d]; + } + break; + } + + default: + assert (0); + } + + ivect alghosts(0), aughosts(0); + for (int d=0; d<gp.dim; ++d) { + alghosts[d] = ghostsizes[d]; + aughosts[d] = ghostsizes[d]; + } + + + + // Adapt array sizes for convergence level + jvect convpowers (0); + jvect convoffsets (0); + + if (gp.tagstable >= 0) { + int status; + + status = Util_TableGetIntArray + (gp.tagstable, gp.dim, &convpowers[0], "convergence_power"); + if (status == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + // keep default: independent of convergence level + } else if (status == 1) { + // a scalar was given + convpowers = convpowers[0]; + } else if (status == gp.dim) { + // do nothing + } else { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The key \"convergence_power\" in the tags table of group \"%s\" is wrong", + groupname); + free (groupname); + } + assert (all (convpowers >= 0)); + + status = Util_TableGetIntArray + (gp.tagstable, gp.dim, &convoffsets[0], "convergence_offset"); + if (status == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + // keep default: offset is 0 + } else if (status == 1) { + // a scalar was given + convoffsets = convoffsets[0]; + } else if (status == gp.dim) { + // do nothing + } else { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The key \"convergence_offset\" in the tags table of group \"%s\" is wrong", + groupname); + free (groupname); + } + + } // if there is a group tags table + + rvect real_sizes + = ((sizes - convoffsets) + / pow(rvect(convergence_factor), convpowers * basemglevel) + + convoffsets); + for (int d=gp.dim; d<dim; ++d) { + real_sizes[d] = sizes[d]; + } + sizes = floor(real_sizes + 0.5); + if (any(sizes < 0)) { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The shape of group \"%s\" scaled for convergence level %d with convergence factor %d is negative", + groupname, basemglevel, convergence_factor); + free (groupname); + } + if (any(abs(rvect(sizes) - real_sizes) > 0.001)) { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The shape of group \"%s\" scaled for convergence level %d with convergence factor %d is not integer", + groupname, basemglevel, convergence_factor); + free (groupname); + } + + + + assert (gp.disttype==CCTK_DISTRIB_CONSTANT + || gp.disttype==CCTK_DISTRIB_DEFAULT); + + if (gp.disttype==CCTK_DISTRIB_CONSTANT) { + if (! all (ghostsizes == 0)) { + char * const groupname = CCTK_GroupName(group); + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The group \"%s\" has DISTRIB=constant, but its ghostsize is not 0", + groupname); + free (groupname); + } + assert (all (ghostsizes == 0)); + const int d = gp.dim==0 ? 0 : gp.dim-1; + sizes[d] = (sizes[d] - 2*ghostsizes[d]) * CCTK_nProcs(cgh) + 2*ghostsizes[d]; + assert (sizes[d] >= 0); + } + + + + const ivect alb(0); + const ivect aub(sizes-1); + const ivect astr(1); + const ibbox abaseext(alb, aub, astr); + + assert (all(convpowers == convpowers[0])); + const int amgfact1 = ipow(mgfact, convpowers[0]); + + arrdata.at(group).at(0).hh + = new gh<dim>(refinement_factor, vertex_centered, + amgfact1, vertex_centered, + abaseext); + + arrdata.at(group).at(0).dd + = new dh<dim>(*arrdata.at(group).at(0).hh, alghosts, aughosts, 0, 0); + + arrdata.at(group).at(0).tt + = new th<dim>(*arrdata.at(group).at(0).hh, 1.0); + + + + // Set refinement structure for scalars and arrays + vector<ibbox> bbs; + vector<bbvect> obs; + bbs.push_back (abaseext); + obs.push_back (bbvect(true)); + + // Split it into components, one for each processor + vector<int> ps; + if (gp.disttype==CCTK_DISTRIB_CONSTANT) { + SplitRegions_AlongDir (cgh, bbs, obs, ps, gp.dim==0 ? 0 : gp.dim-1); + } else { + SplitRegions_Automatic (cgh, bbs, obs, ps); + } + + // Create all multigrid levels + vector<vector<ibbox> > bbss (bbs.size()); + ivect amgfact; + iivect aoffset; + for (int d=0; d<dim; ++d) { + amgfact[d] = ipow(mgfact, convpowers[d]); + aoffset[d][0] = 0; + aoffset[d][1] = convoffsets[d]; + } + for (size_t c=0; c<bbs.size(); ++c) { + bbss.at(c).resize (mglevels); + bbss.at(c).at(0) = bbs.at(c); + for (int ml=1; ml<mglevels; ++ml) { + // this base + ivect const baselo = ivect(0); + ivect const baselo1 = baselo; + // next finer grid + ivect const flo = bbss.at(c).at(ml-1).lower(); + ivect const fhi = bbss.at(c).at(ml-1).upper(); + ivect const fstr = bbss.at(c).at(ml-1).stride(); + // this grid + ivect const str = fstr * amgfact; + ivect const lo = flo + xpose(obs.at(c))[0].ifthen ( (xpose(aoffset)[0] - amgfact * xpose(aoffset)[0]) * fstr, ivect(0)); + ivect const hi = fhi + xpose(obs.at(c))[1].ifthen ( - (xpose(aoffset)[1] - amgfact * xpose(aoffset)[1]) * fstr, ivect(0)); + ivect const lo1 = baselo1 + (lo - baselo1 + str - 1) / str * str; + ivect const hi1 = lo1 + (hi - lo1) / str * str; + bbss.at(c).at(ml) = ibbox(lo1, hi1, str); + } + } + + // Only one refinement level + vector<vector<vector<ibbox> > > bbsss(1); + vector<vector<bbvect> > obss(1); + vector<vector<int> > pss(1); + bbsss.at(0) = bbss; + obss.at(0) = obs; + pss.at(0) = ps; + + // Recompose for this map + char * const groupname = CCTK_GroupName (group); + assert (groupname); + Checkpoint ("Recomposing grid array group \"%s\"", groupname); + free (groupname); + arrdata.at(group).at(0).hh->recompose (bbsss, obss, pss, false); + + break; + } // case of scalar or array + + default: + assert (0); + } // switch on group type + + // Initialise group information + groupdata.at(group).info.dim = gp.dim; + groupdata.at(group).info.gsh = new int [dim]; + groupdata.at(group).info.lsh = new int [dim]; + groupdata.at(group).info.lbnd = new int [dim]; + groupdata.at(group).info.ubnd = new int [dim]; + groupdata.at(group).info.bbox = new int [2*dim]; + groupdata.at(group).info.nghostzones = new int [dim]; + + groupdata.at(group).transport_operator = GetTransportOperator (cgh, group); + + // Initialise group variables + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + + arrdata.at(group).at(m).data.resize(CCTK_NumVarsInGroupI(group)); + for (int var=0; var<(int)arrdata.at(group).at(m).data.size(); ++var) { + arrdata.at(group).at(m).data.at(var) = 0; + } + + } + + } // for group + + + + // Allocate level times + leveltimes.resize (mglevels); + for (int ml=0; ml<mglevels; ++ml) { + leveltimes.at(ml).resize (maxreflevels); + } + origin_space.resize (mglevels); + + // Enable prolongating + do_prolongate = true; + + + + // Finish initialisation + mglevelfact = 1; + cgh->cctk_time = 0; + cgh->cctk_delta_time = 1.0; + for (int d=0; d<dim; ++d) { + cgh->cctk_origin_space[d] = 0.0; + cgh->cctk_delta_space[d] = 1.0; + } + + mglevel = 0; + reflevel = 0; + map = 0; + component = 0; + + leave_local_mode (cgh); + leave_singlemap_mode (cgh); + leave_level_mode (cgh); + leave_global_mode (cgh); + + + + // Some statistics + if (verbose || veryverbose) { + + int num_gf_groups = 0; + int num_gf_vars = 0; + vector<int> num_array_groups(dim+1), num_array_vars(dim+1); + for (int d=0; d<=dim; ++d) { + num_array_groups.at(d) = 0; + num_array_vars.at(d) = 0; + } + + for (int group=0; group<CCTK_NumGroups(); ++group) { + + cGroup data; + ierr = CCTK_GroupData (group, &data); + assert (!ierr); + + switch (data.grouptype) { + case CCTK_GF: + num_gf_groups += 1; + num_gf_vars += data.numvars * data.numtimelevels; + break; + case CCTK_SCALAR: + case CCTK_ARRAY: + assert (data.dim<=dim); + num_array_groups.at(data.dim) += 1; + num_array_vars.at(data.dim) += data.numvars * data.numtimelevels; + break; + default: + assert (0); + } + } + CCTK_INFO ("Group and variable statistics:"); + CCTK_VInfo (CCTK_THORNSTRING, + " There are %d grid functions in %d groups", + num_gf_vars, num_gf_groups); + CCTK_VInfo (CCTK_THORNSTRING, + " There are %d grid scalars in %d groups", + num_array_vars.at(0), num_array_groups.at(0)); + for (int d=1; d<=3; ++d) { + CCTK_VInfo (CCTK_THORNSTRING, + " There are %d %d-dimensional grid arrays in %d groups", + num_array_vars.at(d), d, num_array_groups.at(d)); + } + CCTK_VInfo (CCTK_THORNSTRING, + " (The number of variables counts all time levels)"); + } + + + + // Enable storage for all groups if desired + if (enable_all_storage) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + for (int group=0; group<CCTK_NumGroups(); ++group) { + char * const groupname = CCTK_GroupName(group); + EnableGroupStorage (cgh, groupname); + free (groupname); + } + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } + + Waypoint ("Done with setting up the grid hierarchy"); + + return &carpetGH; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Shutdown.cc b/Carpet/Carpet/src/Shutdown.cc new file mode 100644 index 000000000..b4d79ac2d --- /dev/null +++ b/Carpet/Carpet/src/Shutdown.cc @@ -0,0 +1,74 @@ +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "dist.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Shutdown.cc,v 1.13 2004/01/25 14:57:27 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Shutdown_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + int Shutdown (tFleshConfig* fc) + { + DECLARE_CCTK_PARAMETERS; + + Waypoint ("Starting shutdown"); + + const int convlev = 0; + cGH* cgh = fc->GH[convlev]; + + for (int rl=reflevels-1; rl>=0; --rl) { + BEGIN_REVERSE_MGLEVEL_LOOP(cgh) { + enter_level_mode (cgh, rl); + do_global_mode = reflevel==0; + do_meta_mode = do_global_mode && mglevel==mglevels-1; + + Checkpoint ("Shutdown at iteration %d time %g%s%s", + cgh->cctk_iteration, (double)cgh->cctk_time, + (do_global_mode ? " (global)" : ""), + (do_meta_mode ? " (meta)" : "")); + + // Terminate + Checkpoint ("Scheduling TERMINATE"); + CCTK_ScheduleTraverse ("CCTK_TERMINATE", cgh, CallFunction); + + leave_level_mode (cgh); + } END_REVERSE_MGLEVEL_LOOP; + } // for rl + + BEGIN_REVERSE_MGLEVEL_LOOP(cgh) { + do_global_mode = true; + do_meta_mode = mglevel==mglevels-1; + + // Shutdown + Checkpoint ("Scheduling SHUTDOWN"); + CCTK_ScheduleTraverse ("CCTK_SHUTDOWN", cgh, CallFunction); + + } END_REVERSE_MGLEVEL_LOOP; + + CCTK_PRINTSEPARATOR; + printf ("Done.\n"); + + // earlier checkpoint before finalising MPI + Waypoint ("Done with shutdown"); + + dist::finalize(); + + return 0; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/Storage.cc b/Carpet/Carpet/src/Storage.cc new file mode 100644 index 000000000..16847f077 --- /dev/null +++ b/Carpet/Carpet/src/Storage.cc @@ -0,0 +1,251 @@ +#include <assert.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "dh.hh" +#include "gf.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/Storage.cc,v 1.36 2004/06/02 09:04:43 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_Storage_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + int EnableGroupStorage (const cGH* cgh, const char* groupname) + { + DECLARE_CCTK_PARAMETERS; + + Checkpoint ("EnableGroupStorage \"%s\"", groupname); + + // TODO: Enabling storage for one refinement level has to enable + // it for all other refinement levels as well. Disabling must + // wait until all refinement levels have been disabled. + + const int group = CCTK_GroupIndex(groupname); + assert (group>=0 && group<CCTK_NumGroups()); + + if (CCTK_NumVarsInGroupI(group)==0) return 0; + + const int grouptype = CCTK_GroupTypeI(group); + + // No storage change in local mode + if (grouptype == CCTK_GF) { + assert ((map == -1 || maps == 1) + && (component == -1 + || vhh.at(0)->local_components(reflevel) == 1)); + } + + if (CCTK_QueryGroupStorageI(cgh, group)) { + // storage was enabled previously + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + return num_tl; + } + + // There is a difference between the Cactus time levels and the + // Carpet time levels. If there are n time levels, then the + // Cactus time levels are numbered 0 ... n-1, with the current + // time level being 0. In Carpet, the time levels are numbered + // -(n-1) ... 0, where the current time level is also 0. + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + const int tmin = 1 - num_tl; + const int tmax = 0; + + if (grouptype == CCTK_GF) { + if (max_refinement_levels > 1) { + if (groupdata.at(group).transport_operator != op_none) { + if (num_tl <= prolongation_order_time) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "There are not enough time levels for the desired temporal prolongation order in the grid function group \"%s\". With Carpet::prolongation_order_time=%d, you need at least %d time levels.", + CCTK_GroupName(group), + prolongation_order_time, prolongation_order_time+1); + } + } + } + } + + cGroup gp; + const int ierr = CCTK_GroupData (group, &gp); + assert (!ierr); + const int vectorlength = gp.vectorgroup ? gp.vectorlength : 1; + + assert (arrdata.at(group).at(0).data.size()==0 + || arrdata.at(group).at(0).data.at(0) == 0); + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + const int vectorindex = gp.vectorgroup ? var % vectorlength : 0; + ggf<dim>* vectorleader + = (gp.vectorgroup && vectorindex>0 + ? arrdata.at(group).at(m).data.at(var - vectorindex) + : NULL); + const int n = n0 + var; + switch (CCTK_VarTypeI(n)) { +#define TYPECASE(N,T) \ + case N: \ + arrdata.at(group).at(m).data.at(var) = new gf<T,dim> \ + (n, groupdata.at(group).transport_operator, \ + *arrdata.at(group).at(m).tt, *arrdata.at(group).at(m).dd, \ + tmin, tmax, prolongation_order_time, \ + vectorlength, vectorindex, (gf<T,dim>*)vectorleader); \ + break; +#include "typecase" +#undef TYPECASE + default: + UnsupportedVarType(n); + } // switch + + if (grouptype != CCTK_GF) { + for (int tl=0; tl<num_tl; ++tl) { + assert (m == 0); + int const c = CCTK_MyProc(cgh); + cgh->data[n][tl] = ((*arrdata.at(group).at(m).data.at(var)) + (-tl, 0, c, 0)->storage()); + } + } + + } // for + } // for + +// PoisonGroup (cgh, group, alltimes); + + // storage was not enabled previously + return 0; + } + + + + int DisableGroupStorage (const cGH* cgh, const char* groupname) + { + Checkpoint ("DisableGroupStorage \"%s\"", groupname); + + const int group = CCTK_GroupIndex(groupname); + assert (group>=0 && group<CCTK_NumGroups()); + + // No storage change in local mode + assert (! (component!=-1 && CCTK_GroupTypeI(group)==CCTK_GF)); + + if (! CCTK_QueryGroupStorageI(cgh, group)) { + // storage was disabled previously + return 0; + } + + // TODO + CCTK_WARN (2, "Cannot disable storage -- storage management is not yet consistent for FMR"); + return 1; + + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n0); + assert (num_tl>0); + + for (int m=0; m<(int)arrdata.at(group).size(); ++m) { + for (int var=0; var<CCTK_NumVarsInGroupI(group); ++var) { + const int n = n0 + var; + switch (CCTK_VarTypeI(n)) { +#define TYPECASE(N,T) \ + case N: \ + assert (arrdata.at(group).at(m).data.at(var)); \ + delete (gf<T,dim>*)arrdata.at(group).at(m).data.at(var); \ + arrdata.at(group).at(m).data.at(var) = NULL; \ + break; +#include "typecase" +#undef TYPECASE + default: + UnsupportedVarType(n); + } // switch + arrdata.at(group).at(m).data.at(var) = NULL; + + if (CCTK_GroupTypeI(group) != CCTK_GF) { + for (int tl=0; tl<num_tl; ++tl) { + cgh->data[n][tl] = NULL; + } + } + + } // for + } // for + + // storage was enabled previously + return 1; + } + + + + int QueryGroupStorageB (const cGH* cgh, int group, const char* groupname) + { + if (groupname) { + group = CCTK_GroupIndex(groupname); + } + assert (group>=0 && group<CCTK_NumGroups()); + + if (CCTK_NumVarsInGroupI(group)==0) return 0; + + const int n = CCTK_FirstVarIndexI(group); + assert (n>=0 && n<CCTK_NumVars()); + const int var = 0; + + return arrdata.at(group).at(0).data.at(var) != NULL; + } + + + + const int* ArrayGroupSizeB (const cGH* cgh, int dir, int group, + const char* groupname) + { + static const int zero = 0; + static const int error = 0; + + if (groupname) { + group = CCTK_GroupIndex(groupname); + } + assert (group>=0 && group<CCTK_NumGroups()); + + if (mglevel == -1) { + return &error; // meta mode + } + + const int gptype = CCTK_GroupTypeI (group); + if (gptype == CCTK_GF && map == -1) { + return &error; // global or level mode for a GF + } + + const int gpdim = groupdata.at(group).info.dim; + assert (dir>=0 && dir<gpdim); + + if (CCTK_QueryGroupStorageI(cgh, group)) { + + return &groupdata.at(group).info.lsh[dir]; + + } else { + + // no storage + return &zero; + + } + } + + + + int GroupDynamicData (const cGH* cgh, int group, cGroupDynamicData* data) + { + assert (group>=0 && group<CCTK_NumGroups()); + *data = groupdata.at(group).info; + return 0; + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/carpet.hh b/Carpet/Carpet/src/carpet.hh new file mode 100644 index 000000000..00f70396b --- /dev/null +++ b/Carpet/Carpet/src/carpet.hh @@ -0,0 +1,70 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet.hh,v 1.32 2004/08/19 15:38:20 schnetter Exp $ + +#ifndef CARPET_HH +#define CARPET_HH + +#include <vector> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Functions.h" + +#include "gh.hh" + +#include "carpet_public.hh" + + + +namespace Carpet { + + using namespace std; + + // Scheduled functions + extern "C" { + void CarpetParamCheck (CCTK_ARGUMENTS); + void CarpetStartup (void); + } + + // Registered functions + void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cgh); + + int Initialise (tFleshConfig* config); + int Evolve (tFleshConfig* config); + int Shutdown (tFleshConfig* config); + int CallFunction (void* function, cFunctionData* attribute, void* data); + + // Other functions + bool Regrid (const cGH* cgh, const bool force_recompose, const bool do_init); + void CycleTimeLevels (const cGH* cgh); + void FlipTimeLevels (const cGH* cgh); + void Restrict (const cGH* cgh); + + // Sanity checks + enum checktimes { currenttime, + currenttimebutnotifonly, + previoustime, + allbutlasttime, + allbutcurrenttime, + alltimes }; + + int mintl (checktimes where, int num_tl); + int maxtl (checktimes where, int num_tl); + + void Poison (const cGH* cgh, checktimes where); + void PoisonGroup (const cGH* cgh, int group, checktimes where); + void PoisonCheck (const cGH* cgh, checktimes where); + + void CalculateChecksums (const cGH* cgh, checktimes where); + void CheckChecksums (const cGH* cgh, checktimes where); + + // Debugging output + void Output (const char* fmt, ...); + void Waypoint (const char* fmt, ...); + void Checkpoint (const char* fmt, ...); + + // Error output + void UnsupportedVarType (int vindex); + +} // namespace Carpet + +#endif // !defined(CARPET_HH) diff --git a/Carpet/Carpet/src/carpet_public.h b/Carpet/Carpet/src/carpet_public.h new file mode 100644 index 000000000..87c9130bc --- /dev/null +++ b/Carpet/Carpet/src/carpet_public.h @@ -0,0 +1,113 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.h,v 1.15 2004/06/16 16:36:02 schnetter Exp $ */ + +#ifndef CARPET_PUBLIC_H +#define CARPET_PUBLIC_H + +#include <mpi.h> + +#include "cctk.h" + + + +/* Tell thorns that the Carpet routines exist */ +#define HAVE_CARPET + + + +#ifdef __cplusplus +namespace Carpet { + extern "C" { +#endif + + /* Carpet's GH extension */ + struct CarpetGH { + +#if 0 + /* Maximum number of refinement levels */ + int maxreflevels; + + /* Refinement levels */ + int reflevels; + + /* Refinement factor */ + int reffact; + + /* Refinement factor on finest possible grid */ + int maxreflevelfact; + + /* Base multigrid level */ + int basemglevel; + + /* Multigrid levels */ + int mglevels; + + /* Multigrid factor */ + int mgfact; + + /* Multigrid factor on coarsest grid */ + int maxmglevelfact; +#endif + + /* Maps */ + int maps; + + + +#if 0 + /* Current position on the grid hierarchy */ + int reflevel; + int mglevel; +#endif + int map; +#if 0 + int component; + + /* Current refinement factor */ + int reflevelfact; + + /* Current multigrid factor */ + int mglevelfact; +#endif + + }; + + struct CarpetGH const * GetCarpetGH (const cGH * const cgh); + + + + /* Prolongation management */ + CCTK_INT CarpetEnableProlongating (const CCTK_INT flag); + + + + /* Call a schedule group */ + int CallScheduleGroup (cGH * const cgh, const char * const group); + + /* Call a local function */ + int CallLocalFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)); + int CallSinglemapFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)); + int CallLevelFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)); + int CallGlobalFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)); + int CallMetaFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)); + + + + /* Helper functions */ + MPI_Comm CarpetMPIComm (void); + MPI_Datatype CarpetMPIDatatype (int vartype); + MPI_Datatype CarpetSimpleMPIDatatype (int vartype); + int CarpetSimpleMPIDatatypeLength (int vartype); + + + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace Carpet */ +#endif + +#endif /* !defined(CARPET_PUBLIC_H) */ diff --git a/Carpet/Carpet/src/carpet_public.hh b/Carpet/Carpet/src/carpet_public.hh new file mode 100644 index 000000000..fbe9d8c0f --- /dev/null +++ b/Carpet/Carpet/src/carpet_public.hh @@ -0,0 +1,15 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/carpet_public.hh,v 1.40 2004/01/25 14:57:27 schnetter Exp $ + +#ifndef CARPET_PUBLIC_HH +#define CARPET_PUBLIC_HH + +// Stuff with C linkage +#include "carpet_public.h" + +// Other declarations +#include "defines.hh" +#include "functions.hh" +#include "modes.hh" +#include "variables.hh" + +#endif // !defined(CARPET_PUBLIC_HH) diff --git a/Carpet/Carpet/src/defines.hh b/Carpet/Carpet/src/defines.hh new file mode 100644 index 000000000..006d925f3 --- /dev/null +++ b/Carpet/Carpet/src/defines.hh @@ -0,0 +1,33 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/defines.hh,v 1.2 2004/03/02 10:29:54 schnetter Exp $ + +#ifndef DEFINES_HH +#define DEFINES_HH + +#include "cctk.h" + +#include <bbox.hh> +#include <bboxset.hh> +#include <vect.hh> + + + +namespace Carpet { + + const int dim = 3; + + typedef vect<bool,dim> bvect; + typedef vect<int,dim> ivect; + typedef vect<CCTK_INT,dim> jvect; + typedef vect<CCTK_REAL,dim> rvect; + typedef bbox<int,dim> ibbox; + typedef bbox<CCTK_INT,dim> jbbox; + typedef bbox<CCTK_REAL,dim> rbbox; + typedef bboxset<int,dim> ibset; + + typedef vect<vect<bool,2>,dim> bbvect; + typedef vect<vect<int,2>,dim> iivect; + typedef vect<vect<CCTK_INT,2>,dim> jjvect; + +} // namespace Carpet + +#endif // !defined(DEFINES_HH) diff --git a/Carpet/Carpet/src/functions.hh b/Carpet/Carpet/src/functions.hh new file mode 100644 index 000000000..56170dbed --- /dev/null +++ b/Carpet/Carpet/src/functions.hh @@ -0,0 +1,73 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/functions.hh,v 1.4 2004/04/18 13:29:43 schnetter Exp $ + +#ifndef FUNCTIONS_HH +#define FUNCTIONS_HH + +#include <vector> + +#include "cctk.h" +#include "cctk_Schedule.h" + +#include "bbox.hh" +#include "gh.hh" +#include "vect.hh" + +#include "defines.hh" + + + +namespace Carpet { + + using namespace std; + + int SyncGroup (const cGH* cgh, const char* groupname); + int EnableGroupStorage (const cGH* cgh, const char* groupname); + int DisableGroupStorage (const cGH* cgh, const char* groupname); + int EnableGroupComm (const cGH* cgh, const char* groupname); + int DisableGroupComm (const cGH* cgh, const char* groupname); + int Barrier (const cGH* cgh); + int Exit (cGH* cgh, int retval); + int Abort (cGH* cgh, int retval); + int MyProc (const cGH* cgh); + int nProcs (const cGH* cgh); + const int* ArrayGroupSizeB (const cGH* cgh, int dir, int group, + const char* groupname); + int QueryGroupStorageB (const cGH* cgh, int group, const char* groupname); + int GroupDynamicData (const cGH* cgh, int group, cGroupDynamicData* data); + + + + // Helpers for recomposing the grid hierarchy + void CheckRegions (const gh<dim>::rexts & bbsss, + const gh<dim>::rbnds & obss, + const gh<dim>::rprocs& pss); + + void OutputGrids (const cGH* cgh, const int m, const gh<dim>& hh); + + void OutputGridStructure (const cGH *cgh, + const int m, + const gh<dim>::rexts & bbsss, + const gh<dim>::rbnds & obss, + const gh<dim>::rprocs& pss); + + + + // Functions for recomposing the grid hierarchy + void SplitRegions (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps); + void SplitRegions_AlongZ (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps); + void SplitRegions_AlongDir (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps, + const int dir); + void SplitRegions_Automatic (const cGH* cgh, vector<ibbox>& bbs, + vector<bbvect>& obs, vector<int>& ps); + + void MakeMultigridBoxes (const cGH* cgh, + vector<ibbox> const & bbs, + vector<bbvect> const & obs, + vector<vector<ibbox> > & bbss); + +} // namespace Carpet + +#endif // !defined(FUNCTIONS_HH) diff --git a/Carpet/Carpet/src/helpers.cc b/Carpet/Carpet/src/helpers.cc new file mode 100644 index 000000000..70e892b4d --- /dev/null +++ b/Carpet/Carpet/src/helpers.cc @@ -0,0 +1,337 @@ +#include <assert.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <mpi.h> + +#include "cctk.h" +#include "cctk_FortranString.h" +#include "cctk_Parameters.h" + +#include "defs.hh" +#include "dist.hh" +#include "ggf.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/helpers.cc,v 1.49 2004/07/08 12:43:34 tradke Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_helpers_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + // Get Carpet's GH extension + CarpetGH const * GetCarpetGH (const cGH * const cgh) + { + assert (cgh); + return &carpetGH; + } + + + + // Enable or disable prolongating + CCTK_INT CarpetEnableProlongating (const CCTK_INT flag) + { + assert (flag==0 || flag==1); + do_prolongate = flag; + if (do_prolongate) { + Checkpoint ("Prolongating enabled"); + } else { + Checkpoint ("Prolongating disabled"); + } + return 0; + } + + + + // Communication + + int Barrier (const cGH* cgh) + { + void *dummy = &dummy; + dummy = &cgh; + + MPI_Barrier (dist::comm); + return 0; + } + + + + int Exit (cGH* cgh, int retval) + { + CCTK_Barrier (cgh); + dist::finalize(); + exit (retval); + return -999; + } + + int Abort (cGH* cgh, int retval) + { + void *dummy = &dummy; + dummy = &cgh; + + MPI_Comm comm = dist::comm; + if (comm == MPI_COMM_NULL) + { + comm = MPI_COMM_WORLD; + } + MPI_Abort (comm, retval); + abort (); + return -999; + } + + + + int MyProc (const cGH* cgh) + { + // if there is no cgh yet, assume nothing has been initialised + // yet, and don't use dist::comm + int rank; + MPI_Comm_rank (cgh ? dist::comm : MPI_COMM_WORLD, &rank); + return rank; + } + + int nProcs (const cGH* cgh) + { + // if there is no cgh yet, assume nothing has been initialised + // yet, and don't use dist::comm + int size; + MPI_Comm_size (cgh ? dist::comm : MPI_COMM_WORLD, &size); + return size; + } + + + + MPI_Comm CarpetMPIComm () + { + return dist::comm; + } + + + + // Datatypes + + MPI_Datatype CarpetMPIDatatype (const int vartype) + { + switch (vartype) { +#define TYPECASE(N,T) \ + case N: { \ + T dummy; \ + return dist::datatype(dummy); \ + } +#include "typecase" +#undef TYPECASE + default: + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Carpet does not support the variable type %d.", vartype); + } + // notreached + return MPI_CHAR; + } + + MPI_Datatype CarpetSimpleMPIDatatype (const int vartype) + { + switch (vartype) { +#ifdef CARPET_COMPLEX + case CCTK_VARIABLE_COMPLEX: + return CarpetMPIDatatype (CCTK_VARIABLE_REAL); +#endif +#ifdef CARPET_COMPLEX8 +# ifdef CCTK_REAL4 + case CCTK_VARIABLE_COMPLEX8: + return CarpetMPIDatatype (CCTK_VARIABLE_REAL4); +# endif +#endif +#ifdef CARPET_COMPLEX16 +# ifdef CCTK_REAL8 + case CCTK_VARIABLE_COMPLEX16: + return CarpetMPIDatatype (CCTK_VARIABLE_REAL8); +# endif +#endif +#ifdef CARPET_COMPLEX32 +# ifdef CCTK_REAL16 + case CCTK_VARIABLE_COMPLEX32: + return CarpetMPIDatatype (CCTK_VARIABLE_REAL16); +# endif +#endif + default: + return CarpetMPIDatatype (vartype); + } + // notreached + return MPI_CHAR; + } + + int CarpetSimpleMPIDatatypeLength (const int vartype) + { + switch (vartype) { +#ifdef CARPET_COMPLEX + case CCTK_VARIABLE_COMPLEX: +#endif +#ifdef CARPET_COMPLEX8 +# ifdef CCTK_REAL4 + case CCTK_VARIABLE_COMPLEX8: +# endif +#endif +#ifdef CARPET_COMPLEX16 +# ifdef CCTK_REAL8 + case CCTK_VARIABLE_COMPLEX16: +# endif +#endif +#ifdef CARPET_COMPLEX32 +# ifdef CCTK_REAL16 + case CCTK_VARIABLE_COMPLEX32: +# endif +#endif + return 2; + default: + return 1; + } + // notreached + return 0; + } + + + + // Timelevels + + int mintl (const checktimes where, const int num_tl) + { + assert (num_tl>0); + switch (where) { + case currenttime: + return 0; + case currenttimebutnotifonly: + // don't include current time if there is only one time level + return num_tl>1 ? 0 : 1; + case previoustime: + return 1; + case allbutlasttime: + // do include current time if there is only one time level + return 0; + case allbutcurrenttime: + return 1; + case alltimes: + return 0; + default: + assert (0); + } + return -999; + } + + int maxtl (const checktimes where, const int num_tl) + { + assert (num_tl>0); + switch (where) { + case currenttime: + return 0; + case currenttimebutnotifonly: + return 0; + case previoustime: + return num_tl>1 ? 1 : 0; + case allbutlasttime: + return num_tl-2; + case allbutcurrenttime: + return num_tl-1; + case alltimes: + return num_tl-1; + default: + assert (0); + } + return -999; + } + + + + // Diagnostic output + + static void prepend_id (char* const msg, size_t const msglen) + { + if (mglevel!=-1) { + snprintf (msg+strlen(msg), msglen-strlen(msg), "[%d]", mglevel); + if (reflevel!=-1) { + snprintf (msg+strlen(msg), msglen-strlen(msg), "[%d]", reflevel); + if (map!=-1) { + snprintf (msg+strlen(msg), msglen-strlen(msg), "[%d]", map); + if (component!=-1) { + snprintf (msg+strlen(msg), msglen-strlen(msg), "[%d]", component); + } + } + } + snprintf (msg+strlen(msg), msglen-strlen(msg), " "); + } + } + + void Output (const char* fmt, ...) + { + DECLARE_CCTK_PARAMETERS; + va_list args; + char msg[1000]; + snprintf (msg, sizeof msg, "%s", ""); + prepend_id (msg + strlen(msg), sizeof msg - strlen(msg)); + va_start (args, fmt); + vsnprintf (msg + strlen(msg), sizeof msg - strlen(msg), fmt, args); + va_end (args); + CCTK_INFO (msg); + if (barriers) { + MPI_Barrier (dist::comm); + } + } + + void Waypoint (const char* fmt, ...) + { + DECLARE_CCTK_PARAMETERS; + if (verbose || veryverbose) { + va_list args; + char msg[1000]; + snprintf (msg, sizeof msg, "%s", ""); + prepend_id (msg + strlen(msg), sizeof msg - strlen(msg)); + va_start (args, fmt); + vsnprintf (msg + strlen(msg), sizeof msg - strlen(msg), fmt, args); + va_end (args); + CCTK_INFO (msg); + } + if (barriers) { + MPI_Barrier (dist::comm); + } + } + + void Checkpoint (const char* fmt, ...) + { + DECLARE_CCTK_PARAMETERS; + if (veryverbose) { + va_list args; + char msg[1000]; + snprintf (msg, sizeof msg, "%s", ""); + prepend_id (msg + strlen(msg), sizeof msg - strlen(msg)); + va_start (args, fmt); + vsnprintf (msg + strlen(msg), sizeof msg - strlen(msg), fmt, args); + va_end (args); + CCTK_INFO (msg); + } + if (barriers) { + MPI_Barrier (dist::comm); + } + } + + + + void UnsupportedVarType (const int vindex) + { + assert (vindex>=0 && vindex<CCTK_NumVars()); + CCTK_VWarn + (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Carpet does not support the type of the variable \"%s\".\n" + "Either enable support for this type, " + "or change the type of this variable.", CCTK_FullName(vindex)); + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/make.code.defn b/Carpet/Carpet/src/make.code.defn new file mode 100644 index 000000000..548da3678 --- /dev/null +++ b/Carpet/Carpet/src/make.code.defn @@ -0,0 +1,25 @@ +# Main make.code.defn file for thorn Carpet -*-Makefile-*- +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/make.code.defn,v 1.6 2004/01/25 14:57:28 schnetter Exp $ + +# Source files in this directory +SRCS = CallFunction.cc \ + CarpetParamCheck.cc \ + CarpetStartup.cc \ + Checksum.cc \ + Comm.cc \ + Cycle.cc \ + Evolve.cc \ + Initialise.cc \ + Poison.cc \ + Recompose.cc \ + Restrict.cc \ + SetupGH.cc \ + Shutdown.cc \ + Storage.cc \ + helpers.cc \ + modes.cc \ + variables.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/Carpet/src/modes.cc b/Carpet/Carpet/src/modes.cc new file mode 100644 index 000000000..e831b2dd8 --- /dev/null +++ b/Carpet/Carpet/src/modes.cc @@ -0,0 +1,976 @@ +#include <assert.h> +#include <stdarg.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include "cctk.h" + +#include "defs.hh" +#include "ggf.hh" + +#include "carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/modes.cc,v 1.9 2004/08/07 20:07:27 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_modes_cc); +} + + + +namespace Carpet { + + using namespace std; + + + + // + // Mode indicators + // + + bool is_meta_mode () + { + if (mglevel==-1) assert (reflevel==-1 && map==-1 && component==-1); + return mglevel==-1; + } + + bool is_global_mode () + { + if (mglevel==-1 && reflevel!=-1) assert (map==-1 && component==-1); + return mglevel!=-1 && reflevel==-1; + } + + bool is_level_mode () + { + if (mglevel!=-1 && reflevel!=-1 && map==-1) assert (component==-1); + return mglevel!=-1 && reflevel!=-1 && map==-1; + } + + bool is_singlemap_mode () + { + return mglevel!=-1 && reflevel!=-1 && map!=-1 && component==-1; + } + + bool is_local_mode () + { + return mglevel!=-1 && reflevel!=-1 && map!=-1 && component!=-1; +// assert (mglevel>=0 && mglevel<mglevels); +// assert (reflevel>=0 && reflevel<reflevels); +// assert (map>=0 && map<maps); +// assert (vhh.at(map)->local_components(reflevel)==1 || component==-1); + } + + + + // + // Mode setting + // + + // Set global mode + + void enter_global_mode (cGH * const cgh, int const ml) + { + assert (is_meta_mode()); + assert (ml>=0 && ml<mglevels); + Checkpoint ("Entering global mode"); + + mglevel = ml; + mglevelfact = ipow(mgfact, mglevel); + // TODO: this could also just be "mglevel" instead + cgh->cctk_convlevel = basemglevel + mglevel; + + // Set time and space delta + cgh->cctk_delta_time = delta_time * mglevelfact; + for (int d=0; d<dim; ++d) { + cgh->cctk_origin_space[d] = origin_space.at(mglevel)[d]; + cgh->cctk_delta_space[d] = delta_space[d] * mglevelfact; + } + + // Set array information + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) != CCTK_GF) { + + const int rl = 0; + const int m = 0; + const int c = CCTK_MyProc(cgh); + + const ibbox& base = arrdata.at(group).at(m).hh->bases.at(rl).at(ml); + const bbvect& obnds = arrdata.at(group).at(m).hh->outer_boundaries.at(rl).at(c); + const ibbox& ext = arrdata.at(group).at(m).dd->boxes.at(rl).at(c).at(ml).exterior; + + ivect::ref(const_cast<int*>(groupdata.at(group).info.nghostzones)) + = arrdata.at(group).at(m).dd->lghosts; + ivect::ref(const_cast<int*>(groupdata.at(group).info.gsh)) + = base.shape() / base.stride(); + ivect::ref(const_cast<int*>(groupdata.at(group).info.lsh)) + = ext.shape() / ext.stride(); + ivect::ref(const_cast<int*>(groupdata.at(group).info.lbnd)) + = (ext.lower() - base.lower()) / ext.stride(); + ivect::ref(const_cast<int*>(groupdata.at(group).info.ubnd)) + = (ext.upper() - base.lower()) / ext.stride(); + for (int d=0; d<dim; ++d) { + const_cast<int*>(groupdata.at(group).info.bbox)[2*d ] = obnds[d][0]; + const_cast<int*>(groupdata.at(group).info.bbox)[2*d+1] = obnds[d][1]; + } + + for (int d=0; d<dim; ++d) { + assert (groupdata.at(group).info.lsh[d]>=0); + assert (groupdata.at(group).info.lsh[d]<=groupdata.at(group).info.gsh[d]); + if (d>=groupdata.at(group).info.dim) { + assert (groupdata.at(group).info.lsh[d]==1); + } + assert (groupdata.at(group).info.lbnd[d]>=0); + assert (groupdata.at(group).info.lbnd[d]<=groupdata.at(group).info.ubnd[d]+1); + assert (groupdata.at(group).info.ubnd[d]<groupdata.at(group).info.gsh[d]); + assert (groupdata.at(group).info.lbnd[d] + groupdata.at(group).info.lsh[d] - 1 + == groupdata.at(group).info.ubnd[d]); + assert (groupdata.at(group).info.lbnd[d]<=groupdata.at(group).info.ubnd[d]+1); + } + + const int numvars = CCTK_NumVarsInGroupI (group); + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (arrdata.at(group).at(m).hh->is_local(rl,c)); + + for (int var=0; var<numvars; ++var) { + assert (firstvar+var<CCTK_NumVars()); + for (int tl=0; tl<num_tl; ++tl) { + ggf<dim> * const ff = arrdata.at(group).at(m).data.at(var); + if (ff) { + gdata<dim> * const data = (*ff) (-tl, rl, c, ml); + assert (data); + cgh->data[firstvar+var][tl] = data->storage(); + } else { + cgh->data[firstvar+var][tl] = 0; + } + } + } + } + + } // if grouptype + } // for group + + assert (is_global_mode()); + } + + void leave_global_mode (cGH * const cgh) + { + assert (is_global_mode() || is_meta_mode()); + Checkpoint ("Leaving global mode"); + + if (mglevel == -1) return; // early return + + // Save and unset time and space delta + delta_time = cgh->cctk_delta_time / mglevelfact; + cgh->cctk_delta_time = 0.0; + for (int d=0; d<dim; ++d) { + origin_space.at(mglevel)[d] = cgh->cctk_origin_space[d]; + delta_space[d] = cgh->cctk_delta_space[d] / mglevelfact; + cgh->cctk_origin_space[d] = -424242.0; + cgh->cctk_delta_space[d] = 0.0; + } + + // Set array information + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) != CCTK_GF) { + + const int m = 0; + +// ivect::ref(const_cast<int*>(groupdata.at(group).info.nghostzones)) +// = 0xdead; + ivect::ref(const_cast<int*>(groupdata.at(group).info.nghostzones)) + = arrdata.at(group).at(m).dd->lghosts; + ivect::ref(const_cast<int*>(groupdata.at(group).info.gsh)) + = 0xdead; + ivect::ref(const_cast<int*>(groupdata.at(group).info.lsh)) + = 0xdead; + ivect::ref(const_cast<int*>(groupdata.at(group).info.lbnd)) + = -0xdead; + ivect::ref(const_cast<int*>(groupdata.at(group).info.ubnd)) + = 0xdead; + for (int d=0; d<dim; ++d) { + const_cast<int*>(groupdata.at(group).info.bbox)[2*d ] = 0xdead; + const_cast<int*>(groupdata.at(group).info.bbox)[2*d+1] = 0xdead; + } + + const int numvars = CCTK_NumVarsInGroupI (group); + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (firstvar+var<CCTK_NumVars()); + for (int tl=0; tl<num_tl; ++tl) { + cgh->data[firstvar+var][tl] = 0; + } + } + } + + } // if grouptype + } // for group + + mglevel = -1; + mglevelfact = -0xdead; + cgh->cctk_convlevel = -0xdead; + + assert (is_meta_mode()); + } + + + + // Set level mode + + void enter_level_mode (cGH * const cgh, int const rl) + { + assert (is_global_mode()); + assert (rl>=0 && rl<reflevels); + Checkpoint ("Entering level mode"); + + reflevel = rl; + reflevelfact = ipow(reffact, reflevel); + ivect::ref(cgh->cctk_levfac) = reflevelfact; + cgh->cctk_timefac = reflevelfact; + + // Set current time + assert (mglevel>=0 && mglevel<(int)leveltimes.size()); + assert (reflevel>=0 && reflevel<(int)leveltimes.at(mglevel).size()); + cgh->cctk_time = leveltimes.at(mglevel).at(reflevel); + + assert (is_level_mode()); + } + + void leave_level_mode (cGH * const cgh) + { + assert (is_level_mode() || is_global_mode()); + Checkpoint ("Leaving level mode"); + + if (reflevel == -1) return; // early return + + // Save and unset current time + assert (mglevel>=0 && mglevel<(int)leveltimes.size()); + assert (reflevel>=0 && reflevel<(int)leveltimes.at(mglevel).size()); + leveltimes.at(mglevel).at(reflevel) = cgh->cctk_time; + cgh->cctk_time = global_time; + + reflevel = -1; + reflevelfact = -0xdead; + ivect::ref(cgh->cctk_levfac) = -0xdead; + cgh->cctk_timefac = -0xdead; + + assert (is_global_mode()); + } + + + + // Set singlemap mode + + void enter_singlemap_mode (cGH * const cgh, int const m) + { + assert (is_level_mode()); + assert (m>=0 && m<maps); + Checkpoint ("Entering singlemap mode"); + + carpetGH.map = map = m; + + // Set grid shape + const ibbox& coarseext = vdd.at(map)->bases.at(0 ).at(mglevel).exterior; + const ibbox& baseext = vdd.at(map)->bases.at(reflevel).at(mglevel).exterior; + assert (all (baseext.lower() % baseext.stride() == 0)); + assert (all ((baseext.lower() - coarseext.lower()) % baseext.stride() == 0)); + ivect::ref(cgh->cctk_levoff) = (baseext.lower() - coarseext.lower()) / baseext.stride(); + ivect::ref(cgh->cctk_levoffdenom) = 1; + ivect::ref(cgh->cctk_gsh) = baseext.shape() / baseext.stride(); + assert (all (vdd.at(map)->lghosts == vdd.at(map)->ughosts)); + ivect::ref(cgh->cctk_nghostzones) = vdd.at(map)->lghosts; + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + ivect::ref(const_cast<int*>(groupdata.at(group).info.gsh)) + = ivect::ref(cgh->cctk_gsh); + ivect::ref(const_cast<int*>(groupdata.at(group).info.nghostzones)) + = ivect::ref(cgh->cctk_nghostzones); + } + } + + assert (is_singlemap_mode()); + } + + void leave_singlemap_mode (cGH * const cgh) + { + assert (is_singlemap_mode() || is_level_mode()); + Checkpoint ("Leaving singlemap mode"); + + if (map == -1) return; // early return + + // Unset grid shape + ivect::ref(cgh->cctk_levoff) = 0xdead; + ivect::ref(cgh->cctk_levoffdenom) = 0; + ivect::ref(cgh->cctk_gsh) = 0xdead; +// ivect::ref(cgh->cctk_nghostzones) = 0xdead; + ivect::ref(cgh->cctk_nghostzones) = vdd.at(map)->lghosts; + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + ivect::ref(const_cast<int*>(groupdata.at(group).info.gsh)) + = ivect::ref(cgh->cctk_gsh); + ivect::ref(const_cast<int*>(groupdata.at(group).info.nghostzones)) + = ivect::ref(cgh->cctk_nghostzones); + } + } + + carpetGH.map = map = -1; + + assert (is_level_mode()); + } + + + + // Set local mode + + void enter_local_mode (cGH * const cgh, int const c) + { + assert (is_singlemap_mode()); + assert (c>=0 && c<vhh.at(map)->components(reflevel)); + Checkpoint ("Entering local mode"); + + component = c; + + // Set cGH fields + const ibbox& baseext = vdd.at(map)->bases.at(reflevel).at(mglevel).exterior; + const bbvect& obnds = vhh.at(map)->outer_boundaries.at(reflevel).at(component); + const ibbox& ext = vdd.at(map)->boxes.at(reflevel).at(component).at(mglevel).exterior; + + ivect::ref(cgh->cctk_lsh) = ext.shape() / ext.stride(); + ivect::ref(cgh->cctk_lbnd) + = (ext.lower() - baseext.lower()) / ext.stride(); + ivect::ref(cgh->cctk_ubnd) + = (ext.upper() - baseext.lower()) / ext.stride(); + + for (int d=0; d<dim; ++d) { + cgh->cctk_bbox[2*d ] = obnds[d][0]; + cgh->cctk_bbox[2*d+1] = obnds[d][1]; + } + + for (int stg=0; stg<CCTK_NSTAGGER; ++stg) { + for (int d=0; d<dim; ++d) { + // TODO: support staggering + cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = cgh->cctk_lsh[d]; + } + } + + for (int d=0; d<dim; ++d) { + assert (cgh->cctk_lsh[d] >= 0); + assert (cgh->cctk_lsh[d] <= cgh->cctk_gsh[d]); + assert (cgh->cctk_lbnd[d] >= 0); + assert (cgh->cctk_lbnd[d] <= cgh->cctk_ubnd[d] + 1); + assert (cgh->cctk_ubnd[d] < cgh->cctk_gsh[d]); + assert (cgh->cctk_lbnd[d] + cgh->cctk_lsh[d] - 1 == cgh->cctk_ubnd[d]); + assert (cgh->cctk_lbnd[d] <= cgh->cctk_ubnd[d]+1); + } + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + + ivect::ref(const_cast<int*>(groupdata.at(group).info.lsh)) + = ivect::ref(cgh->cctk_lsh); + ivect::ref(const_cast<int*>(groupdata.at(group).info.lbnd)) + = ivect::ref(cgh->cctk_lbnd); + ivect::ref(const_cast<int*>(groupdata.at(group).info.ubnd)) + = ivect::ref(cgh->cctk_ubnd); + + for (int d=0; d<dim; ++d) { + const_cast<int*>(groupdata.at(group).info.bbox)[2*d ] + = cgh->cctk_bbox[2*d ]; + const_cast<int*>(groupdata.at(group).info.bbox)[2*d+1] + = cgh->cctk_bbox[2*d+1]; + } + + const int numvars = CCTK_NumVarsInGroupI (group); + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + +// assert (vhh.at(map)->is_local(reflevel,component)); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (firstvar+var<CCTK_NumVars()); + for (int tl=0; tl<num_tl; ++tl) { + ggf<dim> * const ff = arrdata.at(group).at(map).data.at(var); + if (ff) { + gdata<dim> * const data + = (*ff) (-tl, reflevel, component, mglevel); + assert (data); + cgh->data[firstvar+var][tl] = data->storage(); + } else { + cgh->data[firstvar+var][tl] = 0; + } + } + } + } + + } // if grouptype + } // for group + + assert (is_local_mode()); + } + + void leave_local_mode (cGH * const cgh) + { + assert (is_local_mode() || is_singlemap_mode()); + Checkpoint ("Leaving local mode"); + + if (component == -1) return; // early return + + // Unset cGH fields + ivect::ref(cgh->cctk_lsh) = 0xdead; + ivect::ref(cgh->cctk_lbnd) = -0xdead; + ivect::ref(cgh->cctk_ubnd) = 0xdead; + + for (int d=0; d<dim; ++d) { + cgh->cctk_bbox[2*d ] = 0xdead; + cgh->cctk_bbox[2*d+1] = 0xdead; + } + + for (int stg=0; stg<CCTK_NSTAGGER; ++stg) { + for (int d=0; d<dim; ++d) { + // TODO: support staggering + cgh->cctk_lssh[CCTK_LSSH_IDX(stg,d)] = cgh->cctk_lsh[d]; + } + } + + for (int group=0; group<CCTK_NumGroups(); ++group) { + if (CCTK_GroupTypeI(group) == CCTK_GF) { + + ivect::ref(const_cast<int*>(groupdata.at(group).info.lsh)) + = ivect::ref(cgh->cctk_lsh); + ivect::ref(const_cast<int*>(groupdata.at(group).info.lbnd)) + = ivect::ref(cgh->cctk_lbnd); + ivect::ref(const_cast<int*>(groupdata.at(group).info.ubnd)) + = ivect::ref(cgh->cctk_ubnd); + + for (int d=0; d<dim; ++d) { + const_cast<int*>(groupdata.at(group).info.bbox)[2*d ] + = cgh->cctk_bbox[2*d ]; + const_cast<int*>(groupdata.at(group).info.bbox)[2*d+1] + = cgh->cctk_bbox[2*d+1]; + } + + const int numvars = CCTK_NumVarsInGroupI (group); + if (numvars>0) { + const int firstvar = CCTK_FirstVarIndexI (group); + assert (firstvar>=0); + const int num_tl = CCTK_NumTimeLevelsFromVarI (firstvar); + + assert (group<(int)arrdata.size()); + for (int var=0; var<numvars; ++var) { + assert (firstvar+var<CCTK_NumVars()); + for (int tl=0; tl<num_tl; ++tl) { + cgh->data[firstvar+var][tl] = 0; + } + } + } + + } // if grouptype + } // for group + + component = -1; + + assert (is_singlemap_mode()); + } + + + + // + // Mode iterators + // + + // mglevel iterator + + mglevel_iterator::mglevel_iterator (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), ml(mglevels-1) + { + enter_global_mode (cgh, ml); + } + + mglevel_iterator::~mglevel_iterator () + { + leave_global_mode (cgh); + } + + bool mglevel_iterator::done () const + { + return ml < 0; + } + + void mglevel_iterator::step () + { + -- ml; + if (! done()) { + leave_global_mode (cgh); + enter_global_mode (cgh, ml); + } + } + + + + // reverse mglevel iterator + + reverse_mglevel_iterator::reverse_mglevel_iterator (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), ml(0) + { + enter_global_mode (cgh, ml); + } + + reverse_mglevel_iterator::~reverse_mglevel_iterator () + { + leave_global_mode (cgh); + } + + bool reverse_mglevel_iterator::done () const + { + return ml >= mglevels; + } + + void reverse_mglevel_iterator::step () + { + ++ ml; + if (! done()) { + leave_global_mode (cgh); + enter_global_mode (cgh, ml); + } + } + + + + // reflevel iterator + + reflevel_iterator::reflevel_iterator (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), rl(0) + { + enter_level_mode (cgh, rl); + } + + reflevel_iterator::~reflevel_iterator () + { + leave_level_mode (cgh); + } + + bool reflevel_iterator::done () const + { + return rl >= reflevels; + } + + void reflevel_iterator::step () + { + ++ rl; + if (! done()) { + leave_level_mode (cgh); + enter_level_mode (cgh, rl); + } + } + + + + // reverse reflevel iterator + + reverse_reflevel_iterator::reverse_reflevel_iterator (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), rl(reflevels-1) + { + enter_level_mode (cgh, rl); + } + + reverse_reflevel_iterator::~reverse_reflevel_iterator () + { + leave_level_mode (cgh); + } + + bool reverse_reflevel_iterator::done () const + { + return rl < 0; + } + + void reverse_reflevel_iterator::step () + { + -- rl; + if (! done()) { + leave_level_mode (cgh); + enter_level_mode (cgh, rl); + } + } + + + + // map iterator + + map_iterator::map_iterator (cGH const * const cgh_, + int const grouptype_) + : cgh(const_cast<cGH*>(cgh_)), grouptype(grouptype_), m(0) + { + assert (grouptype == CCTK_GF + || grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR); + enter_singlemap_mode (cgh, m); + } + + map_iterator::~map_iterator () + { + leave_singlemap_mode (cgh); + } + + bool map_iterator::done () const + { + return grouptype == CCTK_GF ? m >= maps : m >= 1; + } + + void map_iterator::step () + { + ++ m; + if (! done()) { + leave_singlemap_mode (cgh); + enter_singlemap_mode (cgh, m); + } + } + + + + // Local mode iterator + + component_iterator::component_iterator (cGH const * const cgh_, + int const grouptype_) + : cgh(const_cast<cGH*>(cgh_)), grouptype(grouptype_), c(0) + { + assert (grouptype == CCTK_GF + || grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR); + enter_local_mode (cgh, c); + } + + component_iterator::~component_iterator () + { + leave_local_mode (cgh); + } + + bool component_iterator::done () const + { + return (grouptype == CCTK_GF + ? c >= vhh.at(map)->components(reflevel) + : c >= CCTK_nProcs(cgh)); + } + + void component_iterator::step () + { + ++ c; + if (! done()) { + leave_local_mode (cgh); + enter_local_mode (cgh, c); + } + } + + + + // Processor local mode iterator + + local_component_iterator::local_component_iterator (cGH const * const cgh_, + int const grouptype_) + : cgh(const_cast<cGH*>(cgh_)), grouptype(grouptype_), c(-1) + { + assert (grouptype == CCTK_GF + || grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR); + assert (is_singlemap_mode()); + step (); + } + + local_component_iterator::~local_component_iterator () + { + leave_local_mode (cgh); + } + + bool local_component_iterator::done () const + { + return c >= (grouptype == CCTK_GF + ? vhh.at(map)->components(reflevel) + : CCTK_nProcs(cgh)); + } + + void local_component_iterator::step () + { + do { + ++ c; + } while (! done() && ! (grouptype == CCTK_GF + ? vhh.at(map)->is_local(reflevel, c) + : c == CCTK_MyProc(cgh))); + if (! done()) { + leave_local_mode (cgh); + enter_local_mode (cgh, c); + } + } + + + + // + // Mode escapes + // + + // Singlemap escape + + singlemap_escape::singlemap_escape (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), c(component) + { + assert (! is_meta_mode()); + assert (! is_global_mode()); + assert (! is_level_mode()); + if (! is_singlemap_mode()) { + leave_local_mode (cgh); + } + } + + singlemap_escape::~singlemap_escape () + { + assert (is_singlemap_mode()); + if (c != -1) { + enter_local_mode (cgh, c); + } + } + + + + // Level escape + + level_escape::level_escape (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), m(map), c(component) + { + assert (! is_meta_mode()); + assert (! is_global_mode()); + if (! is_level_mode()) { + if (! is_singlemap_mode()) { + leave_local_mode (cgh); + } + leave_singlemap_mode (cgh); + } + } + + level_escape::~level_escape () + { + assert (is_level_mode()); + if (m != -1) { + enter_singlemap_mode (cgh, m); + if (c != -1) { + enter_local_mode (cgh, c); + } + } + } + + + + // Global escape + + global_escape::global_escape (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), rl(reflevel), m(map), c(component) + { + assert (! is_meta_mode()); + if (! is_global_mode()) { + if (! is_level_mode()) { + if (! is_singlemap_mode()) { + leave_local_mode (cgh); + } + leave_singlemap_mode (cgh); + } + leave_level_mode (cgh); + } + } + + global_escape::~global_escape () + { + assert (is_global_mode()); + if (rl != -1) { + enter_level_mode (cgh, rl); + if (m != -1) { + enter_singlemap_mode (cgh, m); + if (c != -1) { + enter_local_mode (cgh, c); + } + } + } + } + + + + // Meta escape + + meta_escape::meta_escape (cGH const * const cgh_) + : cgh(const_cast<cGH*>(cgh_)), ml(mglevel), rl(reflevel), m(map), c(component) + { + if (! is_meta_mode()) { + if (! is_global_mode()) { + if (! is_level_mode()) { + if (! is_singlemap_mode()) { + leave_local_mode (cgh); + } + leave_singlemap_mode (cgh); + } + leave_level_mode (cgh); + } + leave_global_mode (cgh); + } + } + + meta_escape::~meta_escape () + { + assert (is_meta_mode()); + if (ml != -1) { + enter_global_mode (cgh, ml); + if (rl != -1) { + enter_level_mode (cgh, rl); + if (m != -1) { + enter_singlemap_mode (cgh, m); + if (c != -1) { + enter_local_mode (cgh, c); + } + } + } + } + } + + + + // + // Call functions in specific modes + // + + int CallLocalFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)) + { + if (is_meta_mode()) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } else if (is_global_mode()) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } END_REFLEVEL_LOOP; + } else if (is_level_mode()) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + } else if (is_singlemap_mode()) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_LOCAL_COMPONENT_LOOP; + } else { + function (cgh); + } + return 0; + } + + int CallSinglemapFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)) + { + if (is_meta_mode()) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_MAP_LOOP; + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } else if (is_global_mode()) { + BEGIN_REFLEVEL_LOOP(cgh) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_MAP_LOOP; + } END_REFLEVEL_LOOP; + } else if (is_level_mode()) { + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + function (cgh); + } END_MAP_LOOP; + } else { + BEGIN_SINGLEMAP_MODE(cgh) { + function (cgh); + } END_SINGLEMAP_MODE; + } + return 0; + } + + int CallLevelFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)) + { + if (is_meta_mode()) { + BEGIN_MGLEVEL_LOOP(cgh) { + BEGIN_REFLEVEL_LOOP(cgh) { + function (cgh); + } END_REFLEVEL_LOOP; + } END_MGLEVEL_LOOP; + } else if (is_global_mode()) { + BEGIN_REFLEVEL_LOOP(cgh) { + function (cgh); + } END_REFLEVEL_LOOP; + } else { + BEGIN_LEVEL_MODE(cgh) { + function (cgh); + } END_LEVEL_MODE; + } + return 0; + } + + int CallGlobalFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)) + { + if (is_meta_mode()) { + BEGIN_MGLEVEL_LOOP(cgh) { + function (cgh); + } END_MGLEVEL_LOOP; + } else { + BEGIN_GLOBAL_MODE(cgh) { + function (cgh); + } END_GLOBAL_MODE; + } + return 0; + } + + int CallMetaFunction (cGH * const cgh, + void (* const function) (cGH * const cgh)) + { + BEGIN_META_MODE(cgh) { + function (cgh); + } END_META_MODE; + return 0; + } + + + + // + // Call a scheduling group + // + + int CallScheduleGroup (cGH * const cgh, const char * const group) + { + CCTK_ScheduleTraverse (group, cgh, CallFunction); + return 0; + } + + extern "C" void CCTK_FCALL CCTK_FNAME(CallScheduleGroup) + (int * const ierr, cGH * const * const cgh, ONE_FORTSTRING_ARG) + { + ONE_FORTSTRING_CREATE (group); + *ierr = CallScheduleGroup (*cgh, group); + free (group); + } + +} // namespace Carpet diff --git a/Carpet/Carpet/src/modes.hh b/Carpet/Carpet/src/modes.hh new file mode 100644 index 000000000..b8cf65d92 --- /dev/null +++ b/Carpet/Carpet/src/modes.hh @@ -0,0 +1,322 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/modes.hh,v 1.2 2004/06/14 09:42:53 schnetter Exp $ + +#ifndef MODES_HH +#define MODES_HH + +#include "cctk.h" + + + +namespace Carpet { + + using namespace std; + + + + // + // These are the modes: + // + // meta mode: + // global mode: mglevel ("convergence level") is defined + // level mode: reflevel is defined + // singlemap mode: map ("map index") is defined + // local mode: component ("patch index") + // + // maybe missing: + // convtest mode: [rl, map, c] + // + + + + // Mode indicators + bool is_meta_mode (); + bool is_global_mode (); + bool is_level_mode (); + bool is_singlemap_mode (); + bool is_local_mode (); + + + + // Mode setting + + void enter_global_mode (cGH * const cgh, int const ml); + void leave_global_mode (cGH * const cgh); + + void enter_level_mode (cGH * const cgh, int const rl); + void leave_level_mode (cGH * const cgh); + + void enter_singlemap_mode (cGH * const cgh, int const m); + void leave_singlemap_mode (cGH * const cgh); + + void enter_local_mode (cGH * const cgh, int const c); + void leave_local_mode (cGH * const cgh); + + + + // Mode iterators + + class mglevel_iterator { + cGH * cgh; + int ml; + public: + mglevel_iterator (cGH const * const cgh); + ~mglevel_iterator (); + bool done () const; + void step (); + }; + + class reverse_mglevel_iterator { + cGH * cgh; + int ml; + public: + reverse_mglevel_iterator (cGH const * const cgh); + ~reverse_mglevel_iterator (); + bool done () const; + void step (); + }; + + class reflevel_iterator { + cGH * cgh; + int rl; + public: + reflevel_iterator (cGH const * const cgh); + ~reflevel_iterator (); + bool done () const; + void step (); + }; + + class reverse_reflevel_iterator { + cGH * cgh; + int rl; + public: + reverse_reflevel_iterator (cGH const * const cgh); + ~reverse_reflevel_iterator (); + bool done () const; + void step (); + }; + + // Loop over all maps. If grouptype is CCTK_GF, then loop over grid + // function maps. If grouptype is CCTK_ARRAY (or CCTK_SCALAR), then + // loop over grid array (or grid scalar) maps. In the latter case, + // map denotes the current grid array map, i.e. it cannot be used to + // access grid functions. + class map_iterator { + cGH * cgh; + int grouptype; + int m; + public: + map_iterator (cGH const * const cgh, int const grouptype); + ~map_iterator (); + bool done () const; + void step (); + }; + + // Loop over all components. If grouptype is CCTK_GF, then loop + // over grid function components. If grouptype is CCTK_ARRAY (or + // CCTK_SCALAR), then loop over grid array (or grid scalar) + // components. In the latter case, component denotes the current + // grid array component, i.e. it cannot be used to index grid + // functions. + class component_iterator { + cGH * cgh; + int grouptype; + int c; + public: + component_iterator (cGH const * const cgh, int const grouptype); + ~component_iterator (); + bool done () const; + void step (); + }; + + class local_component_iterator { + cGH * cgh; + int grouptype; + int c; + public: + local_component_iterator (cGH const * const cgh, int const grouptype); + ~local_component_iterator (); + bool done () const; + void step (); + }; + + + + // Compatibility defines for the mode iterators + +#define BEGIN_MGLEVEL_LOOP(cgh) \ + do { \ + bool mglevel_loop_ = true; \ + for (mglevel_iterator mg_iter_(cgh); \ + !mg_iter_.done(); \ + mg_iter_.step()) { +#define END_MGLEVEL_LOOP \ + } \ + assert (mglevel_loop_); \ + mglevel_loop_ = false; \ + } while (false) + +#define BEGIN_REVERSE_MGLEVEL_LOOP(cgh) \ + do { \ + bool reverse_mglevel_loop_ = true; \ + for (reverse_mglevel_iterator mg_iter_(cgh); \ + !mg_iter_.done(); \ + mg_iter_.step()) { +#define END_REVERSE_MGLEVEL_LOOP \ + } \ + assert (reverse_mglevel_loop_); \ + reverse_mglevel_loop_ = false; \ + } while (false) + +#define BEGIN_REFLEVEL_LOOP(cgh) \ + do { \ + bool reflevel_loop_ = true; \ + for (reflevel_iterator ref_iter_(cgh); \ + !ref_iter_.done(); \ + ref_iter_.step()) { +#define END_REFLEVEL_LOOP \ + } \ + assert (reflevel_loop_); \ + reflevel_loop_ = false; \ + } while (false) + +#define BEGIN_REVERSE_REFLEVEL_LOOP(cgh) \ + do { \ + bool reverse_reflevel_loop_ = true; \ + for (reverse_reflevel_iterator ref_iter_(cgh); \ + !ref_iter_.done(); \ + ref_iter_.step()) { +#define END_REVERSE_REFLEVEL_LOOP \ + } \ + assert (reverse_reflevel_loop_); \ + reverse_reflevel_loop_ = false; \ + } while (false) + +#define BEGIN_MAP_LOOP(cgh, grouptype) \ + do { \ + bool map_loop_ = true; \ + for (map_iterator map_iter_(cgh, grouptype); \ + !map_iter_.done(); \ + map_iter_.step()) { +#define END_MAP_LOOP \ + } \ + assert (map_loop_); \ + map_loop_ = false; \ + } while (false) + +#define BEGIN_COMPONENT_LOOP(cgh, grouptype) \ + do { \ + bool component_loop_ = true; \ + for (component_iterator comp_iter_(cgh, grouptype); \ + !comp_iter_.done(); \ + comp_iter_.step()) { +#define END_COMPONENT_LOOP \ + } \ + assert (component_loop_); \ + component_loop_ = false; \ + } while (false) + +#define BEGIN_LOCAL_COMPONENT_LOOP(cgh, grouptype) \ + do { \ + bool local_component_loop_ = true; \ + for (local_component_iterator comp_iter_(cgh, grouptype); \ + !comp_iter_.done(); \ + comp_iter_.step()) { +#define END_LOCAL_COMPONENT_LOOP \ + } \ + assert (local_component_loop_); \ + local_component_loop_ = false; \ + } while (false) + + + + // Mode escapes + + class singlemap_escape { + cGH * cgh; + int c; + public: + singlemap_escape (cGH const * const cgh); + ~singlemap_escape (); + }; + + class level_escape { + cGH * cgh; + int m; + int c; + public: + level_escape (cGH const * const cgh); + ~level_escape (); + }; + + class global_escape { + cGH * cgh; + int rl; + int m; + int c; + public: + global_escape (cGH const * const cgh); + ~global_escape (); + }; + + class meta_escape { + cGH * cgh; + int ml; + int rl; + int m; + int c; + public: + meta_escape (cGH const * const cgh); + ~meta_escape (); + }; + + + + // Compatibility defines for the mode escapes + +#define BEGIN_SINGLEMAP_MODE(cgh) \ + do { \ + bool singlemap_mode_ = true; \ + singlemap_escape esc_(cgh); \ + { +#define END_SINGLEMAP_MODE \ + } \ + assert (singlemap_mode_); \ + singlemap_mode_ = false; \ + } while (false) + +#define BEGIN_LEVEL_MODE(cgh) \ + do { \ + bool level_mode_ = true; \ + level_escape esc_(cgh); \ + { +#define END_LEVEL_MODE \ + } \ + assert (level_mode_); \ + level_mode_ = false; \ + } while (false) + +#define BEGIN_GLOBAL_MODE(cgh) \ + do { \ + bool global_mode_ = true; \ + global_escape esc_(cgh); \ + { +#define END_GLOBAL_MODE \ + } \ + assert (global_mode_); \ + global_mode_ = false; \ + } while (false) + +#define BEGIN_META_MODE(cgh) \ + do { \ + bool meta_mode_ = true; \ + meta_escape esc_(cgh); \ + { +#define END_META_MODE \ + } \ + assert (meta_mode_); \ + meta_mode_ = false; \ + } while (false) + +} // namespace Carpet + +#endif // !defined(MODES_HH) diff --git a/Carpet/Carpet/src/typecase b/Carpet/Carpet/src/typecase new file mode 100644 index 000000000..abb79038d --- /dev/null +++ b/Carpet/Carpet/src/typecase @@ -0,0 +1,187 @@ +// Instantiate type cases for all available types -*-C++-*- +// (C) 2001 Erik Schnetter <schnetter@uni-tuebingen.de> + +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/typecase,v 1.9 2004/03/01 21:34:52 schnetter Exp $ + +// Usage: +// Define the macro TYPECASE(N,T) to be a typecase for the type T with name N, +// then include this file, +// then undefine the macro TYPECASE. + + + +// Decide which types to typecase + +#ifdef CARPET_ALL +# undef CARPET_BYTE +# undef CARPET_INT +# undef CARPET_REAL +# undef CARPET_COMPLEX +# define CARPET_BYTE +# define CARPET_INT +# define CARPET_REAL +# define CARPET_COMPLEX +#endif + +#ifdef CARPET_ALL_INT +# undef CARPET_INT1 +# undef CARPET_INT2 +# undef CARPET_INT4 +# undef CARPET_INT8 +# define CARPET_INT1 +# define CARPET_INT2 +# define CARPET_INT4 +# define CARPET_INT8 +#endif + +#ifdef CARPET_ALL_REAL +# undef CARPET_REAL4 +# undef CARPET_REAL8 +# undef CARPET_REAL16 +# define CARPET_REAL4 +# define CARPET_REAL8 +# define CARPET_REAL16 +#endif + +#ifdef CARPET_ALL_COMPLEX +# undef CARPET_COMPLEX8 +# undef CARPET_COMPLEX16 +# undef CARPET_COMPLEX32 +# define CARPET_COMPLEX8 +# define CARPET_COMPLEX16 +# define CARPET_COMPLEX32 +#endif + +#if !defined(CARPET_BYTE) && !defined(CARPET_INT) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) +// Assume the user just wants INT, REAL, and COMPLEX +# undef CARPET_INT +# define CARPET_INT +# undef CARPET_REAL +# define CARPET_REAL +# undef CARPET_COMPLEX +# define CARPET_COMPLEX +#endif + +#ifdef CARPET_INT +# ifdef CCTK_INTEGER_PRECISION_1 +# undef CARPET_INT1 +# define CARPET_INT1 +# endif +# ifdef CCTK_INTEGER_PRECISION_2 +# undef CARPET_INT2 +# define CARPET_INT2 +# endif +# ifdef CCTK_INTEGER_PRECISION_4 +# undef CARPET_INT4 +# define CARPET_INT4 +# endif +# ifdef CCTK_INTEGER_PRECISION_8 +# undef CARPET_INT8 +# define CARPET_INT8 +# endif +#endif +#ifdef CARPET_REAL +# ifdef CCTK_REAL_PRECISION_4 +# undef CARPET_REAL4 +# define CARPET_REAL4 +# endif +# ifdef CCTK_REAL_PRECISION_8 +# undef CARPET_REAL8 +# define CARPET_REAL8 +# endif +# ifdef CCTK_REAL_PRECISION_16 +# undef CARPET_REAL16 +# define CARPET_REAL16 +# endif +#endif +#ifdef CARPET_COMPLEX +# ifdef CCTK_REAL_PRECISION_4 +# undef CARPET_COMPLEX8 +# define CARPET_COMPLEX8 +# endif +# ifdef CCTK_REAL_PRECISION_8 +# undef CARPET_COMPLEX16 +# define CARPET_COMPLEX16 +# endif +# ifdef CCTK_REAL_PRECISION_16 +# undef CARPET_COMPLEX32 +# define CARPET_COMPLEX32 +# endif +#endif + + + +// // Check +// #if !defined(CARPET_BYTE) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) +// # error "You have not defined which grid function types to instantiate." +// #endif + + + +// Typecase the desired types + +#ifdef CARPET_BYTE +TYPECASE(CCTK_VARIABLE_BYTE, CCTK_BYTE) +#endif + +#ifdef CARPET_INT +TYPECASE(CCTK_VARIABLE_INT, CCTK_INT) +#endif +#ifdef CARPET_INT1 +# ifdef CCTK_INT1 +TYPECASE(CCTK_VARIABLE_INT1, CCTK_INT1) +# endif +#endif +#ifdef CARPET_INT2 +# ifdef CCTK_INT2 +TYPECASE(CCTK_VARIABLE_INT2, CCTK_INT2) +# endif +#endif +#ifdef CARPET_INT4 +# ifdef CCTK_INT4 +TYPECASE(CCTK_VARIABLE_INT4, CCTK_INT4) +# endif +#endif +#ifdef CARPET_INT8 +# ifdef CCTK_INT8 +TYPECASE(CCTK_VARIABLE_INT8, CCTK_INT8) +# endif +#endif + +#ifdef CARPET_REAL +TYPECASE(CCTK_VARIABLE_REAL, CCTK_REAL) +#endif +#ifdef CARPET_REAL4 +# ifdef CCTK_REAL4 +TYPECASE(CCTK_VARIABLE_REAL4, CCTK_REAL4) +# endif +#endif +#ifdef CARPET_REAL8 +# ifdef CCTK_REAL8 +TYPECASE(CCTK_VARIABLE_REAL8, CCTK_REAL8) +# endif +#endif +#ifdef CARPET_REAL16 +# ifdef CCTK_REAL16 +TYPECASE(CCTK_VARIABLE_REAL16, CCTK_REAL16) +# endif +#endif + +#ifdef CARPET_COMPLEX +TYPECASE(CCTK_VARIABLE_COMPLEX, CCTK_COMPLEX) +#endif +#ifdef CARPET_COMPLEX8 +# ifdef CCTK_REAL4 +TYPECASE(CCTK_VARIABLE_COMPLEX8, CCTK_COMPLEX8) +# endif +#endif +#ifdef CARPET_COMPLEX16 +# ifdef CCTK_REAL8 +TYPECASE(CCTK_VARIABLE_COMPLEX16, CCTK_COMPLEX16) +# endif +#endif +#ifdef CARPET_COMPLEX32 +# ifdef CCTK_REAL16 +TYPECASE(CCTK_VARIABLE_COMPLEX32, CCTK_COMPLEX32) +# endif +#endif diff --git a/Carpet/Carpet/src/util/plot-bboxes b/Carpet/Carpet/src/util/plot-bboxes new file mode 100644 index 000000000..0bde21283 --- /dev/null +++ b/Carpet/Carpet/src/util/plot-bboxes @@ -0,0 +1 @@ +splot "< awk 'BEGIN { FS=\"[][,]\"; } { print $2,$3,$4; print $6,$3,$4; print $6,$7,$4; print $2,$7,$4; print $2,$3,$4; print \"\"; print $2,$3,$8; print $6,$3,$8; print $6,$7,$8; print $2,$7,$8; print $2,$3,$8; print \"\"; print $2,$3,$4; print $2,$3,$8; print \"\"; print $6,$3,$4; print $6,$3,$8; print \"\"; print $2,$7,$4; print $2,$7,$8; print \"\"; print $6,$7,$4; print $6,$7,$8; print \"\"; }' < /dev/tty" w l diff --git a/Carpet/Carpet/src/variables.cc b/Carpet/Carpet/src/variables.cc new file mode 100644 index 000000000..f23c8d3f6 --- /dev/null +++ b/Carpet/Carpet/src/variables.cc @@ -0,0 +1,98 @@ + +#include "variables.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/variables.cc,v 1.22 2004/05/21 18:16:23 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_Carpet_variables_cc); +} + +namespace Carpet { + + using namespace std; + + + + // Handle from CCTK_RegisterGHExtension + int GHExtension; + + // Maximum number of refinement levels + int maxreflevels; + + // Refinement levels + int reflevels; + + // Refinement factor + int reffact; + + // Refinement factor on finest grid + int maxreflevelfact; + + // Base multigrid level + int basemglevel; + + // Multigrid levels + int mglevels; + + // Multigrid factor + int mgfact; + + // Multigrid factor on coarsest grid + int maxmglevelfact; + + // Maps + int maps; + + + + // Current position on the grid hierarchy + int reflevel; + int mglevel; + int map; + int component; + + // refinement factor of current level: ipow(refinement_factor, reflevel) + int reflevelfact; + + // multigrid factor of current level: ipow(multigrid_factor, mglevel) + int mglevelfact; + + + + // Carpet's GH + CarpetGH carpetGH; + + + + // Times and spaces on the refinement levels + CCTK_REAL global_time; + vector<vector<CCTK_REAL> > leveltimes; // [mglevel][reflevel] + CCTK_REAL delta_time; + + vector<vect<CCTK_REAL,dim> > origin_space; // [mglevel] + vect<CCTK_REAL,dim> delta_space; + + + + // Is this the time for a global mode call? + bool do_meta_mode; + bool do_global_mode; + + // Is prolongation enabled? + bool do_prolongate; + + + + // Data for grid functions + + // The grid hierarchy + vector<gh<dim>*> vhh; // [map] + vector<dh<dim>*> vdd; // [map] + vector<th<dim>*> vtt; // [map] + + // Data for the groups + vector<groupdesc> groupdata; // [group] + + // Data for everything + vector<vector<arrdesc> > arrdata; // [group][map] + +} // namespace Carpet diff --git a/Carpet/Carpet/src/variables.hh b/Carpet/Carpet/src/variables.hh new file mode 100644 index 000000000..284f6d1ae --- /dev/null +++ b/Carpet/Carpet/src/variables.hh @@ -0,0 +1,136 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/Carpet/src/variables.hh,v 1.5 2004/05/21 18:16:23 schnetter Exp $ + +// It is assumed that each group has at least one map. All arrays +// have exactly one map. All maps have the same number of refinement +// levels. + +// It is assumed that each group has at least one component. + +// It is assumed that the number of components of all arrays is equal +// to the number of components of the grid functions, and that their +// distribution onto the processors is the same, and that all +// processors own the same number of components. + +#ifndef VARIABLES_HH +#define VARIABLES_HH + +#include <vector> + +#include "cctk.h" + +#include "data.hh" +#include "dh.hh" +#include "ggf.hh" +#include "gh.hh" +#include "operators.hh" +#include "th.hh" +#include "vect.hh" + +#include "carpet_public.h" +#include "defines.hh" + + + +namespace Carpet { + + using namespace std; + + + + // Handle from CCTK_RegisterGHExtension + extern int GHExtension; + + // Maximum number of refinement levels + extern int maxreflevels; + + // Refinement levels + extern int reflevels; + + // Refinement factor + extern int reffact; + + // Refinement factor on finest possible grid + extern int maxreflevelfact; + + // Base multigrid level + extern int basemglevel; + + // Multigrid levels + extern int mglevels; + + // Multigrid factor + extern int mgfact; + + // Multigrid factor on coarsest grid + extern int maxmglevelfact; + + // Maps + extern int maps; + + + + // Current position on the grid hierarchy + extern int reflevel; + extern int mglevel; + extern int map; + extern int component; + + // Current refinement factor + extern int reflevelfact; + + // Current multigrid factor + extern int mglevelfact; + + + + // Carpet's GH + extern CarpetGH carpetGH; + + + + // Times and spaces on the refinement levels + extern CCTK_REAL global_time; + extern vector<vector<CCTK_REAL> > leveltimes; // [mglevel][reflevel] + extern CCTK_REAL delta_time; + + extern vector<vect<CCTK_REAL,dim> > origin_space; // [mglevel] + extern vect<CCTK_REAL,dim> delta_space; + + + + // Is this the time for a global mode call? + extern bool do_meta_mode; + extern bool do_global_mode; + + // Is prolongation enabled? + extern bool do_prolongate; + + + + // Data for grid functions + + // The grid hierarchy + extern vector<gh<dim>*> vhh; // [map] + extern vector<dh<dim>*> vdd; // [map] + extern vector<th<dim>*> vtt; // [map] + + // Data for the groups + struct groupdesc { + cGroupDynamicData info; + operator_type transport_operator; // prolongation and restriction + }; + extern vector<groupdesc> groupdata; // [group] + + // Data for everything + struct arrdesc { + // points to hh etc. for GF, and is unique for SCALAR and ARRAY + gh<dim>* hh; + dh<dim>* dd; + th<dim>* tt; + vector<ggf<dim>*> data; // [var] + }; + extern vector<vector<arrdesc> > arrdata; // [group][map] + +} // namespace Carpet + +#endif // !defined(VARIABLES_HH) diff --git a/Carpet/CarpetIOASCII/COPYING b/Carpet/CarpetIOASCII/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetIOASCII/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetIOASCII/README b/Carpet/CarpetIOASCII/README new file mode 100644 index 000000000..b47824330 --- /dev/null +++ b/Carpet/CarpetIOASCII/README @@ -0,0 +1,8 @@ +Cactus Code Thorn CarpetIOASCII +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/README,v 1.3 2004/01/25 14:57:28 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides ASCII output for Carpet. diff --git a/Carpet/CarpetIOASCII/configuration.ccl b/Carpet/CarpetIOASCII/configuration.ccl new file mode 100644 index 000000000..06e1c135d --- /dev/null +++ b/Carpet/CarpetIOASCII/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/configuration.ccl,v 1.4 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib IOUtil + +REQUIRES THORNS: Carpet CarpetLib IOUtil diff --git a/Carpet/CarpetIOASCII/doc/documentation.tex b/Carpet/CarpetIOASCII/doc/documentation.tex new file mode 100644 index 000000000..1472de65a --- /dev/null +++ b/Carpet/CarpetIOASCII/doc/documentation.tex @@ -0,0 +1,154 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/doc/documentation.tex,v 1.1 2002/10/16 12:36:05 schnetter Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevent thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % STARTx CACTUS THORNGUIDE", +% except for filling in the title, author, date etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be sparated with a \\ or a comma +% - You can define your own macros are OK, but they must appear after +% the STARTx CACTUS THORNGUIDE line, and do not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphix package. +% More specifically, with the "includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us (later) to create a PDF version of the ThornGuide +% via pdflatex. | +% - References should be included with the latex "bibitem" command. +% - use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/doc/documentation.tex,v 1.1 2002/10/16 12:36:05 schnetter Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/ThornGuide/cactus} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter} + +% The title of the document (not necessarily the name of the Thorn) +\title{CarpetIOASCII} + +% the date your document was last changed, if your document is in CVS, +% please use: +\date{$ $Date: 2002/10/16 12:36:05 $ $} +%\date{} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + This thorn reproduces thorn IOASCII from arrangement CactusBase but + is specifically for the driver thorn Carpet. +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +This thorn provides ASCII output of data in 1, 2 or 3 dimensions. It +reproduces most of the functionality of thorn IOASCII from the +standard CactusBase arrangement. Where possible the names of +parameters and their use is identical. For most purposes it should be +sufficient to take a parameter file written for the standard IOASCII +and just change the active thorn. + +However, this thorn outputs considerably more information than the +standard IOASCII thorn. Information about, e.g., the refinement level +and the index position of the output are also given. All the output +can be visualized using gnuplot. + +\section{Utilities} +\label{sec:utils} + +For those that prefer other visualization packages than gnuplot there +are some utilities in the src/util directory. These are +\begin{itemize} +\item {\bf carpet2sdf} A program to convert to a format suitable for + the {\it ser} program written by M. Choptuik, +\item {\bf carpet2xgraph} A program to convert to a format suitable + for the {\it xgraph} or {\it ygraph} packages of P. Walker and D. + Pollney, +\item {\bf Carpet2ygraph.pl} A perl script to convert to a format + suitable for the {\it xgraph} or {\it ygraph} packages of P. Walker + and D. Pollney. +\end{itemize} +The first two, written by Scott Hawley, are C codes that require the +Makefile (building using the -utils flag from the main Cactus +directory currently does not work). Each output one refinement level, +either to standard output or to a file. + +The last script writes all refinement levels from a given file in a +given direction to a number of different files given a prefix +filename, where the number in the output filename is given by the +refinement level. + + +\begin{thebibliography}{9} + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/CarpetIOASCII/interface.ccl b/Carpet/CarpetIOASCII/interface.ccl new file mode 100644 index 000000000..049da8c86 --- /dev/null +++ b/Carpet/CarpetIOASCII/interface.ccl @@ -0,0 +1,22 @@ +# Interface definition for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/interface.ccl,v 1.14 2004/06/21 16:07:19 schnetter Exp $ + +IMPLEMENTS: IOASCII + +uses include header: carpet.hh + +uses include header: dist.hh + +uses include header: vect.hh + +uses include header: data.hh +uses include header: gdata.hh + +uses include header: gf.hh +uses include header: ggf.hh + + + +CCTK_INT last_output_iteration[4] TYPE=scalar +CCTK_REAL last_output_time[4] TYPE=scalar +CCTK_INT this_iteration[4] TYPE=scalar diff --git a/Carpet/CarpetIOASCII/param.ccl b/Carpet/CarpetIOASCII/param.ccl new file mode 100644 index 000000000..9d2586fc4 --- /dev/null +++ b/Carpet/CarpetIOASCII/param.ccl @@ -0,0 +1,375 @@ +# Parameter definitions for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/param.ccl,v 1.16 2004/06/23 17:35:11 tradke Exp $ + + + +shares: IO + +USES STRING out_dir + +USES KEYWORD out_criterion +USES CCTK_INT out_every +USES CCTK_REAL out_dt + + + +USES CCTK_INT out_xline_yi +USES CCTK_INT out_xline_zi +USES CCTK_INT out_yline_xi +USES CCTK_INT out_yline_zi +USES CCTK_INT out_zline_xi +USES CCTK_INT out_zline_yi + +USES CCTK_REAL out_xline_y +USES CCTK_REAL out_xline_z +USES CCTK_REAL out_yline_x +USES CCTK_REAL out_yline_z +USES CCTK_REAL out_zline_x +USES CCTK_REAL out_zline_y + + + +USES CCTK_INT out_xyplane_zi +USES CCTK_INT out_xzplane_yi +USES CCTK_INT out_yzplane_xi + +USES CCTK_REAL out_xyplane_z +USES CCTK_REAL out_xzplane_y +USES CCTK_REAL out_yzplane_x + + + +USES BOOLEAN new_filename_scheme +USES BOOLEAN strict_io_parameter_check + + + +private: + + + +BOOLEAN out3D_ghosts "Output ghost zones as well" +{ +} "yes" + +BOOLEAN out3D_outer_ghosts "Output outer boundary ghost zones as well" +{ +} "yes" + + + +BOOLEAN output_all_timelevels "Output all timelevels instead of only the current" STEERABLE = ALWAYS +{ +} "no" + + + +BOOLEAN separate_grids "Separate grid levels in the output file by additional empty lines" +{ +} "yes" + +BOOLEAN separate_components "Separate grid components in the output file by additional empty lines" +{ +} "no" + + + +INT out_precision "How many digits to output floating-point numbers with" STEERABLE = ALWAYS +{ + 1:15 :: "Number of precision digits" +} 15 + + + +CCTK_STRING out0D_dir "Name of 0D ASCII output directory, overrides IO::out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + +CCTK_STRING out1D_dir "Name of 1D ASCII output directory, overrides IO::out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + +CCTK_STRING out2D_dir "Name of 2D ASCII output directory, overrides IO::out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + +CCTK_STRING out3D_dir "Name of 3D ASCII output directory, overrides IO::out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + + + +CCTK_STRING out0D_vars "Variables to output in 0D ASCII file format" STEERABLE = ALWAYS +{ + ".*" :: "List of group or variable names" +} "" + +CCTK_STRING out1D_vars "Variables to output in 1D ASCII file format" STEERABLE = ALWAYS +{ + ".*" :: "List of group or variable names" +} "" + +CCTK_STRING out2D_vars "Variables to output in 2D ASCII file format" STEERABLE = ALWAYS +{ + ".*" :: "List of group or variable names" +} "" + +CCTK_STRING out3D_vars "Variables to output in 3D ASCII file format" STEERABLE = ALWAYS +{ + ".*" :: "List of group or variable names" +} "" + + + +KEYWORD out0D_criterion "Criterion to select 0D ASCII output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "default" :: "Use IO::out_criterion" + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "divisor" :: "Output if iteration mod divisor == 0." + "time" :: "Output every that much coordinate time" +} "default" + +KEYWORD out1D_criterion "Criterion to select 1D ASCII output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "default" :: "Use IO::out_criterion" + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "divisor" :: "Output if (iteration % out_every) == 0." + "time" :: "Output every that much coordinate time" +} "default" + +KEYWORD out2D_criterion "Criterion to select 2D ASCII output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "default" :: "Use IO::out_criterion" + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "divisor" :: "Output if (iteration % out_every) == 0." + "time" :: "Output every that much coordinate time" +} "default" + +KEYWORD out3D_criterion "Criterion to select 3D ASCII output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "default" :: "Use IO::out_criterion" + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "divisor" :: "Output if (iteration % out_every) == 0." + "time" :: "Output every that much coordinate time" +} "default" + + + +CCTK_INT out0D_every "How often to do 0D ASCII output, overrides out_every" STEERABLE = ALWAYS +{ + 1:* :: "Output every so many time steps" + -1:0 :: "No output" + -2 :: "Use IO::out_every" +} -2 + +CCTK_INT out1D_every "How often to do 1D ASCII output, overrides out_every" STEERABLE = ALWAYS +{ + 1:* :: "Output every so many time steps" + -1:0 :: "No output" + -2 :: "Use IO::out_every" +} -2 + +CCTK_INT out2D_every "How often to do 2D ASCII output, overrides out_every" STEERABLE = ALWAYS +{ + 1:* :: "Output every so many time steps" + -1:0 :: "No output" + -2 :: "Use IO::out_every" +} -2 + +CCTK_INT out3D_every "How often to do 3D ASCII output, overrides out_every" STEERABLE = ALWAYS +{ + 1:* :: "Output every so many time steps" + -1:0 :: "No output" + -2 :: "Use IO::out_every" +} -2 + + + +REAL out0D_dt "How often to do 0D ASCII output, overrides IO::out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 + +REAL out1D_dt "How often to do 1D ASCII output, overrides IO::out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 + +REAL out2D_dt "How often to do 2D ASCII output, overrides IO::out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 + +REAL out3D_dt "How often to do 3D ASCII output, overrides IO::out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 + + + +CCTK_INT out0D_point_xi "x-index (counting from 0) for 0D points" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 +CCTK_INT out0D_point_yi "y-index (counting from 0) for 0D points" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 +CCTK_INT out0D_point_zi "z-index (counting from 0) for 0D points" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_REAL out0D_point_x "x coordinate for 0D points" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 +CCTK_REAL out0D_point_y "y coordinate for 0D points" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 +CCTK_REAL out0D_point_z "z coordinate for 0D points" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + + + +BOOLEAN out1D_x "Do 1D IOASCII output in the x-direction" STEERABLE = ALWAYS +{ +} "yes" +BOOLEAN out1D_y "Do 1D IOASCII output in the y-direction" STEERABLE = ALWAYS +{ +} "yes" +BOOLEAN out1D_z "Do 1D IOASCII output in the z-direction" STEERABLE = ALWAYS +{ +} "yes" + +CCTK_INT out1D_xline_yi "y-index (counting from 0) for 1D lines in x-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 +CCTK_INT out1D_xline_zi "z-index (counting from 0) for 1D lines in x-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_INT out1D_yline_xi "x-index (counting from 0) for 1D lines in y-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 +CCTK_INT out1D_yline_zi "z-index (counting from 0) for 1D lines in y-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_INT out1D_zline_xi "x-index (counting from 0) for 1D lines in z-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 +CCTK_INT out1D_zline_yi "y-index (counting from 0) for 1D lines in z-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_REAL out1D_xline_y "y coordinate for 1D lines in x-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 +CCTK_REAL out1D_xline_z "z coordinate for 1D lines in x-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + +CCTK_REAL out1D_yline_x "x coordinate for 1D lines in y-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 +CCTK_REAL out1D_yline_z "z coordinate for 1D lines in y-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + +CCTK_REAL out1D_zline_x "x coordinate for 1D lines in z-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 +CCTK_REAL out1D_zline_y "y coordinate for 1D lines in z-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + + + +BOOLEAN out2D_xy "Do 2D IOASCII output in the xy-direction" STEERABLE = ALWAYS +{ +} "yes" +BOOLEAN out2D_xz "Do 2D IOASCII output in the xz-direction" STEERABLE = ALWAYS +{ +} "yes" +BOOLEAN out2D_yz "Do 2D IOASCII output in the yz-direction" STEERABLE = ALWAYS +{ +} "yes" + +CCTK_INT out2D_xyplane_zi "z-index (counting from 0) for 2D planes in xy-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_INT out2D_xzplane_yi "y-index (counting from 0) for 2D planes in xz-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_INT out2D_yzplane_xi "x-index (counting from 0) for 2D planes in yz-direction" STEERABLE = ALWAYS +{ + 0:* :: "" +} 0 + +CCTK_REAL out2D_xyplane_z "z coordinate for 2D planes in xy-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + +CCTK_REAL out2D_xzplane_y "y coordinate for 2D planes in xz-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + +CCTK_REAL out2D_yzplane_x "x coordinate for 2D planes in yz-direction" STEERABLE = ALWAYS +{ + *:* :: "" +} 0 + + + +# These parameters are here for historic reasons only. +# They might go away in the future. Do not use them. + +BOOLEAN out1D_d "do not use this parameter" STEERABLE = ALWAYS +{ +} "yes" diff --git a/Carpet/CarpetIOASCII/schedule.ccl b/Carpet/CarpetIOASCII/schedule.ccl new file mode 100644 index 000000000..9cdfdd7b1 --- /dev/null +++ b/Carpet/CarpetIOASCII/schedule.ccl @@ -0,0 +1,16 @@ +# Schedule definitions for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/schedule.ccl,v 1.8 2004/06/21 16:07:19 schnetter Exp $ + +storage: last_output_iteration last_output_time this_iteration + +schedule CarpetIOASCIIStartup at STARTUP after IOUtil_Startup +{ + LANG: C + OPTIONS: global +} "Startup routine" + +schedule CarpetIOASCIIInit at BASEGRID +{ + LANG: C + OPTIONS: global +} "Initialisation routine" diff --git a/Carpet/CarpetIOASCII/src/ioascii.cc b/Carpet/CarpetIOASCII/src/ioascii.cc new file mode 100644 index 000000000..eb28e27d0 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/ioascii.cc @@ -0,0 +1,1181 @@ +#include <assert.h> +#include <limits.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <fstream> +#include <iomanip> +#include <ostream> +#include <sstream> +#include <string> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "CactusBase/IOUtil/src/ioGH.h" + +#include "data.hh" +#include "dist.hh" +#include "gdata.hh" +#include "gf.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "ioascii.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.cc,v 1.77 2004/06/23 17:36:41 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetIOASCII_ioascii_cc); +} + + + +// That's a hack +namespace Carpet { + void UnsupportedVarType (const int vindex); +} + + + +namespace CarpetIOASCII { + + using namespace std; + using namespace Carpet; + + void SetFlag (int index, const char* optstring, void* arg); + + + + // Special output routines for complex numbers + +#ifdef CCTK_REAL4 + ostream& operator<< (ostream& os, const CCTK_COMPLEX8& val) + { + return os << CCTK_Cmplx8Real(val) << " " << CCTK_Cmplx8Imag(val); + } +#endif + +#ifdef CCTK_REAL8 + ostream& operator<< (ostream& os, const CCTK_COMPLEX16& val) + { + return os << CCTK_Cmplx16Real(val) << " " << CCTK_Cmplx16Imag(val); + } +#endif + +#ifdef CCTK_REAL16 + ostream& operator<< (ostream& os, const CCTK_COMPLEX32& val) + { + return os << CCTK_Cmplx32Real(val) << " " << CCTK_Cmplx32Imag(val); + } +#endif + + + + template<int D,int DD> + void WriteASCII (ostream& os, + const gdata<D>* const gfdata, + const bbox<int,D>& gfext, + const int vi, + const int time, + const vect<int,D>& org, + const vect<int,DD>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,D>& coord_lower, + const vect<CCTK_REAL,D>& coord_upper); + + + + int CarpetIOASCIIStartup() + { + IOASCII<0>::Startup(); + IOASCII<1>::Startup(); + IOASCII<2>::Startup(); + IOASCII<3>::Startup(); + return 0; + } + + + + void CarpetIOASCIIInit (CCTK_ARGUMENTS) + { + DECLARE_CCTK_ARGUMENTS; + + for (int d=0; d<4; ++d) { + this_iteration[d] = 0; + last_output_iteration[d] = 0; + last_output_time[d] = cctk_time; + } + } + + + + // Definition of static members + template<int outdim> int IOASCII<outdim>::GHExtension; + template<int outdim> int IOASCII<outdim>::IOMethod; + template<int outdim> vector<bool> IOASCII<outdim>::do_truncate; + template<int outdim> + vector<vector<vector<int> > > IOASCII<outdim>::last_output; + + + + template<int outdim> + int IOASCII<outdim>::Startup() + { + ostringstream msg; + msg << "AMR " << outdim << "D ASCII I/O provided by CarpetIOASCII"; + CCTK_RegisterBanner (msg.str().c_str()); + + ostringstream extension_name; + extension_name << "CarpetIOASCII_" << outdim << "D"; + GHExtension = CCTK_RegisterGHExtension(extension_name.str().c_str()); + CCTK_RegisterGHExtensionSetupGH (GHExtension, SetupGH); + + ostringstream method_name; + method_name << "IOASCII_" << outdim << "D"; + IOMethod = CCTK_RegisterIOMethod (method_name.str().c_str()); + CCTK_RegisterIOMethodOutputGH (IOMethod, OutputGH); + CCTK_RegisterIOMethodOutputVarAs (IOMethod, OutputVarAs); + CCTK_RegisterIOMethodTimeToOutput (IOMethod, TimeToOutput); + CCTK_RegisterIOMethodTriggerOutput (IOMethod, TriggerOutput); + + return 0; + } + + + + template<int outdim> + void* IOASCII<outdim> + ::SetupGH (tFleshConfig* const fc, const int convLevel, cGH* const cgh) + { + DECLARE_CCTK_PARAMETERS; + const void *dummy; + + dummy = &fc; + dummy = &convLevel; + dummy = &cgh; + dummy = &dummy; + + // Truncate all files if this is not a restart + do_truncate.resize(CCTK_NumVars(), true); + + // No iterations have yet been output + last_output.resize(mglevels); + for (int ml=0; ml<mglevels; ++ml) { + last_output.at(ml).resize(maxreflevels); + for (int rl=0; rl<maxreflevels; ++rl) { + last_output.at(ml).at(rl).resize(CCTK_NumVars(), -1); + } + } + + // We register only once, ergo we get only one handle. We store + // that statically, so there is no need to pass anything to + // Cactus. + return 0; + } + + + + template<int outdim> + int IOASCII<outdim> + ::OutputGH (const cGH* const cgh) + { + for (int vindex=0; vindex<CCTK_NumVars(); ++vindex) { + if (TimeToOutput(cgh, vindex)) { + TriggerOutput(cgh, vindex); + } + } + return 0; + } + + + + template<int outdim> + int IOASCII<outdim> + ::OutputVarAs (const cGH* const cgh, + const char* const varname, const char* const alias) + { + DECLARE_CCTK_PARAMETERS; + + assert (is_level_mode()); + + const int n = CCTK_VarIndex(varname); + if (n<0) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Variable \"%s\" does not exist", varname); + return -1; + } + assert (n>=0 && n<CCTK_NumVars()); + const int group = CCTK_GroupIndexFromVarI (n); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0 && n0<CCTK_NumVars()); + const int var = n - n0; + assert (var>=0 && var<CCTK_NumVarsInGroupI(group)); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>=1); + + // Check for storage + if (! CCTK_QueryGroupStorageI(cgh, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot output variable \"%s\" because it has no storage", + varname); + return 0; + } + + const int grouptype = CCTK_GroupTypeI(group); + switch (grouptype) { + case CCTK_SCALAR: + case CCTK_ARRAY: + assert (do_global_mode); + break; + case CCTK_GF: + /* do nothing */ + break; + default: + assert (0); + } + const int rl = grouptype == CCTK_GF ? reflevel : 0; + + const int groupdim = CCTK_GroupDimI(group); + if (outdim > groupdim) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot produce %dD ASCII output file \"%s\" for variable \"%s\" because it has only %d dimensions", outdim, alias, varname, groupdim); + return -1; + } + assert (outdim <= groupdim); + + // Get grid hierarchy extentsion from IOUtil + const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cgh, "IO"); + assert (iogh); + + // Create the output directory + const char* myoutdir = GetStringParameter("out%dD_dir"); + if (CCTK_EQUALS(myoutdir, "")) { + myoutdir = out_dir; + } + if (CCTK_MyProc(cgh)==0) { + CCTK_CreateDirectory (0755, myoutdir); + } + + // Loop over all direction combinations + vect<int,outdim> dirs (0); + + bool done; + do { + + // Output each combination only once + bool ascending = true; + for (int d1=0; d1<outdim; ++d1) { + for (int d2=d1+1; d2<outdim; ++d2) { + ascending = ascending && dirs[d1] < dirs[d2]; + } + } + + // Skip output if the dimensions are not ascending + if (ascending) { + + // If this output is desired at all + bool desired; + switch (outdim) { + case 0: + // Output is always desired (if switched on) + desired = true; + break; + case 1: + switch (dirs[0]) { + case 0: + desired = out1D_x; + break; + case 1: + desired = out1D_y; + break; + case 2: + desired = out1D_z; + break; + default: + assert (0); + } + break; + case 2: + if (dirs[0]==0 && dirs[1]==1) { + desired = out2D_xy; + } else if (dirs[0]==0 && dirs[1]==2) { + desired = out2D_xz; + } else if (dirs[0]==1 && dirs[1]==2) { + desired = out2D_yz; + } else { + assert (0); + } + break; + case 3: + // Output is always desired (if switched on) + desired = true; + break; + default: + assert (0); + } + + // Skip output if not desired + if (desired) { + + // Traverse all maps on this refinement and multigrid level + BEGIN_MAP_LOOP(cgh, grouptype) { + + // Find the output offset + ivect offset(0); + if (grouptype == CCTK_GF) { + switch (outdim) { + case 0: + offset[0] = GetGridOffset + (cgh, 1, + "out%dD_point_xi", /*"out_point_xi"*/ NULL, + "out%dD_point_x", /*"out_point_x"*/ NULL, + /*out_point_x*/ 0.0); + offset[1] = GetGridOffset + (cgh, 2, + "out%dD_point_yi", /*"out_point_yi"*/ NULL, + "out%dD_point_y", /*"out_point_y"*/ NULL, + /*out_point_y*/ 0.0); + offset[2] = GetGridOffset + (cgh, 3, + "out%dD_point_zi", /*"out_point_zi"*/ NULL, + "out%dD_point_z", /*"out_point_z"*/ NULL, + /*out_point_z*/ 0.0); + break; + case 1: + switch (dirs[0]) { + case 0: + offset[1] = GetGridOffset (cgh, 2, + "out%dD_xline_yi", "out_xline_yi", + "out%dD_xline_y", "out_xline_y", + out_xline_y); + offset[2] = GetGridOffset (cgh, 3, + "out%dD_xline_zi", "out_xline_zi", + "out%dD_xline_z", "out_xline_z", + out_xline_z); + break; + case 1: + offset[0] = GetGridOffset (cgh, 1, + "out%dD_yline_xi", "out_yline_xi", + "out%dD_yline_x", "out_yline_x", + out_yline_x); + offset[2] = GetGridOffset (cgh, 3, + "out%dD_yline_zi", "out_yline_zi", + "out%dD_yline_z", "out_yline_z", + out_yline_z); + break; + case 2: + offset[0] = GetGridOffset (cgh, 1, + "out%dD_zline_xi", "out_zline_xi", + "out%dD_zline_x", "out_zline_x", + out_zline_x); + offset[1] = GetGridOffset (cgh, 2, + "out%dD_zline_yi", "out_zline_yi", + "out%dD_zline_y", "out_zline_y", + out_zline_y); + break; + default: + assert (0); + } + break; + case 2: + if (dirs[0]==0 && dirs[1]==1) { + offset[2] = GetGridOffset + (cgh, 3, + "out%dD_xyplane_zi", "out_xyplane_zi", + "out%dD_xyplane_z", "out_xyplane_z", + out_xyplane_z); + } else if (dirs[0]==0 && dirs[1]==2) { + offset[1] = GetGridOffset + (cgh, 2, + "out%dD_xzplane_yi", "out_xzplane_yi", + "out%dD_xzplane_y", "out_xzplane_y", + out_xzplane_y); + } else if (dirs[0]==1 && dirs[1]==2) { + offset[0] = GetGridOffset + (cgh, 1, + "out%dD_yzplane_xi", "out_yzplane_xi", + "out%dD_yzplane_x", "out_yzplane_x", + out_yzplane_x); + } else { + assert (0); + } + break; + case 3: + // The offset doesn't matter in this case + break; + default: + assert (0); + } + } // if grouptype is GF + + ofstream file; + if (CCTK_MyProc(cgh)==0) { + + // Invent a file name + ostringstream filenamebuf; + if (new_filename_scheme) { + filenamebuf << myoutdir << "/" << alias << "."; + if (maps > 1) { + filenamebuf << Carpet::map << "."; + } + for (int d=0; d<outdim; ++d) { + const char* const coords = "xyz"; + filenamebuf << coords[dirs[d]]; + } +// The offsets differ per level +// for (int dd=0; dd<groupdim; ++dd) { +// bool print_dir = true; +// for (int d=0; d<outdim; ++d) { +// print_dir = print_dir && dirs[d] != dd; +// } +// if (print_dir) { +// filenamebuf << "." << offset[dd]; +// } +// } + filenamebuf << ".asc"; + } else { + filenamebuf << myoutdir << "/" << alias << "."; + if (maps > 1) { + filenamebuf << Carpet::map << "."; + } + for (int d=0; d<outdim; ++d) { + assert (dirs[d]>=0 && dirs[d]<3); + const char* const coords = "xyz"; + filenamebuf << coords[dirs[d]]; + } + const char* const suffixes = "plpv"; + filenamebuf << suffixes[outdim]; + } + // we need a persistent temporary here + string filenamestr = filenamebuf.str(); + const char* const filename = filenamestr.c_str(); + + // If this is the first time, then write a nice header + if (do_truncate.at(n)) { + struct stat fileinfo; + if (! iogh->recovered + || stat(filename, &fileinfo)!=0) { + file.open (filename, ios::out | ios::trunc); + if (! file.good()) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not open output file \"%s\" for variable \"%s\"", + filename, varname); + } + assert (file.good()); + file << "# " << varname; + for (int d=0; d<outdim; ++d) { + file << " " << "xyz"[dirs[d]]; + } + file << " (" << alias << ")" << endl; + file << "#" << endl; + assert (file.good()); + } + } + + // Open the file + if (! file.is_open()) { + file.open (filename, ios::out | ios::app); + assert (file.good()); + } + + file << setprecision(out_precision); + assert (file.good()); + + } // if on the root processor + + // Traverse and components on this multigrid and + // refinement level and map + BEGIN_COMPONENT_LOOP(cgh, grouptype) { + + const ggf<dim>* ff = 0; + + assert (var < (int)arrdata.at(group).at(Carpet::map).data.size()); + ff = (ggf<dim>*)arrdata.at(group).at(Carpet::map).data.at(var); + + const int mintl = output_all_timelevels ? 1-num_tl : 0; + const int maxtl = 0; + for (int tl=mintl; tl<=maxtl; ++tl) { + + const gdata<dim>* const data + = (*ff) (tl, rl, component, mglevel); + ibbox ext = data->extent(); + + ivect lo = ext.lower(); + ivect hi = ext.upper(); + ivect str = ext.stride(); + + // Ignore ghost zones if desired + for (int d=0; d<dim; ++d) { + bool output_lower_ghosts + = cgh->cctk_bbox[2*d] ? out3D_outer_ghosts : out3D_ghosts; + bool output_upper_ghosts + = cgh->cctk_bbox[2*d+1] ? out3D_outer_ghosts : out3D_ghosts; + + if (! output_lower_ghosts) { + lo[d] += cgh->cctk_nghostzones[d] * str[d]; + } + if (! output_upper_ghosts) { + hi[d] -= cgh->cctk_nghostzones[d] * str[d]; + } + } + ext = ibbox(lo,hi,str); + + // coordinates + const CCTK_REAL coord_time = cgh->cctk_time; + rvect global_lower; + rvect coord_delta; + if (grouptype == CCTK_GF) { + for (int d=0; d<dim; ++d) { + global_lower[d] = cgh->cctk_origin_space[d]; + coord_delta[d] = cgh->cctk_delta_space[d] / maxreflevelfact; + } + } else { + for (int d=0; d<dim; ++d) { + global_lower[d] = 0.0; + coord_delta[d] = 1.0; + } + } + const rvect coord_lower + = global_lower + coord_delta * rvect(lo); + const rvect coord_upper + = global_lower + coord_delta * rvect(hi); + + ivect offset1; + if (grouptype == CCTK_GF) { + const ibbox& baseext = vdd.at(Carpet::map)->bases.at(0).at(mglevel).exterior; + offset1 = baseext.lower() + offset * ext.stride(); + } else { + offset1 = offset * ext.stride(); + } + for (int d=0; d<outdim; ++d) { + offset1[dirs[d]] = ext.lower()[dirs[d]]; + } + + WriteASCII (file, data, ext, n, cgh->cctk_iteration, + offset1, dirs, + rl, mglevel, Carpet::map, component, tl, + coord_time, coord_lower, coord_upper); + + // Append EOL after every component + if (CCTK_MyProc(cgh)==0) { + if (separate_components) { + assert (file.good()); + file << endl; + } + } + assert (file.good()); + + } // for tl + + } END_COMPONENT_LOOP; + + // Append EOL after every complete set of components + if (CCTK_MyProc(cgh)==0) { + if (separate_grids) { + assert (file.good()); + file << endl; + } + file.close(); + assert (file.good()); + } + + assert (! file.is_open()); + + } END_MAP_LOOP; + + } // if (desired) + + } // if (ascending) + + // Next direction combination + done = true; + for (int d=0; d<outdim; ++d) { + ++dirs[d]; + if (dirs[d]<groupdim) { + done = false; + break; + } + dirs[d] = 0; + } + + } while (! done); // all directions + + // Don't truncate again + do_truncate.at(n) = false; + + return 0; + } + + + + template<int outdim> + int IOASCII<outdim> + ::TimeToOutput (const cGH* const cctkGH, const int vindex) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + assert (vindex>=0 && vindex<CCTK_NumVars()); + + + + const int grouptype = CCTK_GroupTypeFromVarI(vindex); + switch (grouptype) { + case CCTK_SCALAR: + case CCTK_ARRAY: + if (! do_global_mode) return 0; + break; + case CCTK_GF: + // do nothing + break; + default: + assert (0); + } + + + + // check whether to output at this iteration + bool output_this_iteration; + + const char* myoutcriterion = GetStringParameter("out%dD_criterion"); + if (CCTK_EQUALS(myoutcriterion, "default")) { + myoutcriterion = out_criterion; + } + + if (CCTK_EQUALS (myoutcriterion, "never")) { + + // Never output + output_this_iteration = false; + + } else if (CCTK_EQUALS (myoutcriterion, "iteration")) { + + int myoutevery = GetIntParameter("out%dD_every"); + if (myoutevery == -2) { + myoutevery = out_every; + } + if (myoutevery <= 0) { + // output is disabled + output_this_iteration = false; + } else if (cctk_iteration == this_iteration[outdim]) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_iteration + >= last_output_iteration[outdim] + myoutevery) { + // it is time for the next output + output_this_iteration = true; + last_output_iteration[outdim] = cctk_iteration; + this_iteration[outdim] = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else if (CCTK_EQUALS (myoutcriterion, "divisor")) { + + int myoutevery = GetIntParameter("out%dD_every"); + if (myoutevery == -2) { + myoutevery = out_every; + } + if (myoutevery <= 0) { + // output is disabled + output_this_iteration = false; + } else if (cctk_iteration % myoutevery == 0) { + // we already decided to output this iteration + output_this_iteration = true; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else if (CCTK_EQUALS (myoutcriterion, "time")) { + + CCTK_REAL myoutdt = GetRealParameter("out%dD_dt"); + if (myoutdt == -2) { + myoutdt = out_dt; + } + if (myoutdt < 0) { + // output is disabled + output_this_iteration = false; + } else if (myoutdt == 0) { + // output all iterations + output_this_iteration = true; + } else if (cctk_iteration == this_iteration[outdim]) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_time / cctk_delta_time + >= (last_output_time[outdim] + myoutdt) / cctk_delta_time - 1.0e-12) { + // it is time for the next output + output_this_iteration = true; + last_output_time[outdim] = cctk_time; + this_iteration[outdim] = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else { + + assert (0); + + } // select output criterion + + if (! output_this_iteration) return 0; + + + + // check which variables to output + static vector<bool> output_variables; + static int output_variables_iteration = -1; + + if (cctk_iteration > output_variables_iteration) { + output_variables.resize (CCTK_NumVars()); + + const char* const varlist = GetStringParameter("out%dD_vars"); + if (CCTK_TraverseString (varlist, SetFlag, &output_variables, + CCTK_GROUP_OR_VAR) < 0) + { + int abort_on_error = output_variables_iteration < 0 && + strict_io_parameter_check; + CCTK_VWarn (abort_on_error ? 0 : 1, __LINE__, __FILE__,CCTK_THORNSTRING, + "error while parsing parameter 'IOASCII::out%dD_vars'", + outdim); + } + + output_variables_iteration = cctk_iteration; + } + + if (! output_variables.at(vindex)) return 0; + + + + if (last_output.at(mglevel).at(reflevel).at(vindex) == cctk_iteration) { + // Has already been output during this iteration + char* varname = CCTK_FullName(vindex); + CCTK_VWarn (5, __LINE__, __FILE__, CCTK_THORNSTRING, + "Skipping output for variable \"%s\", because this variable " + "has already been output during the current iteration -- " + "probably via a trigger during the analysis stage", + varname); + free (varname); + return 0; + } + + assert (last_output.at(mglevel).at(reflevel).at(vindex) < cctk_iteration); + + // Should be output during this iteration + return 1; + } + + + + template<int outdim> + int IOASCII<outdim> + ::TriggerOutput (const cGH* const cgh, const int vindex) + { + assert (vindex>=0 && vindex<CCTK_NumVars()); + + char* varname = CCTK_FullName(vindex); + const int retval = OutputVarAs (cgh, varname, CCTK_VarName(vindex)); + free (varname); + + last_output.at(mglevel).at(reflevel).at(vindex) = cgh->cctk_iteration; + + return retval; + } + + + + template<int outdim> + int IOASCII<outdim> + ::GetGridOffset (const cGH* const cgh, const int dir, + const char* const itempl, const char* const iglobal, + const char* const ctempl, const char* const cglobal, + const CCTK_REAL cfallback) + { + // First choice: explicit coordinate + char cparam[1000]; + snprintf (cparam, sizeof cparam, ctempl, outdim); + const int ncparam = CCTK_ParameterQueryTimesSet (cparam, CCTK_THORNSTRING); + assert (ncparam >= 0); + if (ncparam > 0) { + int ptype; + const CCTK_REAL* const pcoord + = ((const CCTK_REAL*)CCTK_ParameterGet + (cparam, CCTK_THORNSTRING, &ptype)); + assert (pcoord); + const CCTK_REAL coord = *pcoord; + assert (ptype == PARAMETER_REAL); + return CoordToOffset (cgh, dir, coord, 0); + } + + // Second choice: explicit index + char iparam[1000]; + snprintf (iparam, sizeof iparam, itempl, outdim); + const int niparam = CCTK_ParameterQueryTimesSet (iparam, CCTK_THORNSTRING); + assert (niparam >= 0); + if (niparam > 0) { + int ptype; + const int* const pindex + = (const int*)CCTK_ParameterGet (iparam, CCTK_THORNSTRING, &ptype); + assert (pindex); + const int index = *pindex; + assert (ptype == PARAMETER_INT); + return index; + } + + // Third choice: explicit global coordinate + const char* iothorn = CCTK_ImplementationThorn ("IO"); + assert (iothorn); + if (cglobal) { + const int ncglobal = CCTK_ParameterQueryTimesSet (cglobal, iothorn); + assert (ncglobal >= 0); + if (ncglobal > 0) { + int ptype; + const CCTK_REAL* const pcoord + = (const CCTK_REAL*)CCTK_ParameterGet (cglobal, iothorn, &ptype); + assert (pcoord); + const CCTK_REAL coord = *pcoord; + assert (ptype == PARAMETER_REAL); + return CoordToOffset (cgh, dir, coord, 0); + } + } + + // Fourth choice: explicit global index + if (iglobal) { + const int niglobal = CCTK_ParameterQueryTimesSet (iglobal, iothorn); + assert (niglobal >= 0); + if (niglobal > 0) { + int ptype; + const int* const pindex + = (const int*)CCTK_ParameterGet (iglobal, iothorn, &ptype); + assert (pindex); + const int index = *pindex; + assert (ptype == PARAMETER_INT); + return index; + } + } + + // Fifth choice: default coordinate + return CoordToOffset (cgh, dir, cfallback, 0); + } + + + + template<int outdim> + int IOASCII<outdim> + ::CoordToOffset (const cGH* cgh, const int dir, const CCTK_REAL coord, + const int ifallback) + { + assert (dir>=1 && dir<=dim); + + assert (mglevel!=-1 && reflevel!=-1 && Carpet::map!=-1); + + const CCTK_REAL delta = cgh->cctk_delta_space[dir-1] / cgh->cctk_levfac[dir-1]; + const CCTK_REAL lower = cgh->cctk_origin_space[dir-1]; +#if 0 + const int npoints = cgh->cctk_gsh[dir-1]; + const CCTK_REAL upper = lower + (npoints-1) * delta; +#endif + + const CCTK_REAL rindex = (coord - lower) / delta; + int cindex = (int)floor(rindex + 0.75); + +#if 0 + if (cindex<0 || cindex>=npoints) { + cindex = ifallback; + + assert (dir>=1 && dir<=3); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "The specified coordinate value %g for the %c-direction is not within the grid range [%g,%g] on convergence level %d, refinement level %d, map %d; using %g instead", + coord, "xyz"[dir-1], lower, upper, + mglevel, reflevel, Carpet::map, lower + delta * cindex); + } + + assert (cindex>=0 && cindex<npoints); +#else + const void *dummy; + dummy = &ifallback; + dummy = &dummy; +#endif + + return cindex; + } + + + + template<int outdim> + const char* IOASCII<outdim> + ::GetStringParameter (const char* const parametertemplate) + { + char parametername[1000]; + snprintf (parametername, sizeof parametername, parametertemplate, outdim); + int ptype; + const char* const* const ppval = (const char* const*)CCTK_ParameterGet + (parametername, CCTK_THORNSTRING, &ptype); + assert (ppval); + const char* const pval = *ppval; + assert (ptype == PARAMETER_STRING || ptype == PARAMETER_KEYWORD); + return pval; + } + + + + template<int outdim> + CCTK_INT IOASCII<outdim> + ::GetIntParameter (const char* const parametertemplate) + { + char parametername[1000]; + snprintf (parametername, sizeof parametername, parametertemplate, outdim); + int ptype; + const CCTK_INT* const ppval + = (const CCTK_INT*)CCTK_ParameterGet + (parametername, CCTK_THORNSTRING, &ptype); + assert (ppval); + assert (ptype == PARAMETER_INT || ptype == PARAMETER_BOOLEAN); + const CCTK_INT pval = *ppval; + return pval; + } + + + + template<int outdim> + CCTK_REAL IOASCII<outdim> + ::GetRealParameter (const char* const parametertemplate) + { + char parametername[1000]; + snprintf (parametername, sizeof parametername, parametertemplate, outdim); + int ptype; + const CCTK_REAL* const ppval + = (const CCTK_REAL*)CCTK_ParameterGet + (parametername, CCTK_THORNSTRING, &ptype); + assert (ppval); + assert (ptype == PARAMETER_REAL); + const CCTK_REAL pval = *ppval; + return pval; + } + + + + void SetFlag (int index, const char* optstring, void* arg) + { + optstring = optstring; + vector<bool>& flags = *(vector<bool>*)arg; + flags.at(index) = true; + } + + + + // Output + template<int D,int DD> + void WriteASCII (ostream& os, + const gdata<D>* const gfdata, + const bbox<int,D>& gfext, + const int vi, + const int time, + const vect<int,D>& org, + const vect<int,DD>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,D>& coord_lower, + const vect<CCTK_REAL,D>& coord_upper) + { + assert (DD<=D); + + if (gfdata->proc()==0) { + // output on processor 0 + + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == 0) { + + assert (os.good()); + + os << "# iteration " << time << endl + << "# refinement level " << rl + << " multigrid level " << ml + << " map " << m + << " component " << c + << " time level " << tl + << endl + << "# column format: it\ttl rl c ml\t"; + assert (D>=1 && D<=3); + const char* const coords = "xyz"; + for (int d=0; d<D-1; ++d) os << "i" << coords[d] << " "; os << "i" << coords[D-1]; + os << "\ttime\t"; + for (int d=0; d<D-1; ++d) os << coords[d] << " "; os << coords[D-1]; + os << "\tdata" << endl; + + const vect<int,DD> lo = gfext.lower()[dirs]; + const vect<int,DD> up = gfext.upper()[dirs]; + const vect<int,DD> str = gfext.stride()[dirs]; + const bbox<int,DD> ext(lo,up,str); + + // Check whether the output origin is contained in the extent + // of the data that should be output + ivect org1(org); + for (int d=0; d<DD; ++d) org1[dirs[d]] = ext.lower()[d]; + if (gfext.contains(org1)) { + + typename bbox<int,DD>::iterator it=ext.begin(); + do { + + ivect index(org); + for (int d=0; d<DD; ++d) index[dirs[d]] = (*it)[d]; + os << time << "\t" << tl << " " << rl << " " << c << " " << ml + << "\t"; + for (int d=0; d<D-1; ++d) os << index[d] << " "; os << index[D-1]; + os << "\t" << coord_time << "\t"; + for (int d=0; d<D; ++d) { + assert (gfext.upper()[d] - gfext.lower()[d] >= 0); + if (gfext.upper()[d] - gfext.lower()[d] == 0) { + os << coord_lower[d]; + } else { + os << (coord_lower[d] + (index[d] - gfext.lower()[d]) + * (coord_upper[d] - coord_lower[d]) + / (gfext.upper()[d] - gfext.lower()[d])); + } + if (d != D-1) os << " "; + } + os << "\t"; + switch (CCTK_VarTypeI(vi)) { +#define TYPECASE(N,T) \ + case N: \ + os << (*(const data<T,D>*)gfdata)[index]; \ + break; +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE + default: + UnsupportedVarType(vi); + } + os << endl; + + ++it; + + for (int d=0; d<DD; ++d) { + if ((*it)[d]!=(*ext.end())[d]) break; + os << endl; + } + + } while (it!=ext.end()); + + } else { + + os << "#" << endl; + + } // if ! ext contains org + + assert (os.good()); + + } + + } else { + // copy to processor 0 and output there + + gdata<D>* const tmp = gfdata->make_typed(vi); + tmp->allocate(gfdata->extent(), 0); + for (comm_state<dim> state; !state.done(); state.step()) { + tmp->copy_from (state, gfdata, gfdata->extent()); + } + WriteASCII (os, tmp, gfext, vi, time, org, dirs, rl, ml, m, c, tl, + coord_time, coord_lower, coord_upper); + delete tmp; + + } + } + + + + + + // Explicit instantiation for all output dimensions + template class IOASCII<0>; + template class IOASCII<1>; + template class IOASCII<2>; + template class IOASCII<3>; + + template + void WriteASCII (ostream& os, + const gdata<3>* const gfdata, + const bbox<int,3>& gfext, + const int vi, + const int time, + const vect<int,3>& org, + const vect<int,0>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,3>& coord_lower, + const vect<CCTK_REAL,3>& coord_upper); + + template + void WriteASCII (ostream& os, + const gdata<3>* const gfdata, + const bbox<int,3>& gfext, + const int vi, + const int time, + const vect<int,3>& org, + const vect<int,1>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,3>& coord_lower, + const vect<CCTK_REAL,3>& coord_upper); + + template + void WriteASCII (ostream& os, + const gdata<3>* const gfdata, + const bbox<int,3>& gfext, + const int vi, + const int time, + const vect<int,3>& org, + const vect<int,2>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,3>& coord_lower, + const vect<CCTK_REAL,3>& coord_upper); + + template + void WriteASCII (ostream& os, + const gdata<3>* const gfdata, + const bbox<int,3>& gfext, + const int vi, + const int time, + const vect<int,3>& org, + const vect<int,3>& dirs, + const int rl, + const int ml, + const int m, + const int c, + const int tl, + const CCTK_REAL coord_time, + const vect<CCTK_REAL,3>& coord_lower, + const vect<CCTK_REAL,3>& coord_upper); + +} // namespace CarpetIOASCII diff --git a/Carpet/CarpetIOASCII/src/ioascii.h b/Carpet/CarpetIOASCII/src/ioascii.h new file mode 100644 index 000000000..60c8b9e02 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/ioascii.h @@ -0,0 +1,22 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.h,v 1.7 2004/05/21 18:10:37 schnetter Exp $ */ + +#ifndef CARPETIOASCII_H +#define CARPETIOASCII_H + +#include "cctk_Arguments.h" + +#ifdef __cplusplus +namespace CarpetIOASCII { + extern "C" { +#endif + + /* Scheduled functions */ + int CarpetIOASCIIStartup (void); + void CarpetIOASCIIInit (CCTK_ARGUMENTS); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetIOASCII */ +#endif + +#endif /* !defined(CARPETIOASCII_H) */ diff --git a/Carpet/CarpetIOASCII/src/ioascii.hh b/Carpet/CarpetIOASCII/src/ioascii.hh new file mode 100644 index 000000000..72ea5b97b --- /dev/null +++ b/Carpet/CarpetIOASCII/src/ioascii.hh @@ -0,0 +1,73 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/ioascii.hh,v 1.16 2004/04/03 12:38:12 schnetter Exp $ + +#ifndef CARPETIOASCII_HH +#define CARPETIOASCII_HH + +#include <vector> + +#include "cctk.h" + +#include "ioascii.h" + + + +namespace CarpetIOASCII { + + using namespace std; + + + + // Everything is a class template, so that it can easily be + // instantiated for all output dimensions. + + template<int outdim> + struct IOASCII { + + // handle from CCTK_RegisterGHExtension + static int GHExtension; + + // handles from CCTK_RegisterIOMethed + static int IOMethod; + + + + // Do truncate the output files for a variable + static vector<bool> do_truncate; + + // Last iteration on which a refinement level of a variable was + // output (INT_MIN for none) + static vector<vector<vector<int> > > last_output; // [ml][rl][var] + + + + // scheduled functions + static int Startup(); + + + + // registered functions + + static void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cgh); + + static int OutputGH (const cGH* cgh); + static int OutputVarAs (const cGH* cgh, + const char* varname, const char* alias); + static int TimeToOutput (const cGH* cgh, int vindex); + static int TriggerOutput (const cGH* cgh, int vindex); + + static int GetGridOffset (const cGH* cgh, int dir, + const char* itempl, const char* iglobal, + const char* ctempl, const char* cglobal, + CCTK_REAL cfallback); + static int CoordToOffset (const cGH* cgh, int dir, CCTK_REAL coord, + int ifallback); + + static const char* GetStringParameter (const char* parametertemplate); + static CCTK_INT GetIntParameter (const char* parametertemplate); + static CCTK_REAL GetRealParameter (const char* parametertemplate); + + }; // struct IOASCII + +} // namespace CarpetIOASCII + +#endif // !defined(CARPETIOASCII_HH) diff --git a/Carpet/CarpetIOASCII/src/make.code.defn b/Carpet/CarpetIOASCII/src/make.code.defn new file mode 100644 index 000000000..e9b78bce0 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/make.code.defn @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/make.code.defn,v 1.1 2001/03/01 13:40:10 eschnett Exp $ + +# Source files in this directory +SRCS = ioascii.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetIOASCII/src/make.configuration.defn b/Carpet/CarpetIOASCII/src/make.configuration.defn new file mode 100644 index 000000000..939aee820 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/make.configuration.defn @@ -0,0 +1,4 @@ +# Main make.configuration.defn file for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/make.configuration.defn,v 1.1 2002/09/30 15:36:28 schnetter Exp $ + +ALL_UTILS += carpet2sdf carpet2xgraph diff --git a/Carpet/CarpetIOASCII/src/make.configuration.deps b/Carpet/CarpetIOASCII/src/make.configuration.deps new file mode 100644 index 000000000..686ad3112 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/make.configuration.deps @@ -0,0 +1,53 @@ +# Main make.configuration.deps file for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOASCII/src/make.configuration.deps,v 1.1 2002/09/30 15:36:28 schnetter Exp $ + + + +SDF_INCDIRS := $(HOME)/include +SDF_LIBDIRS := $(HOME)/lib +SDF_LIBS := rnpl mfhdf df jpeg z vsso sv m + + + +# Compile + +$(BUILD_DIR)$(DIRSEP)CarpetIOASCII$(DIRSEP)%.o: $(PACKAGE_DIR)$(DIRSEP)Carpet$(DIRSEP)CarpetIOASCII$(DIRSEP)src$(DIRSEP)util$(DIRSEP)%.c + @echo "Compiling $<" + -$(MKDIR) $(MKDIRFLAGS) $(BUILD_DIR)$(DIRSEP)CarpetIOASCII 2> /dev/null + $(CC) $< -DCCODE $(CFLAGS) -I$(CONFIG) -I$(BINDINGS_DIR)$(DIRSEP)include -I$(FLESH_DIR)$(DIRSEP)include -I$(CCTK_HOME)$(DIRSEP)arrangement $(CCOMPILEONLY)$(OPTIONSEP)$@ + + + +# Link + +$(UTIL_DIR)$(DIRSEP)%: $(BUILD_DIR)$(DIRSEP)CarpetIOASCII$(DIRSEP)%.o + @echo "Creating $* in $(UTIL_DIR) from $<" + -$(MKDIR) $(MKDIRFLAGS) $(UTIL_DIR) 2> /dev/null + $(LD) $(CREATEEXE)$(OPTIONSEP)$@ $(DEBUG_LD) $(LDFLAGS) $(EXTRAFLAGS) $< + + + +# Special versions for carpet2sdf: + +# Compile + +$(BUILD_DIR)$(DIRSEP)CarpetIOASCII$(DIRSEP)carpet2sdf.o: $(PACKAGE_DIR)$(DIRSEP)Carpet$(DIRSEP)CarpetIOASCII$(DIRSEP)src$(DIRSEP)util$(DIRSEP)carpet2sdf.c + @echo "Compiling carpet2sdf" + -$(MKDIR) $(MKDIRFLAGS) $(BUILD_DIR)$(DIRSEP)CarpetIOASCII 2> /dev/null + -$(CC) $< -DCCODE $(CFLAGS) -I$(CONFIG) -I$(BINDINGS_DIR)$(DIRSEP)include -I$(FLESH_DIR)$(DIRSEP)include -I$(CCTK_HOME)$(DIRSEP)arrangements -I$(SDF_INCDIRS:%=-I%) $(CCOMPILEONLY)$(OPTIONSEP)$@ + + + +# Link + +$(UTIL_DIR)$(DIRSEP)carpet2sdf: $(BUILD_DIR)$(DIRSEP)CarpetIOASCII$(DIRSEP)carpet2sdf.o + @echo "Creating $* in $(UTIL_DIR) from $<" + -$(MKDIR) $(MKDIRFLAGS) $(UTIL_DIR) 2> /dev/null + -$(LD) $(CREATEEXE)$(OPTIONSEP)$@ $(DEBUG_LD) $(LDFLAGS) $(EXTRAFLAGS) $< $(SDF_LIBDIRS:%=-L%) $(SDF_LIBS:%=-l%) + @if [ ! -e $(UTIL_DIR)$(DIRSEP)/carpet2sdf ]; then \ + echo "*************************************"; \ + echo "Warning: could not install carpet2sdf"; \ + echo "*************************************"; \ + echo "echo \"carpet2sdf could not be installed\"" > $@; \ + chmod a+x $@; \ + fi diff --git a/Carpet/CarpetIOASCII/src/util/Carpet2ygraph.pl b/Carpet/CarpetIOASCII/src/util/Carpet2ygraph.pl new file mode 100755 index 000000000..0f49aaf01 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/util/Carpet2ygraph.pl @@ -0,0 +1,121 @@ +#! /usr/bin/perl -s +# +# Blame Ian Hawke for not checking that Scott had already written a C +# program to do this add so writing a perl version instead +# +# Given an output file in CarpetIOASCII 1d format, strip to ygraph format. +# The arguments should be direction (x=0,y=1,z=2) and filename. +# Output is to a file. Only the base name should be given. +# The base will be appended with _<level>.xg +# +# Example: +# +# Carpet2ygraph.pl 0 alp.xl alp_x +# +# produces alp_x_<d>.xg where <d> is the refinement level. +# +# The headers of the Carpet files are just copied with the addition of +# the correct time for ygraph, and the different comment marker. +# +# This script is a much altered version of Tom Goodale's convergence +# testing scripts. +# + +use FileHandle; + +if(@ARGV != 3) +{ + print "Usage: $0 direction <Inputfile> <Outputfile> \n"; + exit; +} + +open(CARPETFILE, "<$ARGV[1]") || die "Unable to find file \"$ARGV[1]\"."; + +# +# Open the output file for the base grid. +# + +$file = $ARGV[2]."_0.xg"; +my $fh = new FileHandle(">$file") || die "Unable to open file \"$file\"."; +push(@outputfilelist,$fh); + +# +# Find the correct column for the spatial coordinate; requires a magic number +# + +$direction = $ARGV[0]+9; + +$flag = 0; +$timeset = 0; +$refinementlevel = 0; +$componentflag[0] = 0; +while (<CARPETFILE>) +{ + $line = $_; + + if(/^\#/) # The line is a header comment + { + if ($flag==1) # It's a new level and there is data to output + { + $fh = $outputfilelist[$refinementlevel]; + print $fh @outputdata; + @outputdata=("\n"); + $flag = 0; + } + if ($line =~ /refinement level ([0-9])/) # Line gives ref. level + { + $refinementlevel = $1; + $line =~ /component ([0-9+])/; + $componentflag[$refinementlevel] = $1; # Which component? + + # + # If no file exists for this refinement level, + # open and add filehandle to array + # + + if ($refinementlevel > $#outputfilelist) + { + for ($i = $#outputfileflist+1; $i < $refinementlevel+1; $i++) + { + $file = $ARGV[2]."_".$i.".xg"; + my $fh = new FileHandle(">$file") || die "Unable to open file \"$file\"."; + $outputfilelist[$i]=$fh; + } + } + } + # Only output the headers if this is the zero component + # FIXME: what happens if component 0 isn't output first? + if (0 == $componentflag[$refinementlevel]) + { + push(@outputdata, ("\"",$line)); # Add ygraph comment marker + } + else + { + $flag = 1; + @outputdata=(""); + } + } + else # The line contains real data + { + @data = split(/ \t]+/,$line); + if ($flag== 0) # This is the first line of data + { + $flag = 1; + $timeset = $data[8]; # Magic number gives the Cactus time + @outputdata = ("\n\"Time = ",$timeset,@outputdata); + } + push(@outputdata, $data[$direction], " ", $data[12]); + } +} + +# +# At end of file, so output final data set. +# + +$fh = $outputfilelist[$refinementlevel]; +print $fh @outputdata; + +foreach $fh (@outputfilelist) +{ + close($fh); +} diff --git a/Carpet/CarpetIOASCII/src/util/Carpet2ygraphCat.pl b/Carpet/CarpetIOASCII/src/util/Carpet2ygraphCat.pl new file mode 100755 index 000000000..669c8e64b --- /dev/null +++ b/Carpet/CarpetIOASCII/src/util/Carpet2ygraphCat.pl @@ -0,0 +1,105 @@ +#! /usr/bin/perl -s + +use FileHandle; + +if(@ARGV != 3) +{ + print "Usage: $0 direction <Inputfile> <Outputfile> \n"; + exit; +} + +open(CARPETFILE, "<$ARGV[1]") || die "Unable to find file \"$ARGV[1]\"."; + +$file = $ARGV[2].".xg"; +my $fh = new FileHandle(">$file") || die "Unable to open file \"$file\"."; + +my %data; +my $time = -1; +my $new = 0; +my $currentit = -1; +my $lastit = -1; + +my @datatoprint; +my $nsets = 1; +my $maxlength = 0; +my @lengths; + +$lengths[0]=0; +while (<CARPETFILE>) +{ + $line = $_; + if ($line =~ "iteration") { + @itline = split(/ +/,$line); + $currentit = @itline[2]; + } + elsif ($line =~ /^#/) + { + #Do nothing for headers! + } + elsif ($line =~ /([0-9+-ed.]+)*/) + { + @dataline = split(/[ \t]+/,$line); + if ($currentit != $lastit) + { + if ($new) + { + push(@datatoprint,"\n\n\"Time = ".$time."\n"); + my @sortedcoords = sort numerically (keys %data); + my $localcoord; + foreach $localcoord (@sortedcoords) + { + push(@datatoprint, $localcoord." ".$data{$localcoord}); + } + $maxlength = $maxlength > (scalar @sortedcoords) ? $maxlength : (scalar @sortedcoords); + $lengths[$nsets-1]=(scalar @sortedcoords); + $nsets++; + $lengths[$nsets-1]=0; + %data=(); + } + $new++; + $time = $dataline[8]; + $lastit = $currentit; + } + my $coord = $dataline[9+$ARGV[0]]; + my $val = $dataline[12]; + $data{$coord} = $val; + } +} +push(@datatoprint, "\n\"Time = ",$time,"\n"); +my @sortedcoords = sort numerically (keys %data); +my $localcoord; +foreach $localcoord (@sortedcoords) +{ + push(@datatoprint, $localcoord." ".$data{$localcoord}); +} +$maxlength = $maxlength > (scalar @sortedcoords) ? $maxlength : (scalar @sortedcoords); +$lengths[$nsets-1]=(scalar @sortedcoords); +$nsets++; +$lengths[$nsets-1]=0; + +my $oldline=""; +$nouts=0; +my $set=0; +foreach $line (@datatoprint) { + if ($line =~ "Time") { + if ($oldline) { + for (my $i=$lengths[$set-1]; $i<$maxlength;$i++) { + $nouts++; + print $fh $oldline; + } + } + $set++; + print $fh $line; + } + else { + $nouts++; + print $fh $line; + $oldline=$line + } +} +for (my $i=$lengths[$set-1]; $i<$maxlength;$i++) { + $nouts++; + print $fh $oldline; +} + +sub numerically {$a <=> $b;} diff --git a/Carpet/CarpetIOASCII/src/util/carpet2sdf.c b/Carpet/CarpetIOASCII/src/util/carpet2sdf.c new file mode 100644 index 000000000..a8abe71d0 --- /dev/null +++ b/Carpet/CarpetIOASCII/src/util/carpet2sdf.c @@ -0,0 +1,167 @@ +
+/*******************************************************************
+ * Program: carpet2sdf
+ * Description: Converts from Carpet ASCII file format to SDF format
+ * Author: Scott H. Hawley
+ * Date: June 17, 2002
+ *
+ * Similar to carpet2sdf, except that instead of sending output to
+ * sdtout, it sends it to <infile>.sdf
+ *******************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <bbhutil.h>
+
+
+/*******************************************************************
+ * Function: read_next_set
+ * Supposed to read one time step of data (for one level of refinement)
+ *******************************************************************/
+int read_next_set(FILE *infile, int rlev, int *numelems,
+ double *time,
+ double **coord, double **data, int clip_data, double clip_val)
+{
+ char in_line[200];
+ int it,tl,rl,c,ml,ix,iy,iz;
+ double xval, yval, zval;
+ double coordval, dataval;
+ int hit_first_non_blank = 0;
+ int stop_reading = 0;
+ int retval = 0;
+ int rc = 0;
+
+ *numelems = 0;
+ sprintf(in_line," ");
+
+ /* reads up to first blank line after non-blank lines, or up to
+ * eof */
+ while ((fgets(in_line,200,infile) != NULL) && (!stop_reading) ) {
+
+ if (in_line[0]=='#') {
+ hit_first_non_blank = 1;
+
+ } else if ((strncmp("\n",in_line,2)==0) ||
+ (in_line[0]==' ')) {
+ if (hit_first_non_blank) {
+ stop_reading = 1;
+ }
+
+ } else { /* Assume that we're dealing with a line of numbers */
+ hit_first_non_blank = 1;
+ retval = sscanf(in_line,"%d %d %d %d %d %d %d %d %lg %lg %lg %lg %lg",
+ &it,&tl,&rl,&c,&ml,&ix,&iy,&iz,time,&xval,&yval,&zval,&dataval);
+ coordval = xval;
+
+ /* Only add input to arrays if it's for the right ref. level */
+ if ( (retval == 13) && (rl == rlev)) {
+ (*numelems)++;
+
+ if (coord==NULL) {
+ *coord = (double *)malloc(sizeof(double)* (*numelems));
+ *data = (double *)malloc(sizeof(double)* (*numelems));
+ } else {
+ *coord = (double *)realloc(*coord, sizeof(double)* (*numelems));
+ *data = (double *)realloc(*data, sizeof(double)* (*numelems));
+ }
+ if (coord==NULL) {
+ fprintf(stderr,"Error: malloc/realloc returned NULL\n");
+ exit(1);
+ }
+
+ (*coord)[(*numelems)-1] = coordval;
+
+ /* If desired, "clip" data above a certain value */
+ if (clip_data && (dataval > clip_val)) {
+ (*data)[(*numelems)-1] = clip_val;
+ } else {
+ (*data)[(*numelems)-1] = dataval;
+ }
+
+ }
+
+ }
+
+ }
+ rc = feof(infile);
+
+ return rc;
+}
+
+
+/********************************************************************
+ * Main part of program
+ ********************************************************************/
+int main(int argc, char **argv)
+{
+ char *infilename;
+ FILE *infile;
+
+ char func_name[200];
+ double time;
+ int shape[1];
+ double bounds[2];
+ int rank = 1;
+ int numelems_in_set = 0;
+ int rlev = 0;
+ double *coord, *data;
+ int clip_data = 0;
+ double clip_val;
+
+
+ /*
+ * Parse command-line arguments
+ */
+ if (argc <= 1) {
+ fprintf(stderr,"usage: carpet2sdf <infile> [ref_lev] [clip_data_at]\n");
+ exit(1);
+ }
+ if (argc >= 3) {
+ sscanf(argv[2],"%d",&rlev);
+ }
+ if (argc >= 4) {
+ sscanf(argv[3],"%lf",&clip_val);
+ clip_data = 1;
+ }
+
+ /*
+ * Open the input file
+ */
+ infilename = argv[1];
+ infile = fopen(infilename,"r");
+ if (infile == NULL) {
+ fprintf(stderr,"Error opening file '%s'.\n",infilename);
+ exit(1);
+ }
+
+
+ time = 0;
+ coord = NULL;
+ data = NULL;
+ sprintf(func_name,"%s_%d",infilename,rlev);
+
+ /*
+ * Main loop for reading from input file and writing to output file
+ */
+ while ( read_next_set(infile,rlev,&numelems_in_set,&time,&coord,&data,
+ clip_data, clip_val) == 0 ) {
+ if (numelems_in_set > 0) {
+
+ shape[0] = numelems_in_set;
+ bounds[0] = coord[0];
+ bounds[1] = coord[numelems_in_set-1];
+
+ gft_out_bbox(func_name, time, shape, rank, bounds, data);
+
+ free(coord);
+ free(data);
+ coord = NULL;
+ data = NULL;
+
+ }
+ }
+
+ return 0;
+}
+
diff --git a/Carpet/CarpetIOASCII/src/util/carpet2xgraph.c b/Carpet/CarpetIOASCII/src/util/carpet2xgraph.c new file mode 100644 index 000000000..61dfa689b --- /dev/null +++ b/Carpet/CarpetIOASCII/src/util/carpet2xgraph.c @@ -0,0 +1,186 @@ + +/******************************************************************* + * Program: carpet2xgraph + * Description: Converts from Carpet ASCII file format to Xgraph format + * Author: Scott H. Hawley + * Date: June 17, 2002 + * + * This will select the data for ONE REFINEMENT LEVEL (default 0) + * and send the result to stdout. The "xgraph format" data is + * not, however, fully annotated and someone may wish to improve + * this. + * + * The [clip_data_at] command-line argument was added for use with + * 1/r data, to replace the infinities at the origin with whatever + * value the user specifies. + *******************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + + +/******************************************************************* + * Function: read_next_set + * Supposed to read one time step of data (for one level of refinement) + *******************************************************************/ +int read_next_set(FILE *infile, int rlev, int *numelems, + double *time, + double **coord, double **data, int clip_data, double clip_val) +{ + char in_line[200]; + int it,tl,rl,c,ml,ix,iy,iz; + double xval, yval, zval; + double coordval, dataval; + int hit_first_non_blank = 0; + int stop_reading = 0; + int retval = 0; + int rc = 0; + + *numelems = 0; + sprintf(in_line," "); + + /* reads up to first blank line after non-blank lines, or up to + * eof */ + while ((fgets(in_line,200,infile) != NULL) && (!stop_reading) ) { + + if (in_line[0]=='#') { + hit_first_non_blank = 1; + + } else if ((strncmp("\n",in_line,2)==0) || + (in_line[0]==' ')) { + if (hit_first_non_blank) { + stop_reading = 1; + } + + } else { /* Assume that we're dealing with a line of numbers */ + hit_first_non_blank = 1; + retval = sscanf(in_line,"%d %d %d %d %d %d %d %d %lg %lg %lg %lg %lg", + &it,&tl,&rl,&c,&ml,&ix,&iy,&iz,time,&xval,&yval,&zval,&dataval); + coordval = xval; + + /* Only add input to arrays if it's for the right ref. level */ + if ( (retval == 13) && (rl == rlev)) { + (*numelems)++; + + if (coord==NULL) { + *coord = (double *)malloc(sizeof(double)* (*numelems)); + *data = (double *)malloc(sizeof(double)* (*numelems)); + } else { + *coord = (double *)realloc(*coord, sizeof(double)* (*numelems)); + *data = (double *)realloc(*data, sizeof(double)* (*numelems)); + } + if (coord==NULL) { + fprintf(stderr,"Error: malloc/realloc returned NULL\n"); + exit(1); + } + + (*coord)[(*numelems)-1] = coordval; + + /* If desired, "clip" data above a certain value */ + if (clip_data && (dataval > clip_val)) { + (*data)[(*numelems)-1] = clip_val; + } else { + (*data)[(*numelems)-1] = dataval; + } + + } + + } + + } + rc = feof(infile); + + return rc; +} + + +/******************************************************************** + * Main part of program + ********************************************************************/ +int main(int argc, char **argv) +{ + char *infilename; + FILE *infile; + + char func_name[200]; + double time; + int numelems_in_set = 0; + int rlev = 0; + double *coord, *data; + int clip_data = 0; + double clip_val; + int i; + + + /* + * Parse command-line arguments + */ + if (argc <= 1) { + fprintf(stderr," input from stdin... invoke carpet2xgraph -h for help\n"); + } else if (strcmp(argv[1],"-h")==0) { + fprintf(stderr,"usage: cat file | carpet2xgraph [name_tag] [ref_lev] [clip_data_at]\n"); + exit(1); + } + + if (argc >= 2) { + infilename = argv[1]; + } else { + infilename = "stdin"; + } + if (argc >= 3) { + sscanf(argv[2],"%d",&rlev); + } + if (argc >= 4) { + sscanf(argv[3],"%lf",&clip_val); + clip_data = 1; + } + + /* + * Open the input file + */ + infile = stdin; + + /* + infile = fopen(infilename,"r"); + if (infile == NULL) { + fprintf(stderr,"Error opening file '%s'.\n",infilename); + exit(1); + } + */ + + + time = 0; + coord = NULL; + data = NULL; + sprintf(func_name,"%s_%d",infilename,rlev); + + printf("\"x-label x\n"); + printf("\"y-label %s\n\n\n",infilename); + printf("\"label = %s\n\n\n",infilename); + + /* + * Main loop for reading from input file and writing to output file + */ + while ( read_next_set(infile,rlev,&numelems_in_set,&time,&coord,&data, + clip_data, clip_val) == 0 ) { + if (numelems_in_set > 0) { + + /* xgraph format */ + printf("\"Time = %g\n",time); + for (i=0; i<numelems_in_set; i++) { + printf("%g %17.14g\n",coord[i],data[i]); + } + printf("\n\n"); + + free(coord); + free(data); + coord = NULL; + data = NULL; + + } + } + + return 0; +} + diff --git a/Carpet/CarpetIOHDF5/COPYING b/Carpet/CarpetIOHDF5/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetIOHDF5/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetIOHDF5/README b/Carpet/CarpetIOHDF5/README new file mode 100644 index 000000000..64520a2da --- /dev/null +++ b/Carpet/CarpetIOHDF5/README @@ -0,0 +1,8 @@ +Cactus Code Thorn CarpetIOHDF5 +Authors : Erik Schnetter <schnetter@aei.mpg.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/README,v 1.1 2004/03/03 09:44:59 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides HDF5 based file I/O for Carpet. diff --git a/Carpet/CarpetIOHDF5/configuration.ccl b/Carpet/CarpetIOHDF5/configuration.ccl new file mode 100644 index 000000000..0323a73bd --- /dev/null +++ b/Carpet/CarpetIOHDF5/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetIOHDF5 +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/configuration.ccl,v 1.3 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib IOUtil + +REQUIRES THORNS: Carpet CarpetLib IOUtil diff --git a/Carpet/CarpetIOHDF5/doc/documentation.tex b/Carpet/CarpetIOHDF5/doc/documentation.tex new file mode 100644 index 000000000..b07dd73d1 --- /dev/null +++ b/Carpet/CarpetIOHDF5/doc/documentation.tex @@ -0,0 +1,314 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.4 2004/06/22 11:56:20 tradke Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevent thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be sparated with a \\ or a comma +% - You can define your own macros are OK, but they must appear after +% the START CACTUS THORNGUIDE line, and do not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphix package. +% More specifically, with the "includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us (later) to create a PDF version of the ThornGuide +% via pdflatex. | +% - References should be included with the latex "bibitem" command. +% - use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/doc/documentation.tex,v 1.4 2004/06/22 11:56:20 tradke Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/ThornGuide/cactus} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter $<$schnetter@uni-tuebingen.de$>$, Christian D. Ott $<$cott@aei.mpg.de$>$} + +% The title of the document (not necessarily the name of the Thorn) +\title{CarpetIOHDF5} + +% the date your document was last changed, if your document is in CVS, +% please use: +% \date{$ $Date: 2004/06/22 11:56:20 $ $} +\date{March 18, 2004} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} +CarpetIOHDF5 provides HDF5 based 3-D output to the Cactus mesh refinement driver Carpet. +This document explains CarpetIOHDF5's usage and contains a specification of the +CarpetIOHDF5 file format that was adapted from John Shalf's FlexIO library. +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +Having encountered various problems with CarpetIOFlexIO and the underlying FlexIO library, +Erik Schnetter decided to create CarpetIOHDF5. CarpetIOHDF5 provides 3-D output for the +Carpet Mesh Refinement driver within the Cactus Code. Christian D. Ott added +file reader (analogous to Erik Schnetter's implementation present in CarpetIOFlexIO) +and checkpoint/recovery features to CarpetIOHDF5. + +Right now, CarpetIOHDF5 only uses serial I/O - all data are copied to processor 0 for I/O. + +This document aims at giving the user a first handle on how to use +CarpetIOHDF5. It also documents the HDF5 file layout used. + + +\section{Using This Thorn} + + +\subsection{Obtaining This Thorn} + +You can get a checkout from + +{\tt cvs.carpetcode.org:/home/cvs Carpet/CarpetIOHDF5} + +\subsection{Basic Usage} + +First, you have to activate the thorn in your Cactus parameter file: + +{\tt ActiveThorns = "CarpetIOHDF5"} + +\subsubsection{3-D Output} + +\begin{itemize} + \item {\tt iohdf5::out3D\_vars = "your list of Cactus grid functions to output"} + \item {\tt iohdf5::out3D\_every = n} : Output every {\tt n} time steps + \item {\tt iohdf5::out3D\_dir = "your preferred 3-D output directory"} + \item {\tt IO::out\_single\_precision = "yes/no (output double-precision data in single precision)"} +\end{itemize} + +\subsubsection{3-D Input} + +There are two ways to use the 3-D input capabilities: + +\begin{enumerate} + \item For evolutions using ADMBase, one may use the thorn IDFileADM and the following parameter settings: + \begin{itemize} + \item {\tt ADMBase::initial\_data = "read from file"} + \item {\tt IO::filereader\_ID\_files = "space separated list of files containing the ADM variables"} + \item {\tt IO::filereader\_ID\_vars = "space separated list of variables to be read in"} + \end{itemize} + \item For evolutions not using ADMBase one may try to read in data by setting + \begin{itemize} + \item {\tt iohdf5::in3D\_dir = "directory from where to read data"} + \item {\tt iohdf5::in3D\_vars = "space separated list of variables to be read in"} + \end{itemize} +\end{enumerate} + + +\subsubsection{Checkpointing} + +CarpetIOHDF5 uses the Cactus checkpoint/recovery infrastructure provided by +CactusBase/IOUtil. + +\begin{itemize} + \item {\tt iohdf5::checkpoint = "yes"} : Turns on checkpointing + \item {\tt iohdf5::checkpoint\_every = n} : Checkpointing every {\tt n} time steps + \item {\tt iohdf5::checkpoint\_ID = "yes"} : Turns on checkpointing after initial data + \item {\tt io::checkpoint\_dir = "your preferred checkpoint directory"} + \item {\tt iohdf5::checkpoint\_keep = n} : Keep {\tt n} checkpoint files around +\end{itemize} + + +\subsubsection{Recover} + +CarpetIOHDF5 uses the Cactus checkpoint/recovery infrastructure provided by +CactusBase/IOUtil. Currently all the checkpoint information is copied onto processor 0 and + written into a single file whose name is invented by IOUtil. Unfortunately, single cpu +checkpoint files have a different name (a missing \_file\_0 tag) than checkpoint +files from multi-cpu runs. Somebody should tweek IOBase... + +In principle, CarpetIOHDF5 is able to restart on any number +of cpus from a checkpoint file of a run using any (other or same) number of cpus. + +\begin{itemize} + \item {\tt iohdf5::recover = "auto"} : Recover from the most recent Checkpoint file. This bombs, + if no checkpoint file is found. + \item {\tt iohdf5::recover = "autoprobe"} : Recover from the most recent Checkpoint file. This continues + without recovering if no checkpoint file is found. + \item {\tt iohdf5::recover\_dir = "directory containing the checkpoint file"} + \item {\tt iohdf5::recover = "manual"} : Recover from a file specified by {\tt iohdf5::recover\_file}. This + bombs if the file is not found. + \item {\tt iohdf5::recover\_file = "file you want to recover from"} : Only needs to be set if + {\tt iohdf5::recover = "manual"}. + +\end{itemize} + + + +\subsection{Special Behaviour} + +\begin{itemize} + \item {\tt iohdf5::h5verbose = "yes"} : Makes CarpetIOHDF5 very talkative. +\end{itemize} + + +\section{CarpetIOHDF5's HDF5 file layout} + +The HDF5 file layout of CarpetIOHDF5 is quite simple. There are no groups besides the +standard HDF5 root data object group: + +\begin{itemize} + \item Each dataset is named according to this template: \\ + {\tt \small [Full Variable Name] it=[Iteration] tl=[Timelevel] ml=[mglevel] rl=[reflevel] m=[map] c=[component]} + + \item Each dataset has the following (largely redundant!) attributes associated with it: + + \begin{itemize} + \item {\tt level} : Carpet::reflevel + \item {\tt origin} : 1-D array of length Carpet::dim. \\ origin[d]=CCTK\_ORIGIN\_SPACE(d) + + cctk\_lbnd[d] * delta[d] + \item {\tt delta} : 1-D array of length Carpet::dim. \\ delta[d] = CCTK\_DELTA\_SPACE(d) + \item {\tt min\_ext} : 1-D array of length Carpet::dim. \\ min\_ext[d] = delta[d] + \item {\tt max\_ext} : 1-D array of length Carpet::dim. \\ origin[d] + cctk\_lsh[d] * delta[d] + \item {\tt time} : cctk\_time + \item {\tt timestep} : cctk\_iteration + \item {\tt level\_timestep} : cctk\_iteration / Carpet::reflevelfact + \item {\tt persistence} : cctk\_iteration / Carpet::reflevelfact + \item {\tt time\_refinement} : Carpet::time\_refinement + \item {\tt spatial\_refinement} : 1-D array of length Carpet::dim. \\ spatial\_refinement[d] = Carpet::reflevelfact + \item {\tt grid\_placement\_refinement} : 1-D array of length Carpet::dim. \\ grid\_placement\_refinement[d] = Carpet::reflevelfact + \item {\tt iorigin} : 1-D array of length Carpet::dim. \\ iorigin[d] = (Carpet::ext.lower() / Carpet::ext.stride())[d] + \item {\tt name} : CCTK\_FullName(variable index) + \item {\tt group\_version} : 1 + \item {\tt group\_fullname} : CCTK\_FullName(variable index) + \item {\tt group\_varname} : CCTK\_VarName(variable index) + \item {\tt group\_groupname} : CCTK\_GroupName(group index) + \item {\tt group\_grouptype} : CCTK\_GF, CCTK\_ARRAY or CCTK\_SCALAR + \item {\tt group\_dim} : CCTK\_GroupDimI(group index) + \item {\tt group\_timelevel} : tl (current timelevel) + \item {\tt group\_numtimelevels} : CCTK\_NumTimeLevelsI(group index) + \item {\tt cctk\_version} : 1 + \item {\tt cctk\_dim} : cctk\_dim + \item {\tt cctk\_iteration} : cctk\_iteration + \item {\tt cctk\_gsh} : 1-D array of length Carpet::dim. cctk\_gsh + \item {\tt cctk\_lsh} : 1-D array of length Carpet::dim. cctk\_lsh + \item {\tt cctk\_lbnd} : 1-D array of length Carpet::dim. cctk\_lbnd + \item {\tt cctk\_delta\_time} : 1-D array of length Carpet::dim. cctk\_delta\_time + \item {\tt cctk\_delta\_space} : 1-D array of length Carpet::dim. cctk\_delta\_space + \item {\tt cctk\_origin\_space} : 1-D array of length Carpet::dim. cctk\_origin\_space + \item {\tt cctk\_bbox} : 1-D array of length 2*Carpet::dim. cctk\_box + \item {\tt cctk\_levfac} : 1-D array of length Carpet::dim. cctk\_levfac + \item {\tt cctk\_levoff} : 1-D array of length Carpet::dim. cctk\_levoff + \item {\tt cctk\_levoffdenom} : 1-D array of length Carpet::dim. cctk\_levoffdenom + \item {\tt cctk\_timefac} : cctk\_timefac + \item {\tt cctk\_convlevel} : cctk\_convlevel + \item {\tt cctk\_convfac} : cctk\_convfac + \item {\tt cctk\_nghostzones} : 1-D array of length Carpet::dim. cctk\_nghostzones + \item {\tt cctk\_time} : cctk\_time + \item {\tt carpet\_version} : 1 + \item {\tt carpet\_dim} : Carpet::dim + \item {\tt carpet\_basemglevel} : Carpet::basemglevel + \item {\tt carpet\_mglevel} : Carpet::mglevel + \item {\tt carpet\_mglevels} : Carpet::mglevels + \item {\tt carpet\_mgface} : Carpet::mgfact + \item {\tt carpet\_reflevel} : Carpet::reflevel + \item {\tt carpet\_reflevels} : Carpet::reflevels + \item {\tt carpet\_reffact} : Carpet::reffact + \item {\tt carpet\_map} : Carpet::map + \item {\tt carpet\_maps} : Carpet::maps + \item {\tt carpet\_component} : Carpet::component + \item {\tt carpet\_components} : Carpet::vhh.at(Carpet::map)->components(reflevel)) + + \end{itemize} +\end{itemize} + +\subsection{Attributes needed by the file reader} + +The number of attributes needed by the CarpetIOHDF5 file reader is much smaller then the total +number of attributes attached to each dataset: + +\begin{itemize} + \item {\tt name} + \item {\tt level} + \item {\tt iorigin} +\end{itemize} + + +%\subsection{Interaction With Other Thorns} +% +%\subsection{Support and Feedback} +% +%\section{History} +% +%\subsection{Thorn Source Code} +% +%\subsection{Thorn Documentation} +% +%\subsection{Acknowledgements} +% +% +%\begin{thebibliography}{9} +% +%\end{thebibliography} +% +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/CarpetIOHDF5/interface.ccl b/Carpet/CarpetIOHDF5/interface.ccl new file mode 100644 index 000000000..b8d6a5da8 --- /dev/null +++ b/Carpet/CarpetIOHDF5/interface.ccl @@ -0,0 +1,20 @@ +# Interface definition for thorn CarpetIOHDF5 +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/interface.ccl,v 1.5 2004/06/08 21:09:25 schnetter Exp $ + +IMPLEMENTS: IOHDF5 + +uses include header: carpet.hh + +uses include header: bbox.hh +uses include header: vect.hh + +uses include header: data.hh +uses include header: gdata.hh + +uses include header: ggf.hh + + + +CCTK_INT next_output_iteration TYPE=scalar +CCTK_REAL next_output_time TYPE=scalar +CCTK_INT this_iteration TYPE=scalar diff --git a/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par b/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par new file mode 100644 index 000000000..57cf0e59b --- /dev/null +++ b/Carpet/CarpetIOHDF5/par/CarpetWaveToyCheckpointTest.par @@ -0,0 +1,43 @@ +ActiveThorns = "Boundary CoordBase CartGrid3D SymBase Time Carpet CarpetReduce CarpetSlab CarpetLib CarpetRegrid IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC" + + +Cactus::cctk_itlast = 12 + +Time::dtfac = 0.5 + +IDScalarWave::initial_data = "gaussian" +IDScalarWave::sigma = 2.8 +IDScalarWave::radius = 0.0 + +Grid::avoid_origin = "no" +Grid::type = "byrange" +Grid::dxyz = 1 + +Driver::global_nsize = 20 +Driver::ghost_size = 2 + +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 +Carpet::init_each_timelevel = "yes" +Carpet::buffer_width = 6 +Carpet::max_refinement_levels = 2 + +CarpetRegrid::refinement_levels = 2 + +# Output +IO::out_dir = $parfile + +IOBasic::outInfo_every = 1 +IOBasic::outInfo_vars = "wavetoy::phi" + +IOASCII::out1D_vars = "wavetoy::phi" +IOASCII::out1D_every = 12 +IOASCII::out3D_vars = "wavetoy::phi" +IOASCII::out3D_every = 12 + +# Checkpoint +IO::checkpoint_every = 12 +IO::checkpoint_keep = 2 + +IOHDF5::checkpoint = "yes" +IOHDF5::verbose = "yes" diff --git a/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par b/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par new file mode 100644 index 000000000..5972c76d8 --- /dev/null +++ b/Carpet/CarpetIOHDF5/par/CarpetWaveToyRecoverTest.par @@ -0,0 +1,12 @@ +ActiveThorns = "Boundary CoordBase CartGrid3D SymBase Time Carpet CarpetReduce CarpetSlab CarpetLib CarpetRegrid IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC" + + +Cactus::cctk_itlast = 24 + +# Output +IO::out_dir = $parfile + +# Recovery +IO::recover = "auto" + +IOHDF5::checkpoint = "no" diff --git a/Carpet/CarpetIOHDF5/param.ccl b/Carpet/CarpetIOHDF5/param.ccl new file mode 100644 index 000000000..c80b383c5 --- /dev/null +++ b/Carpet/CarpetIOHDF5/param.ccl @@ -0,0 +1,113 @@ +# Parameter definitions for thorn CarpetIOHDF5 +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/param.ccl,v 1.15 2004/06/25 12:54:30 schnetter Exp $ + + + +shares: IO + +USES STRING out_dir +USES BOOLEAN out_single_precision + +USES KEYWORD out_criterion +USES CCTK_INT out_every +USES CCTK_REAL out_dt + +USES INT checkpoint_every +USES INT checkpoint_keep +USES BOOLEAN checkpoint_ID +USES BOOLEAN recover_and_remove +USES BOOLEAN checkpoint_on_terminate +USES BOOLEAN strict_io_parameter_check +USES KEYWORD recover +USES STRING checkpoint_dir +USES STRING checkpoint_ID_file +USES STRING checkpoint_file +USES STRING recover_dir +USES STRING recover_file + + +shares: Cactus + +USES CCTK_REAL cctk_initial_time + + +private: + + + +BOOLEAN verbose "Produce log output" STEERABLE = ALWAYS +{ +} "no" + + + +CCTK_STRING out3D_dir "Name of 3D CarpetIOHDF5 output directory, overrides IO::out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + +CCTK_STRING out3D_vars "Variables to output in 3D CarpetIOHDF5 file format" STEERABLE = ALWAYS +{ + .* :: "List of group and variable names" +} "" + +CCTK_STRING out3D_extension "File extension to use for 3D CarpetIOHDF5 output" STEERABLE = ALWAYS +{ + ".*" :: "File extension (including a leading dot, if desired)" +} ".h5" + +KEYWORD out3D_criterion "Criterion to select 3D CarpetIOHDF5 output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "default" :: "Use IO::out_criterion" + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "divisor" :: "Output if (iteration % out_every) == 0." + "time" :: "Output every that much coordinate time" +} "default" + +CCTK_INT out3D_every "How often to do 3D CarpetIOHDF5 output, overrides out_every" STEERABLE = ALWAYS +{ + 1:* :: "Output every so many time steps" + -1:0 :: "No output" + -2 :: "Use IO::out_every" +} -2 + +REAL out3D_dt "How often to do 3D CarpetIOHDF5 output, overrides IO::out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 + + + +CCTK_STRING in3D_dir "Name of 3D CarpetIOHDF5 input directory" STEERABLE = ALWAYS +{ + ".+" :: "Directory name" +} "." + +CCTK_STRING in3D_vars "Variables to input in 3D CarpetIOHDF5 file format" STEERABLE = ALWAYS +{ + .* :: "List of group and variable names" +} "" + +CCTK_STRING in3D_extension "File extension to use for 3D CarpetIOHDF5 input" STEERABLE = ALWAYS +{ + ".*" :: "File extension (including a leading dot, if desired)" +} ".h5" + + +BOOLEAN checkpoint "Do checkpointing with CarpetIOHDF5" STEERABLE = ALWAYS +{ +} "no" + +BOOLEAN checkpoint_next "Checkpoint at next iteration" STEERABLE = ALWAYS +{ +} "no" + + +BOOLEAN use_reflevels_from_checkpoint "Use CarpetRegrid::refinement_levels from the checkpoint file rather than from the parameter file." STEERABLE = ALWAYS +{ +} "no" diff --git a/Carpet/CarpetIOHDF5/schedule.ccl b/Carpet/CarpetIOHDF5/schedule.ccl new file mode 100644 index 000000000..fc3f69751 --- /dev/null +++ b/Carpet/CarpetIOHDF5/schedule.ccl @@ -0,0 +1,63 @@ +# Schedule definitions for thorn CarpetIOHDF5 +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/schedule.ccl,v 1.12 2004/08/18 16:02:56 tradke Exp $ + +storage: next_output_iteration next_output_time this_iteration + +schedule CarpetIOHDF5Startup at STARTUP after IOUtil_Startup +{ + LANG: C +} "Startup routine" + +schedule CarpetIOHDF5Init at BASEGRID +{ + LANG: C + OPTIONS: global +} "Initialisation routine" + +schedule CarpetIOHDF5ReadData at INITIAL +{ + LANG: C + OPTIONS: level +} "Read initial data from file" + +if (checkpoint && checkpoint_ID) +{ + schedule CarpetIOHDF5_InitialDataCheckpoint at CPINITIAL + { + LANG: C + OPTIONS: meta + } "Initial data checkpoint routine" +} + +schedule CarpetIOHDF5_EvolutionCheckpoint at CHECKPOINT +{ + LANG: C + OPTIONS: meta +} "Evolution checkpoint routine" + +schedule CarpetIOHDF5_TerminationCheckpoint at TERMINATE +{ + LANG: C + OPTIONS: meta +} "Termination checkpoint routine" + +schedule CarpetIOHDF5_CloseFile at POSTINITIAL +{ + LANG: C + OPTIONS: global +} "Close an input file opened by the filereader" + +if (! CCTK_Equals (recover, "no") && *recover_file) +{ + schedule CarpetIOHDF5_RecoverParameters at RECOVER_PARAMETERS + { + LANG:C + OPTIONS: meta + } "Parameter recovery routine" + + schedule CarpetIOHDF5_CloseFile at POST_RECOVER_VARIABLES + { + LANG: C + OPTIONS: global + } "Close an initial data checkpoint file" +} diff --git a/Carpet/CarpetIOHDF5/src/Checkpoint.cc b/Carpet/CarpetIOHDF5/src/Checkpoint.cc new file mode 100644 index 000000000..04483c18a --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/Checkpoint.cc @@ -0,0 +1,437 @@ +#include <assert.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <sstream> +#include <string> +#include <vector> + +#include <hdf5.h> + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Version.h" + +extern "C" { +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/Checkpoint.cc,v 1.2 2004/08/18 16:02:56 tradke Exp $"; +CCTK_FILEVERSION(Carpet_CarpetIOHDF5_Checkpoint_cc); +} + +#include "CactusBase/IOUtil/src/ioGH.h" +#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h" + +#include "bbox.hh" +#include "data.hh" +#include "gdata.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "iohdf5.hh" +#include "iohdf5GH.h" + + +namespace CarpetIOHDF5 +{ + +using namespace std; +using namespace Carpet; + +// when was the last checkpoint written ? +static int last_checkpoint_iteration = -1; + + +static int Checkpoint (const cGH* const cctkGH, int called_from); +static int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer); + + +int CarpetIOHDF5_InitialDataCheckpoint (const cGH* const cctkGH) +{ + CCTK_INFO ("---------------------------------------------------------"); + CCTK_INFO ("Dumping initial data checkpoint"); + CCTK_INFO ("---------------------------------------------------------"); + + int retval = Checkpoint (cctkGH, CP_INITIAL_DATA); + + return (retval); +} + + +int CarpetIOHDF5_EvolutionCheckpoint (const cGH* const cctkGH) +{ + int retval = 0; + DECLARE_CCTK_PARAMETERS + + // Test checkpoint_every, and adjust it. This is necessary until + // recovery is more flexible. + int every_full = 1 << (maxreflevels-1); + if (checkpoint_every > 0 && (checkpoint_every % every_full) != 0) + { + char new_checkpoint_every[32]; + + snprintf (new_checkpoint_every, sizeof (new_checkpoint_every), "%d", + (checkpoint_every / every_full + 1) * every_full); + CCTK_ParameterSet ("checkpoint_every", "IOUtil", new_checkpoint_every); + CCTK_VInfo (CCTK_THORNSTRING,"I have adjusted your checkpoint_every to %s.", + new_checkpoint_every); + } + + if (checkpoint && + ((checkpoint_every > 0 && cctkGH->cctk_iteration % checkpoint_every == 0) || + checkpoint_next)) + { + CCTK_INFO ("---------------------------------------------------------"); + CCTK_VInfo (CCTK_THORNSTRING, "Dumping periodic checkpoint at " + "iteration %d", cctkGH->cctk_iteration); + CCTK_INFO ("---------------------------------------------------------"); + + retval = Checkpoint (cctkGH, CP_EVOLUTION_DATA); + + if (checkpoint_next) + { + CCTK_ParameterSet ("checkpoint_next", CCTK_THORNSTRING, "no"); + } + } + + return (retval); +} + + +int CarpetIOHDF5_TerminationCheckpoint (const cGH *const GH) +{ + int retval = 0; + DECLARE_CCTK_PARAMETERS + + + if (checkpoint && checkpoint_on_terminate) + { + if (last_checkpoint_iteration < GH->cctk_iteration) + { + CCTK_INFO ("---------------------------------------------------------"); + CCTK_VInfo (CCTK_THORNSTRING, "Dumping termination checkpoint at " + "iteration %d", GH->cctk_iteration); + CCTK_INFO ("---------------------------------------------------------"); + + retval = Checkpoint (GH, CP_EVOLUTION_DATA); + } + else if (verbose) + { + CCTK_INFO ("---------------------------------------------------------"); + CCTK_VInfo (CCTK_THORNSTRING, "Termination checkpoint already dumped " + "as last evolution checkpoint at iteration %d", + last_checkpoint_iteration); + CCTK_INFO ("---------------------------------------------------------"); + } + } + + return (retval); +} + + +static int Checkpoint (const cGH* const cctkGH, int called_from) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + int retval = 0; + + ioRequest *request; + + CarpetIOHDF5GH *myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH, + "CarpetIOHDF5"); + + // check if CarpetIOHDF5 was registered as I/O method + if (myGH == NULL) + { + CCTK_WARN (0, "No CarpetIOHDF5 I/O methods registered"); + return -1; + } + + int const myproc = CCTK_MyProc (cctkGH); + + + /* get the filenames for both the temporary and real checkpoint file */ + char *filename = IOUtil_AssembleFilename (cctkGH, NULL, "", ".h5", + called_from, 0, 1); + char *tempname = IOUtil_AssembleFilename (cctkGH, NULL, ".tmp", ".h5", + called_from, 0, 1); + + hid_t writer = -1; + + if (myproc == 0) + { + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", + tempname); + } + + HDF5_ERROR (writer = H5Fcreate (tempname, H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT)); + + // Dump all parameters and GHExtentions + retval = DumpParametersGHExtentions (cctkGH, 1, writer); + + } + + // now dump the grid variables on all mglevels, reflevels, maps and components + BEGIN_MGLEVEL_LOOP (cctkGH) + { + BEGIN_REFLEVEL_LOOP (cctkGH) + { + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, + "Dumping grid variables on mglevel %d reflevel %d ...", + mglevel, reflevel); + } + + for (int group = CCTK_NumGroups () - 1; group >= 0; group--) + { + /* only dump groups which have storage assigned */ + if (CCTK_QueryGroupStorageI (cctkGH, group) <= 0) + { + continue; + } + + const int grouptype = CCTK_GroupTypeI (group); + + // scalars and grid arrays only have one reflevel + if (grouptype != CCTK_GF && reflevel > 0) + { + continue; + } + + // now check if there is any memory allocated + // for GFs and GAs. GSs should always have + // memory allocated and there is at this point + // no CCTK function to check this :/ + if (grouptype == CCTK_GF || grouptype == CCTK_ARRAY) + { + const int gpdim = CCTK_GroupDimI (group); + int gtotalsize = 1; + vector<int> tlsh (gpdim); + assert(!CCTK_GrouplshGI(cctkGH,gpdim,&tlsh[0],group)); + for(int i=0;i<gpdim;i++) + { + gtotalsize=tlsh[i]; + } + if(gtotalsize == 0) + { + if (verbose) + { + CCTK_VInfo(CCTK_THORNSTRING, "Group '%s' is zero-sized. " + "No checkpoint info written", CCTK_GroupName (group)); + } + continue; + } + } + + /* get the number of allocated timelevels */ + cGroup gdata; + CCTK_GroupData (group, &gdata); + gdata.numtimelevels = 0; + gdata.numtimelevels = CCTK_GroupStorageIncrease (cctkGH, 1, &group, + &gdata.numtimelevels,NULL); + + int first_vindex = CCTK_FirstVarIndexI (group); + + /* get the default I/O request for this group */ + request = IOUtil_DefaultIORequest (cctkGH, first_vindex, 1); + + /* disable checking for old data objects, disable datatype conversion + and downsampling */ + request->check_exist = 0; + request->hdatatype = gdata.vartype; + for (request->hdim = 0; request->hdim < request->vdim; request->hdim++) + { + request->downsample[request->hdim] = 1; + } + + /* loop over all variables in this group */ + for (request->vindex = first_vindex; + request->vindex < first_vindex + gdata.numvars; + request->vindex++) + { + char *fullname = CCTK_FullName (request->vindex); + + /* loop over all timelevels of this variable */ + for (request->timelevel = 0; + request->timelevel < gdata.numtimelevels; + request->timelevel++) + { + if (verbose) + { + if (fullname != NULL) + { + CCTK_VInfo (CCTK_THORNSTRING, " %s (timelevel %d)", + fullname, request->timelevel); + } + else + { + CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Invalid variable with varindex %d", request->vindex); + } + } + // write the var + + if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF || grouptype == CCTK_SCALAR) + { + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING,"%s: reflevel: %d map: %d component: %d grouptype: %d ", + fullname,reflevel,Carpet::map,component,grouptype); + } + retval += WriteVar(cctkGH,writer,request,1); + } + else + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Invalid group type %d for variable '%s'", grouptype, fullname); + retval = -1; + } + } + free(fullname); + } /* end of loop over all variables */ + } /* end of loop over all groups */ + } END_REFLEVEL_LOOP; + + } END_MGLEVEL_LOOP; + + + // Close the file + if (writer >= 0) + { + HDF5_ERROR (H5Fclose(writer)); + } + + if (retval == 0 && myproc == 0) + { + if (rename (tempname, filename)) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not rename temporary checkpoint file '%s' to '%s'", + tempname, filename); + retval = -1; + } + else + { + if (myGH->cp_filename_list[myGH->cp_filename_index]) + { + if (checkpoint_keep > 0) + { + remove (myGH->cp_filename_list[myGH->cp_filename_index]); + } + free (myGH->cp_filename_list[myGH->cp_filename_index]); + } + myGH->cp_filename_list[myGH->cp_filename_index] = strdup (filename); + myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep); + } + } + + // save the iteration number of this checkpoint + last_checkpoint_iteration = cctkGH->cctk_iteration; + + // free allocated resources + free (tempname); + free (filename); + + return retval; + +} // Checkpoint + + +static int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer) +{ + // large parts of this routine were taken from + // Thomas Radke's IOHDF5Util. Thanks Thomas! + + DECLARE_CCTK_PARAMETERS; + + char *parameters; + hid_t group, dspace, dset; + hsize_t size; + + int itmp; + double dtmp; + const char *version; + const ioGH *ioUtilGH; + + if (verbose) + { + CCTK_INFO ("Dumping Parameters and GH Extentions..."); + } + + /* get the parameter string buffer */ + parameters = IOUtil_GetAllParameters (cctkGH, all); + if (parameters) + { + size = strlen (parameters) + 1; + HDF5_ERROR (group = H5Gcreate (writer, METADATA_GROUP, 0)); + HDF5_ERROR (dspace = H5Screate_simple (1, &size, NULL)); + HDF5_ERROR (dset = H5Dcreate (group, ALL_PARAMETERS, H5T_NATIVE_UCHAR, + dspace, H5P_DEFAULT)); + HDF5_ERROR (H5Dwrite (dset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, + H5P_DEFAULT, parameters)); + + // now dump the GH Extentions + + /* get the handle for IOUtil extensions */ + ioUtilGH = (const ioGH *) CCTK_GHExtension (cctkGH, "IO"); + + itmp = CCTK_MainLoopIndex (); + WriteAttribute(dset,"main loop index",itmp); + + itmp = cctkGH->cctk_iteration; + WriteAttribute(dset,"GH$iteration",itmp); + + itmp = ioUtilGH->ioproc_every; + WriteAttribute(dset,"GH$ioproc_every",itmp); + + itmp = CCTK_nProcs (cctkGH); + WriteAttribute(dset,"GH$nprocs",itmp); + + dtmp = cctkGH->cctk_time; + WriteAttribute(dset,"GH$time", dtmp); + + dtmp = global_time; + WriteAttribute(dset,"carpet_global_time", dtmp); + + itmp = reflevels; + WriteAttribute(dset,"carpet_reflevels", itmp); + + dtmp = delta_time; + WriteAttribute(dset,"carpet_delta_time", dtmp); + + version = CCTK_FullVersion(); + WriteAttribute(dset,"Cactus version", version); + + /* finally, we need all the times on the individual refinement levels */ + + const int numberofmgtimes=mglevels; + WriteAttribute(dset,"numberofmgtimes",numberofmgtimes); + for(int i=0;i < numberofmgtimes;i++) + { + char buffer[100]; + snprintf (buffer, sizeof (buffer), "mgleveltimes %d", i); + WriteAttribute(dset,buffer,(double *) &leveltimes.at(i).at(0), reflevels); + } + + HDF5_ERROR (H5Dclose (dset)); + HDF5_ERROR (H5Sclose (dspace)); + HDF5_ERROR (H5Gclose (group)); + + free (parameters); + } + + return 0; +} // DumpParametersGHExtentions + +} // namespace CarpetIOHDF5 diff --git a/Carpet/CarpetIOHDF5/src/Recover.cc b/Carpet/CarpetIOHDF5/src/Recover.cc new file mode 100644 index 000000000..0f5349bb8 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/Recover.cc @@ -0,0 +1,523 @@ +#include <assert.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <sstream> +#include <string> +#include <vector> + +#include <hdf5.h> + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Version.h" + +extern "C" { +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/Recover.cc,v 1.2 2004/07/09 15:38:18 tradke Exp $"; +CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5chckpt_recover_cc); +} + +#include "CactusBase/IOUtil/src/ioGH.h" +#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h" + +#include "bbox.hh" +#include "data.hh" +#include "gdata.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "iohdf5.hh" +#include "iohdf5GH.h" + +/* some macros for HDF5 group names */ +#define METADATA_GROUP "Parameters and Global Attributes" +#define ALL_PARAMETERS "All Parameters" + + + +namespace CarpetIOHDF5 +{ + +using namespace std; +using namespace Carpet; + +// structure describing a single dataset of an HDF5 file to read from +typedef struct +{ + char *datasetname; + + int vindex; + int timelevel; + int mglevel; + int reflevel; + int rank; + int *shape; // [rank] + int *iorigin; // [rank] +} dataset_t; + +// structure describing the contents of an HDF5 file to read from +typedef struct +{ + int num_mglevels; + int num_reflevels; + int parameter_len; + int cctk_iteration; + int main_loop_index; + double global_time; + double delta_time; + double *mgleveltimes; // [num_mglevels*num_reflevels] + + char *filename; + hid_t file; + int num_datasets; + list<dataset_t> datasets; // [num_datasets] + int num_ints; // total number of integers in datasets[] +} file_t; + +static file_t infile = {0, 0, 0, 0, 0, 0, 0, NULL, NULL, -1, -1, + list<dataset_t> (), 0}; + + +static int OpenFile (const char *basefilename, file_t *file, int called_from); +static int RecoverVariables (cGH* cctkGH, file_t *file); +static herr_t ReadMetadata (hid_t group, const char *objectname, void *arg); + + +// Register with the Cactus Recovery Interface +int CarpetIOHDF5_RecoverParameters (void) +{ + int retval = IOUtil_RecoverParameters (Recover, ".h5", "HDF5"); + + return (retval); +} + + +// close a checkpoint/filereader file after recovering grid variables +int CarpetIOHDF5_CloseFile (void) +{ + DECLARE_CCTK_PARAMETERS + + + if (infile.num_datasets <= 0) + { + return (0); + } + infile.num_datasets = -1; + + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, "closing file '%s' after recovery", + infile.filename); + } + + if (infile.file >= 0) + { + HDF5_ERROR (H5Fclose (infile.file)); + infile.file = -1; + } + free (infile.filename); + delete[] infile.mgleveltimes; + + for (list<dataset_t>::iterator dataset = infile.datasets.begin (); + dataset != infile.datasets.end (); + dataset++) + { + delete[] dataset->shape; + delete[] dataset->iorigin; + } + infile.datasets.clear (); + + return (0); +} + +static int OpenFile (const char *basefilename, file_t *file, int called_from) +{ + hid_t dset = -1; + const int myproc = CCTK_MyProc (NULL); + DECLARE_CCTK_PARAMETERS + + + // generate filename for an unchunked checkpoint file */ + file->filename = IOUtil_AssembleFilename (NULL, basefilename, "", ".h5", + called_from, 0, 1); + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, "opening %s file '%s'", + called_from == CP_RECOVER_PARAMETERS ? "checkpoint" : "input", + file->filename); + } + + if (myproc == 0) + { + // try to open the file (prevent HDF5 error messages if it fails) + H5E_BEGIN_TRY + { + file->file = H5Fopen (file->filename, H5F_ACC_RDONLY, H5P_DEFAULT); + } H5E_END_TRY; + + if (file->file >= 0) + { + if (called_from == CP_RECOVER_PARAMETERS) + { + HDF5_ERROR (dset = H5Dopen (file->file, + METADATA_GROUP"/"ALL_PARAMETERS)); + ReadAttribute (dset, "carpet_reflevels", file->num_reflevels); + ReadAttribute (dset, "numberofmgtimes", file->num_mglevels); + ReadAttribute (dset, "GH$iteration", file->cctk_iteration); + ReadAttribute (dset, "main loop index", file->main_loop_index); + ReadAttribute (dset, "carpet_global_time", file->global_time); + ReadAttribute (dset, "carpet_delta_time", file->delta_time); + file->parameter_len = H5Dget_storage_size (dset) + 1; + assert (file->parameter_len > 1); + } + + file->num_ints = 0; + HDF5_ERROR (H5Giterate (file->file, "/", NULL, ReadMetadata, file)); + } + file->num_datasets = file->datasets.size (); + if (file->num_datasets <= 0) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "No valid HDF5 file '%s' found", file->filename); + free (file->filename); + } + } + + // broadcast integer variables + int *intbuffer = new int[7]; + intbuffer[0] = file->num_datasets; + intbuffer[1] = file->num_mglevels; + intbuffer[2] = file->num_reflevels; + intbuffer[3] = file->cctk_iteration; + intbuffer[4] = file->main_loop_index; + intbuffer[5] = file->parameter_len; + intbuffer[6] = file->num_ints; + MPI_Bcast (intbuffer, 7, MPI_INT, 0, MPI_COMM_WORLD); + file->num_datasets = intbuffer[0]; + file->num_mglevels = intbuffer[1]; + file->num_reflevels = intbuffer[2]; + file->cctk_iteration = intbuffer[3]; + file->main_loop_index = intbuffer[4]; + file->parameter_len = intbuffer[5]; + file->num_ints = intbuffer[6]; + delete[] intbuffer; + + // return if no valid checkpoint could be found + if (file->num_datasets <= 0) + { + return (-1); + } + + // serialize the dataset list metadata into a single MPI_INT buffer + intbuffer = new int[file->num_ints]; + if (myproc == 0) + { + for (list<dataset_t>::iterator dataset = file->datasets.begin (); + dataset != file->datasets.end (); + dataset++) + { + *intbuffer++ = dataset->vindex; + *intbuffer++ = dataset->timelevel; + *intbuffer++ = dataset->mglevel; + *intbuffer++ = dataset->reflevel; + *intbuffer++ = dataset->rank; + + for (int i = 0; i < dataset->rank; i++) + { + *intbuffer++ = dataset->shape[i]; + *intbuffer++ = dataset->iorigin[i]; + } + } + intbuffer -= file->num_ints; + } + + // broadcast the serialized dataset list metadata + MPI_Bcast (intbuffer, file->num_ints, MPI_INT, 0, MPI_COMM_WORLD); + + // build the dataset list on non-I/O processors + if (myproc != 0) + { + for (int i = 0; i < file->num_datasets; i++) + { + dataset_t dataset; + + + dataset.vindex = *intbuffer++; + dataset.timelevel = *intbuffer++; + dataset.mglevel = *intbuffer++; + dataset.reflevel = *intbuffer++; + dataset.rank = *intbuffer++; + + dataset.shape = new int[dataset.rank]; + dataset.iorigin = new int[dataset.rank]; + for (int j = 0; j < dataset.rank; j++) + { + dataset.shape[j] = *intbuffer++; + dataset.iorigin[j] = *intbuffer++; + } + + file->datasets.push_back (dataset); + } + intbuffer -= file->num_ints; + } + delete[] intbuffer; + + if (called_from == FILEREADER_DATA) + { + return (0); + } + + // Use refinement levels parameter from checkpointing file ? + if (use_reflevels_from_checkpoint) + { + char buffer[32]; + + snprintf (buffer, sizeof (buffer), "%d", file->num_reflevels); + CCTK_ParameterSet ("refinement_levels", "CarpetRegrid", buffer); + + CCTK_VInfo (CCTK_THORNSTRING, "Using %i reflevels read from checkpoint " + "file. Ignoring value in parameter file.", file->num_reflevels); + } + + // leave space at the end for global_time and delta_time + // so that all double variables can be broadcasted in one go + int num_times = file->num_mglevels*file->num_reflevels + 2; + file->mgleveltimes = new double[num_times]; + if (myproc == 0) + { + // FIXME: should store all mgleveltimes in a single contiguous array + // to get rid of this loop and save some attributes + for (int i = 0; i < file->num_mglevels; i++) + { + char buffer[32]; + + snprintf (buffer, sizeof (buffer), "mgleveltimes %d", i); + ReadAttribute (dset, buffer, file->mgleveltimes + i*file->num_reflevels, + file->num_reflevels); + } + } + + // broadcast double variables + file->mgleveltimes[num_times - 2] = file->global_time; + file->mgleveltimes[num_times - 1] = file->delta_time; + MPI_Bcast (file->mgleveltimes, num_times, MPI_DOUBLE, 0, MPI_COMM_WORLD); + file->global_time = file->mgleveltimes[num_times - 2]; + file->delta_time = file->mgleveltimes[num_times - 1]; + + char *parameters = new char[file->parameter_len]; + if (myproc == 0) + { + CCTK_VInfo (CCTK_THORNSTRING, "Recovering parameters from checkpoint"); + + HDF5_ERROR (H5Dread (dset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, H5P_DEFAULT, + parameters)); + } + if (dset >= 0) + { + HDF5_ERROR (H5Dclose (dset)); + } + + // broadcast char variables + MPI_Bcast (parameters, file->parameter_len, MPI_CHAR, 0, MPI_COMM_WORLD); + + // recover parameters + IOUtil_SetAllParameters (parameters); + delete[] parameters; + + return (0); +} + + +int Recover (cGH* cctkGH, const char *basefilename, int called_from) +{ + DECLARE_CCTK_PARAMETERS + int retval = 0; + + + assert (called_from == CP_RECOVER_PARAMETERS || + called_from == CP_RECOVER_DATA || + called_from == FILEREADER_DATA); + + if (called_from == CP_RECOVER_PARAMETERS || + called_from == FILEREADER_DATA) + { + // open the file, read and broadcast its metadata information + // for CP_RECOVER_PARAMETERS: also recover all parameters + retval = OpenFile (basefilename, &infile, called_from); + + if (called_from == CP_RECOVER_PARAMETERS || retval) + { + return (retval == 0 ? 1 : -1); + } + } + + // can only proceed with a valid checkpoint file from here on + assert (infile.num_datasets > 0); + + // set global Cactus/Carpet variables + if (called_from == CP_RECOVER_DATA) + { + global_time = infile.global_time; + delta_time = infile.delta_time; + CCTK_SetMainLoopIndex (infile.main_loop_index); + + cctkGH->cctk_iteration = infile.cctk_iteration; + cctkGH->cctk_time = infile.mgleveltimes[mglevel*infile.num_reflevels + + reflevel]; + } + + // now recover all grid variables on current mglevel and reflevel + retval = RecoverVariables (cctkGH, &infile); + + if (called_from == CP_RECOVER_DATA) + { + CCTK_VInfo (CCTK_THORNSTRING, + "restarting simulation at iteration %d (physical time %g)", + cctkGH->cctk_iteration, (double) cctkGH->cctk_time); + } + else + { + // FIXME: keep filereader input file open for all mglevels, reflevels + // this doesn't work now because we don't know the number of + // mglevels and reflevels + // also: there may be multiple files to be read in, and they + // must not share the same data structures + CarpetIOHDF5_CloseFile (); + } + + return (retval); +} + + +static herr_t ReadMetadata (hid_t group, const char *objectname, void *arg) +{ + file_t *file = (file_t *) arg; + dataset_t dataset; + hid_t dset, dspace; + H5G_stat_t object_info; + + + // we are interested only in datasets + HDF5_ERROR (H5Gget_objinfo (group, objectname, 0, &object_info)); + if (object_info.type != H5G_DATASET) + { + return (0); + } + + dataset.datasetname = strdup (objectname); + assert (dataset.datasetname); + + HDF5_ERROR (dset = H5Dopen (group, objectname)); + char *varname = NULL; + ReadAttribute (dset, "name", varname); + dataset.vindex = CCTK_VarIndex (varname); + free (varname); + ReadAttribute (dset, "name", varname); + ReadAttribute (dset, "level", dataset.timelevel); + ReadAttribute (dset, "carpet_mglevel", dataset.mglevel); + ReadAttribute (dset, "carpet_reflevel", dataset.reflevel); + HDF5_ERROR (dspace = H5Dget_space (dset)); + HDF5_ERROR (dataset.rank = H5Sget_simple_extent_ndims (dspace)); + dataset.iorigin = new int[dataset.rank]; + ReadAttribute (dset, "iorigin", dataset.iorigin, dataset.rank); + hsize_t *shape = new hsize_t[dataset.rank]; + HDF5_ERROR (H5Sget_simple_extent_dims (dspace, shape, NULL)); + dataset.shape = new int[dataset.rank]; + for (int i = 0; i < dataset.rank; i++) + { + dataset.shape[i] = shape[i]; + } + HDF5_ERROR (H5Sclose (dspace)); + HDF5_ERROR (H5Dclose (dset)); + + // add this dataset to our list and count the number of int elements + file->datasets.push_back (dataset); + file->num_ints += 5 + 2*dataset.rank; + + return (0); +} + + +static int RecoverVariables (cGH* cctkGH, file_t *file) +{ + DECLARE_CCTK_PARAMETERS + int myproc = CCTK_MyProc (cctkGH); + hid_t dset = -1; + + +#if 0 + double leveltime = MPI_Wtime(); + double comparetime = MPI_Wtime(); + static double totaltime; + if (reflevel == 0) totaltime = 0; + + comparetime = MPI_Wtime() - comparetime; + // cout << "Time for string comparison: " << comparetime << endl; + // cout << "I have for this reflevel " << refleveldatasetnamelist.size() << endl; +#endif + + CCTK_VInfo (CCTK_THORNSTRING, + "reading grid variables on mglevel %d reflevel %d", + mglevel, reflevel); + + int num_vars = CCTK_NumVars (); + for (list<dataset_t>::iterator dataset = file->datasets.begin (); + dataset != file->datasets.end (); + dataset++) + { + // only recover grid variables for the current mglevel/reflevel + if (dataset->mglevel != mglevel || dataset->reflevel != reflevel) + { + continue; + } + + if (dataset->vindex < 0 || dataset->vindex >= num_vars) + { + if (myproc == 0) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Ignoring dataset '%s' (invalid variable name)", + dataset->datasetname); + } + continue; + } + + if (myproc == 0) + { + HDF5_ERROR (dset = H5Dopen (file->file, dataset->datasetname)); + assert (dset >= 0); + } + + vector<ibset> regions_read (Carpet::maps); + int did_read_something = ReadVar (cctkGH, dataset->vindex, dset, + regions_read, 1); + MPI_Bcast (&did_read_something, 1, MPI_INT, 0, dist::comm); + + if (dset >= 0) + { + HDF5_ERROR (H5Dclose (dset)); + } + + } + +#if 0 + leveltime = MPI_Wtime() - leveltime; + totaltime += leveltime; + + if (verbose) + cout << "Timers: leveltime: " << leveltime << " totaltime: " << totaltime << endl; +#endif + + return (0); +} + + +} // namespace CarpetIOHDF5 diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.cc b/Carpet/CarpetIOHDF5/src/iohdf5.cc new file mode 100644 index 000000000..6a7ba3b46 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5.cc @@ -0,0 +1,1181 @@ +#include <assert.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <sstream> +#include <vector> + +#include <hdf5.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.cc,v 1.41 2004/07/09 15:38:18 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5_cc); +} + +#include "CactusBase/IOUtil/src/ioGH.h" +#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h" + +#include "bbox.hh" +#include "data.hh" +#include "gdata.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "iohdf5.hh" +#include "iohdf5GH.h" + + +namespace CarpetIOHDF5 { + +using namespace std; +using namespace Carpet; + + +// Variable definitions +vector<bool> do_truncate; // [var] +vector<vector<vector<int> > > last_output; // [ml][rl][var] + + +void CarpetIOHDF5Startup (void) +{ + DECLARE_CCTK_PARAMETERS + + + CCTK_RegisterBanner ("AMR 3D HDF5 I/O provided by CarpetIOHDF5"); + + int GHExtension = CCTK_RegisterGHExtension ("CarpetIOHDF5"); + CCTK_RegisterGHExtensionSetupGH (GHExtension, SetupGH); + + int IOMethod = CCTK_RegisterIOMethod ("IOHDF5"); + CCTK_RegisterIOMethodOutputGH (IOMethod, OutputGH); + CCTK_RegisterIOMethodOutputVarAs (IOMethod, OutputVarAs); + CCTK_RegisterIOMethodTimeToOutput (IOMethod, TimeToOutput); + CCTK_RegisterIOMethodTriggerOutput (IOMethod, TriggerOutput); + + /* initial I/O parameter check */ + int numvars = CCTK_NumVars (); + vector<bool> flags(numvars); + + if (CCTK_TraverseString (out3D_vars, SetFlag, &flags,CCTK_GROUP_OR_VAR) < 0) + { + CCTK_VWarn (strict_io_parameter_check ? 0 : 1, + __LINE__, __FILE__, CCTK_THORNSTRING, + "error while parsing parameter 'IOHDF5::out3D_vars'"); + } + +#if 0 + // Christian's Recovery routine + if ( !(CCTK_Equals(recover,"no")) ) { + ierr = IOUtil_RegisterRecover ("CarpetIOHDF5 recovery", Recover); + assert (! ierr); + } else { + // Erik's Recovery routine + ierr = IOUtil_RegisterRecover ("CarpetIOHDF5", Recover); + assert (! ierr); + } +#else + if (IOUtil_RegisterRecover ("CarpetIOHDF5 recovery", Recover) < 0) + { + CCTK_WARN (1, "Failed to register IOFlexIO recovery routine"); + } +#endif +} + + + +int CarpetIOHDF5Init (const cGH* const cctkGH) +{ + DECLARE_CCTK_ARGUMENTS; + + *this_iteration = -1; + *next_output_iteration = 0; + *next_output_time = cctk_time; + + return (0); +} + + + +void* SetupGH (tFleshConfig* const fc, + const int convLevel, cGH* const cctkGH) +{ + DECLARE_CCTK_PARAMETERS; + + CarpetIOHDF5GH* myGH; + + const void *dummy; + dummy = &fc; + dummy = &convLevel; + dummy = &cctkGH; + dummy = &dummy; + + // Truncate all files if this is not a restart + do_truncate.resize(CCTK_NumVars(), true); + + // No iterations have yet been output + last_output.resize(mglevels); + for (int ml=0; ml<mglevels; ++ml) { + last_output.at(ml).resize(maxreflevels); + for (int rl=0; rl<maxreflevels; ++rl) { + last_output.at(ml).at(rl).resize(CCTK_NumVars(), INT_MIN); + } + } + + // We register only once, ergo we get only one handle. We store + // that statically, so there is no need to pass anything to + // Cactus. + + /* allocate a new GH extension structure */ + + CCTK_INT numvars = CCTK_NumVars (); + + myGH = (CarpetIOHDF5GH*) malloc (sizeof (CarpetIOHDF5GH)); + myGH->out_last = (int *) malloc (numvars * sizeof (int)); + myGH->requests = (ioRequest **) calloc (numvars, sizeof (ioRequest *)); + myGH->cp_filename_list = (char **) calloc (abs (checkpoint_keep), sizeof (char *)); + myGH->cp_filename_index = 0; + myGH->out_vars = strdup (""); + myGH->out_every_default = out_every - 1; + + for (int i = 0; i < numvars; i++) + { + myGH->out_last [i] = -1; + } + + myGH->open_output_files = NULL; + + // Now set hdf5 complex datatypes + // Stolen from Thomas Radke + HDF5_ERROR (myGH->HDF5_COMPLEX = + H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX))); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX, "real", + offsetof (CCTK_COMPLEX, Re), HDF5_REAL)); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX, "imag", + offsetof (CCTK_COMPLEX, Im), HDF5_REAL)); +#ifdef CCTK_REAL4 + HDF5_ERROR (myGH->HDF5_COMPLEX8 = + H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX8))); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX8, "real", + offsetof (CCTK_COMPLEX8, Re), HDF5_REAL4)); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX8, "imag", + offsetof (CCTK_COMPLEX8, Im), HDF5_REAL4)); +#endif +#ifdef CCTK_REAL8 + HDF5_ERROR (myGH->HDF5_COMPLEX16 = + H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX16))); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX16, "real", + offsetof (CCTK_COMPLEX16, Re), HDF5_REAL8)); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX16, "imag", + offsetof (CCTK_COMPLEX16, Im), HDF5_REAL8)); +#endif +#ifdef CCTK_REAL16 + HDF5_ERROR (myGH->HDF5_COMPLEX32 = + H5Tcreate (H5T_COMPOUND, sizeof (CCTK_COMPLEX32))); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX32, "real", + offsetof (CCTK_COMPLEX32, Re), HDF5_REAL16)); + HDF5_ERROR (H5Tinsert (myGH->HDF5_COMPLEX32, "imag", + offsetof (CCTK_COMPLEX32, Im), HDF5_REAL16)); +#endif + return (myGH); +} + +int OutputGH (const cGH* const cctkGH) { + for (int vindex=0; vindex<CCTK_NumVars(); ++vindex) { + if (TimeToOutput(cctkGH, vindex)) { + TriggerOutput(cctkGH, vindex); + } + } + return 0; +} + + + +int OutputVarAs (const cGH* const cctkGH, const char* const varname, + const char* const alias) +{ + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_PARAMETERS + + int numvars = CCTK_NumVars (); + vector<bool> flags (numvars); + + if (CCTK_TraverseString (varname, SetFlag, &flags, CCTK_VAR) < 0) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "error while parsing variable name '%s' (alias name '%s')", + varname, alias); + return (-1); + } + + int vindex = 0; + while (! flags.at (vindex) && vindex < numvars) vindex++; + if (vindex >= numvars) + { + return (-1); + } + + const int group = CCTK_GroupIndexFromVarI (vindex); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + + // Check for storage + if (! CCTK_QueryGroupStorageI(cctkGH, group)) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot output variable '%s' because it has no storage", + varname); + return (0); + } + + const int grouptype = CCTK_GroupTypeI(group); + if (grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY) + { + assert (do_global_mode); + } + + /* get the default I/O request for this variable */ + ioRequest* request = IOUtil_DefaultIORequest (cctkGH, vindex, 1); + + // Get grid hierarchy extentsion from IOUtil + const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cctkGH, "IO"); + assert (iogh); + + // Create the output directory + const char* myoutdir = out3D_dir; + if (CCTK_EQUALS(myoutdir, "")) { + myoutdir = out_dir; + } + if (CCTK_MyProc(cctkGH)==0) { + CCTK_CreateDirectory (0755, myoutdir); + } + + // Invent a file name + ostringstream filenamebuf; + filenamebuf << myoutdir << "/" << alias << out3D_extension; + string filenamestr = filenamebuf.str(); + const char * const filename = filenamestr.c_str(); + + hid_t writer = -1; + + // Write the file only on the root processor + if (CCTK_MyProc (cctkGH) == 0) + { + + // If this is the first time, then create and truncate the file + if (do_truncate.at(vindex)) + { + struct stat fileinfo; + if (! iogh->recovered || stat(filename, &fileinfo)!=0) + { + HDF5_ERROR (writer = H5Fcreate (filename, H5F_ACC_TRUNC, H5P_DEFAULT, + H5P_DEFAULT)); + assert (writer>=0); + HDF5_ERROR (H5Fclose (writer)); + writer = -1; + } + } + + // Open the file + HDF5_ERROR (writer = H5Fopen (filename, H5F_ACC_RDWR, H5P_DEFAULT)); + } + + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, + "Writing variable '%s' on mglevel %d reflevel %d", + varname, mglevel, reflevel); + } + WriteVar (cctkGH, writer, request, 0); + + // Close the file + if (writer >= 0) + { + HDF5_ERROR (H5Fclose (writer)); + } + + // Don't truncate again + do_truncate.at(vindex) = false; + + return (0); +} + +int WriteVar (const cGH* const cctkGH, const hid_t writer, const ioRequest* request, + const int called_from_checkpoint) { + + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + void * h5data=NULL; + + const int n = request->vindex; + assert (n>=0 && n<CCTK_NumVars()); + const char * varname = CCTK_FullName(n); + const int group = CCTK_GroupIndexFromVarI (n); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0 && n0<CCTK_NumVars()); + const int var = n - n0; + assert (var>=0 && var<CCTK_NumVars()); + int tl = 0; + + const int gpdim = CCTK_GroupDimI(group); + + // Check for storage + if (! CCTK_QueryGroupStorageI(cctkGH, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot output variable \"%s\" because it has no storage", + varname); + return 0; + } + + const int grouptype = CCTK_GroupTypeI(group); + switch (grouptype) { + case CCTK_SCALAR: + case CCTK_ARRAY: + assert (do_global_mode); + break; + case CCTK_GF: + /* do nothing */ + break; + default: + assert (0); + } + const int rl = grouptype==CCTK_GF ? reflevel : 0; + + cGroup cgdata; + int ierr = CCTK_GroupData(group,&cgdata); + assert(ierr==0); + + // Select memory (source) and file (destination) datatypes + int cctkDataType = CCTK_VarTypeI(n); + const hid_t memdatatype = h5DataType(cctkGH, cctkDataType); + assert(memdatatype >= 0); + if (out_single_precision && ! called_from_checkpoint) + { + if (cctkDataType == CCTK_VARIABLE_REAL) + { + cctkDataType = CCTK_VARIABLE_REAL4; + } + else if (cctkDataType == CCTK_VARIABLE_COMPLEX) + { + cctkDataType = CCTK_VARIABLE_COMPLEX8; + } +#ifdef CCTK_INT2 + else if (cctkDataType == CCTK_VARIABLE_INT) + { + cctkDataType = CCTK_VARIABLE_INT2; + } +#endif + } + const hid_t filedatatype = h5DataType(cctkGH, cctkDataType); + assert(filedatatype >= 0); + + // let's get the correct Carpet time level (which is the (-1) * Cactus timelevel): + tl = - request->timelevel; + + // Traverse all components + BEGIN_MAP_LOOP(cctkGH, grouptype) { + BEGIN_COMPONENT_LOOP(cctkGH, grouptype) { + + const ggf<dim>* ff = 0; + + ff = (ggf<dim>*)arrdata.at(group).at(Carpet::map).data.at(var); + + const gdata<dim>* const data = (*ff) (tl, rl, component, mglevel); + + // Make temporary copy on processor 0 + const ibbox ext = data->extent(); +// vect<int,dim> lo = ext.lower(); +// vect<int,dim> hi = ext.upper(); +// vect<int,dim> str = ext.stride(); + + gdata<dim>* const tmp = data->make_typed (n); + tmp->allocate (ext, 0); + + if ( !((cgdata.disttype == CCTK_DISTRIB_CONSTANT) && + (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component)!=0))) { + + if (cgdata.disttype == CCTK_DISTRIB_CONSTANT) { + assert(grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR); + if(component!=0) goto skip; + h5data = CCTK_VarDataPtrI(cctkGH,tl,n); + } else { + for (comm_state<dim> state; !state.done(); state.step()) { + tmp->copy_from (state, data, ext); + } + } + // Write data + if (CCTK_MyProc(cctkGH)==0) { + + int ldim=0; + if ( grouptype==CCTK_SCALAR ) { + ldim = 1; + } else { + ldim = gpdim; + } + + // hsize_t shape[ldim]; + + vector<hsize_t> shape(ldim); + + for (int d=0; d<ldim; ++d) { + shape[ldim-1-d] = (ext.shape() / ext.stride())[d]; + } + hid_t dataspace; + HDF5_ERROR (dataspace = H5Screate_simple (ldim, &shape[0], NULL)); + assert (dataspace>=0); + + + ostringstream datasetnamebuf; + datasetnamebuf << varname + << " it=" << cctk_iteration + << " tl=" << tl + << " ml=" << mglevel + << " rl=" << rl + << " m=" << Carpet::map + << " c=" << component; + string datasetnamestr = datasetnamebuf.str(); + assert (datasetnamestr.size() <= 256); // limit dataset name size + const char * const datasetname = datasetnamestr.c_str(); + hid_t dataset; + HDF5_ERROR (dataset = H5Dcreate (writer, datasetname, filedatatype, dataspace, H5P_DEFAULT)); + + if (dataset>=0) { + + if (cgdata.disttype != CCTK_DISTRIB_CONSTANT) { + h5data = (void*)tmp->storage(); + } + + HDF5_ERROR (H5Dwrite (dataset, memdatatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, h5data)); + + // Write FlexIO attributes + WriteAttribute (dataset, "level", rl); + { + CCTK_REAL origin[dim], delta[dim]; + CCTK_REAL min_ext[dim], max_ext[dim]; + for (int d=0; d<dim; ++d) { + origin[d] = CCTK_ORIGIN_SPACE(d); + delta[d] = CCTK_DELTA_SPACE(d); + min_ext[d] = origin[d] + cctk_lbnd[d] * delta[d]; + max_ext[d] = origin[d] + cctk_ubnd[d] * delta[d]; + } + WriteAttribute (dataset, "origin", min_ext, dim); + WriteAttribute (dataset, "delta", delta, dim); + WriteAttribute (dataset, "min_ext", min_ext, dim); + WriteAttribute (dataset, "max_ext", max_ext, dim); + } + WriteAttribute (dataset, "time", cctk_time); + WriteAttribute (dataset, "timestep", cctk_iteration); + WriteAttribute (dataset, "level_timestep", cctk_iteration / reflevelfact); + WriteAttribute (dataset, "persistence", maxreflevelfact / reflevelfact); + { + int time_refinement=0; + int spatial_refinement[dim]; + int grid_placement_refinement[dim]; + time_refinement = reflevelfact; + for (int d=0; d<dim; ++d) { + spatial_refinement[d] = reflevelfact; + grid_placement_refinement[d] = reflevelfact; + } + WriteAttribute (dataset, "time_refinement", time_refinement); + WriteAttribute (dataset, "spatial_refinement", spatial_refinement, dim); + WriteAttribute (dataset, "grid_placement_refinement", grid_placement_refinement, dim); + } + { + int iorigin[dim]; + for (int d=0; d<dim; ++d) { + iorigin[d] = (ext.lower() / ext.stride())[d]; + } + WriteAttribute (dataset, "iorigin", iorigin, dim); + } + + // Write some additional attributes + + // Legacy arguments + { + char * fullname = CCTK_FullName(n); + assert (fullname); + WriteAttribute (dataset, "name", fullname); + free (fullname); + } + + // Group arguments + WriteAttribute (dataset, "group_version", 1); + { + char * fullname = CCTK_FullName(n); + assert (fullname); + WriteAttribute (dataset, "group_fullname", fullname); + free (fullname); + } + WriteAttribute (dataset, "group_varname", CCTK_VarName(n)); + { + char * groupname = CCTK_GroupName(group); + assert (groupname); + WriteAttribute (dataset, "group_groupname", groupname); + free (groupname); + } + switch (grouptype) { + case CCTK_GF: + WriteAttribute (dataset, "group_grouptype", "CCTK_GF"); + break; + case CCTK_ARRAY: + WriteAttribute (dataset, "group_grouptype", "CCTK_ARRAY"); + break; + case CCTK_SCALAR: + WriteAttribute (dataset, "group_grouptype", "CCTK_SCALAR"); + break; + default: + assert (0); + } + WriteAttribute (dataset, "group_dim", CCTK_GroupDimI(group)); + WriteAttribute (dataset, "group_timelevel", tl); + WriteAttribute (dataset, "group_numtimelevels", CCTK_NumTimeLevelsI(group)); + + // Cactus arguments + WriteAttribute (dataset, "cctk_version", 1); + WriteAttribute (dataset, "cctk_dim", cctk_dim); + WriteAttribute (dataset, "cctk_iteration", cctk_iteration); + WriteAttribute (dataset, "cctk_gsh", cctk_gsh, dim); + WriteAttribute (dataset, "cctk_lsh", cctk_lsh, dim); + WriteAttribute (dataset, "cctk_lbnd", cctk_lbnd, dim); + WriteAttribute (dataset, "cctk_delta_time", cctk_delta_time); + WriteAttribute (dataset, "cctk_delta_space", cctk_delta_space, dim); + WriteAttribute (dataset, "cctk_origin_space", cctk_origin_space, dim); + WriteAttribute (dataset, "cctk_bbox", cctk_bbox, 2*dim); + WriteAttribute (dataset, "cctk_levfac", cctk_levfac, dim); + WriteAttribute (dataset, "cctk_levoff", cctk_levoff, dim); + WriteAttribute (dataset, "cctk_levoffdenom", cctk_levoffdenom, dim); + WriteAttribute (dataset, "cctk_timefac", cctk_timefac); + WriteAttribute (dataset, "cctk_convlevel", cctk_convlevel); + WriteAttribute (dataset, "cctk_convfac", cctk_convfac); + WriteAttribute (dataset, "cctk_nghostzones", cctk_nghostzones, dim); + WriteAttribute (dataset, "cctk_time", cctk_time); + + // Carpet arguments + WriteAttribute (dataset, "carpet_version", 1); + WriteAttribute (dataset, "carpet_dim", dim); + WriteAttribute (dataset, "carpet_basemglevel", basemglevel); + WriteAttribute (dataset, "carpet_mglevel", mglevel); + WriteAttribute (dataset, "carpet_mglevels", mglevels); + WriteAttribute (dataset, "carpet_mgface", mgfact); + WriteAttribute (dataset, "carpet_reflevel", reflevel); + WriteAttribute (dataset, "carpet_reflevels", reflevels); + WriteAttribute (dataset, "carpet_reffact", reffact); + WriteAttribute (dataset, "carpet_map", Carpet::map); + WriteAttribute (dataset, "carpet_maps", maps); + WriteAttribute (dataset, "carpet_component", component); + WriteAttribute (dataset, "carpet_components", vhh.at(Carpet::map)->components(reflevel)); + + HDF5_ERROR (H5Dclose (dataset)); + } + + HDF5_ERROR (H5Sclose (dataspace)); + + } // if on root processor + } // if ! CCTK_DISTRIB_BLAH + + skip: + // Delete temporary copy + delete tmp; + + } END_COMPONENT_LOOP; + } END_MAP_LOOP; + + return 0; +} + + + +int TimeToOutput (const cGH* const cctkGH, const int vindex) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + assert (vindex>=0 && vindex<CCTK_NumVars()); + + + + const int grouptype = CCTK_GroupTypeFromVarI(vindex); + switch (grouptype) { + case CCTK_SCALAR: + case CCTK_ARRAY: + if (! do_global_mode) return 0; + break; + case CCTK_GF: + // do nothing + break; + default: + assert (0); + } + + + + // check whether to output at this iteration + bool output_this_iteration; + + const char* myoutcriterion = out3D_criterion; + if (CCTK_EQUALS(myoutcriterion, "default")) { + myoutcriterion = out_criterion; + } + + if (CCTK_EQUALS (myoutcriterion, "never")) { + + // Never output + output_this_iteration = false; + + } else if (CCTK_EQUALS (myoutcriterion, "iteration")) { + + int myoutevery = out3D_every; + if (myoutevery == -2) { + myoutevery = out_every; + } + if (myoutevery <= 0) { + // output is disabled + output_this_iteration = false; + } else if (cctk_iteration == *this_iteration) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_iteration >= *next_output_iteration) { + // it is time for the next output + output_this_iteration = true; + *next_output_iteration = cctk_iteration + myoutevery; + *this_iteration = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else if (CCTK_EQUALS (myoutcriterion, "divisor")) { + + int myoutevery = out3D_every; + if (myoutevery == -2) { + myoutevery = out_every; + } + if (myoutevery <= 0) { + // output is disabled + output_this_iteration = false; + } else if ((cctk_iteration % myoutevery) == 0) { + // we already decided to output this iteration + output_this_iteration = true; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else if (CCTK_EQUALS (myoutcriterion, "time")) { + + CCTK_REAL myoutdt = out3D_dt; + if (myoutdt == -2) { + myoutdt = out_dt; + } + if (myoutdt < 0) { + // output is disabled + output_this_iteration = false; + } else if (myoutdt == 0) { + // output all iterations + output_this_iteration = true; + } else if (cctk_iteration == *this_iteration) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_time / cctk_delta_time + >= *next_output_time / cctk_delta_time - 1.0e-12) { + // it is time for the next output + output_this_iteration = true; + *next_output_time = cctk_time + myoutdt; + *this_iteration = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else { + + assert (0); + + } // select output criterion + + if (! output_this_iteration) return 0; + + + + if (! CheckForVariable(out3D_vars, vindex)) { + // This variable should not be output + return 0; + } + + + + if (last_output.at(mglevel).at(reflevel).at(vindex) == cctk_iteration) { + // Has already been output during this iteration + char* varname = CCTK_FullName(vindex); + CCTK_VWarn (5, __LINE__, __FILE__, CCTK_THORNSTRING, + "Skipping output for variable \"%s\", because this variable " + "has already been output during the current iteration -- " + "probably via a trigger during the analysis stage", + varname); + free (varname); + return 0; + } + + assert (last_output.at(mglevel).at(reflevel).at(vindex) < cctk_iteration); + + // Should be output during this iteration + return 1; +} + + + +int TriggerOutput (const cGH* const cctkGH, const int vindex) { + assert (vindex>=0 && vindex<CCTK_NumVars()); + + char* varname = CCTK_FullName(vindex); + const int retval = OutputVarAs (cctkGH, varname, CCTK_VarName(vindex)); + free (varname); + + last_output.at(mglevel).at(reflevel).at(vindex) = cctkGH->cctk_iteration; + + return retval; +} + + + + +int ReadVar (const cGH* const cctkGH, const int vindex, + const hid_t dataset, vector<ibset> ®ions_read, + const int called_from_recovery) +{ + + DECLARE_CCTK_PARAMETERS; + + const int group = CCTK_GroupIndexFromVarI (vindex); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + char *fullname = CCTK_FullName (vindex); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0 && n0<CCTK_NumVars()); + const int var = vindex - n0; + assert (var>=0 && var<CCTK_NumVars()); + int tl = 0; + + bool did_read_something = false; + + // Stuff needed for Recovery + + void *h5data = NULL; + + if (verbose) + { + CCTK_VInfo (CCTK_THORNSTRING, " reading '%s'", fullname); + } + + // Check for storage + if (! CCTK_QueryGroupStorageI(cctkGH, group)) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot input variable \"%s\" because it has no storage", + fullname); + free (fullname); + return 0; + } + + const int grouptype = CCTK_GroupTypeI(group); + if ((grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY) && reflevel > 0) + { + free (fullname); + return 0; + } + + const int gpdim = CCTK_GroupDimI(group); + + + int intbuffer[2 + 2*dim]; + int &group_timelevel = intbuffer[0], + &amr_level = intbuffer[1]; + int *amr_origin = &intbuffer[2], + *amr_dims = &intbuffer[2+dim]; + + if (CCTK_MyProc(cctkGH)==0) + { + // get dataset dimensions + hid_t dataspace; + HDF5_ERROR (dataspace = H5Dget_space (dataset)); + int rank = (int) H5Sget_simple_extent_ndims (dataspace); + assert (0 < rank && rank <= dim); + assert ((grouptype == CCTK_SCALAR ? gpdim+1 : gpdim) == rank); + vector<hsize_t> shape(rank); + HDF5_ERROR (H5Sget_simple_extent_dims (dataspace, &shape[0], NULL)); + HDF5_ERROR (H5Sclose (dataspace)); + + for (int i = 0; i < dim; i++) + { + amr_dims[i] = 1; + amr_origin[i] = 0; + } + int datalength = 1; + for (int i = 0; i < rank; i++) + { + datalength *= shape[i]; + amr_dims[i] = shape[rank-i-1]; + } + + const int cctkDataType = CCTK_VarTypeI(vindex); + const hid_t datatype = h5DataType(cctkGH,cctkDataType); + + //cout << "datalength: " << datalength << " rank: " << rank << "\n"; + //cout << shape[0] << " " << shape[1] << " " << shape[2] << "\n"; + + // to do: read in an allocate with correct datatype + + h5data = malloc (CCTK_VarTypeSize (cctkDataType) * datalength); + HDF5_ERROR (H5Dread (dataset, datatype, H5S_ALL, H5S_ALL, H5P_DEFAULT, + h5data)); + + ReadAttribute (dataset, "level", amr_level); + ReadAttribute (dataset, "iorigin", amr_origin, rank); + + if(called_from_recovery) + { + ReadAttribute(dataset,"group_timelevel", group_timelevel); + } + } // MyProc == 0 + + MPI_Bcast (intbuffer, sizeof (intbuffer) / sizeof (*intbuffer), MPI_INT, 0, dist::comm); + +#ifdef CARPETIOHDF5_DEBUG + cout << "amr_level: " << amr_level << " reflevel: " << reflevel << endl; +#endif + + if (amr_level == reflevel) + { + // Traverse all components on all levels + BEGIN_MAP_LOOP(cctkGH, grouptype) + { + BEGIN_COMPONENT_LOOP(cctkGH, grouptype) + { + did_read_something = true; + + ggf<dim>* ff = 0; + + assert (var < (int)arrdata.at(group).at(Carpet::map).data.size()); + ff = (ggf<dim>*)arrdata.at(group).at(Carpet::map).data.at(var); + + if(called_from_recovery) tl = group_timelevel; + + gdata<dim>* const data = (*ff) (tl, reflevel, component, mglevel); + + // Create temporary data storage on processor 0 + vect<int,dim> str = vect<int,dim>(maxreflevelfact/reflevelfact); + + if(grouptype == CCTK_SCALAR || grouptype == CCTK_ARRAY) + str = vect<int,dim> (1); + + vect<int,dim> lb = vect<int,dim>::ref(amr_origin) * str; + vect<int,dim> ub + = lb + (vect<int,dim>::ref(amr_dims) - 1) * str; + + gdata<dim>* const tmp = data->make_typed (vindex); + + + cGroup cgdata; + int ierr = CCTK_GroupData(group,&cgdata); + assert(ierr==0); + //cout << "lb_before: " << lb << endl; + //cout << "ub_before: " << ub << endl; + if (cgdata.disttype == CCTK_DISTRIB_CONSTANT) { +#ifdef CARPETIOHDF5_DEBUG + cout << "CCTK_DISTRIB_CONSTANT: " << fullname << endl; +#endif + assert(grouptype == CCTK_ARRAY || grouptype == CCTK_SCALAR); + if (grouptype == CCTK_SCALAR) { + lb[0] = arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component); + ub[0] = arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component); + for(int i=1;i<dim;i++) { + lb[i]=0; + ub[i]=0; + } + } else { + const int newlb = lb[gpdim-1] + + (ub[gpdim-1]-lb[gpdim-1]+1)* + (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component)); + const int newub = ub[gpdim-1] + + (ub[gpdim-1]-lb[gpdim-1]+1)* + (arrdata.at(group).at(Carpet::map).hh->processors.at(reflevel).at(component)); + lb[gpdim-1] = newlb; + ub[gpdim-1] = newub; + } +#ifdef CARPETIOHDF5_DEBUG + cout << "lb: " << lb << endl; + cout << "ub: " << ub << endl; +#endif + } + const bbox<int,dim> ext(lb,ub,str); + +#ifdef CARPETIOHDF5_DEBUG + cout << "ext: " << ext << endl; +#endif + + if (CCTK_MyProc(cctkGH)==0) { + tmp->allocate (ext, 0, h5data); + } else { + tmp->allocate (ext, 0); + } + + // Initialise with what is found in the file -- this does + // not guarantee that everything is initialised. + const bbox<int,dim> overlap = tmp->extent() & data->extent(); + regions_read.at(Carpet::map) |= overlap; + +#ifdef CARPETIOHDF5_DEBUG + cout << "working on component: " << component << endl; + cout << "tmp->extent " << tmp->extent() << endl; + cout << "data->extent " << data->extent() << endl; + cout << "overlap " << overlap << endl; + cout << "-----------------------------------------------------" << endl; +#endif + + // FIXME: is this barrier really necessary ?? + MPI_Barrier(MPI_COMM_WORLD); + + // Copy into grid function + for (comm_state<dim> state; !state.done(); state.step()) { + data->copy_from (state, tmp, overlap); + } + + + // Delete temporary copy + delete tmp; + + + } END_COMPONENT_LOOP; + + if (called_from_recovery) { + arrdata.at(group).at(Carpet::map).tt->set_time(reflevel,mglevel, + (CCTK_REAL) ((cctkGH->cctk_time - cctk_initial_time) + / (delta_time * mglevelfact)) ); + } + + + } END_MAP_LOOP; + + } // if amr_level == reflevel + + free (h5data); + free (fullname); + + return did_read_something; +} + + + +static int InputVarAs (const cGH* const cctkGH, const int vindex, + const char* const alias) +{ + DECLARE_CCTK_PARAMETERS; + + char *fullname = CCTK_FullName (vindex); + const int group = CCTK_GroupIndexFromVarI (vindex); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + + int want_dataset = 0; + bool did_read_something = false; + int ndatasets = 0; + hid_t dataset = 0; + + char datasetname[1024]; + + // Check for storage + if (! CCTK_QueryGroupStorageI(cctkGH, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot input variable \"%s\" because it has no storage", + fullname); + free (fullname); + return 0; + } + + const int grouptype = CCTK_GroupTypeI(group); + const int rl = grouptype==CCTK_GF ? reflevel : 0; + //cout << "want level " << rl << " reflevel " << reflevel << endl; + + // Find the input directory + const char* const myindir = in3D_dir; + + // Invent a file name + ostringstream filenamebuf; + filenamebuf << myindir << "/" << alias << in3D_extension; + string filenamestr = filenamebuf.str(); + const char * const filename = filenamestr.c_str(); + + hid_t reader = -1; + + // Read the file only on the root processor + if (CCTK_MyProc(cctkGH)==0) { + + // Open the file + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Opening file \"%s\"", filename); + reader = H5Fopen (filename, H5F_ACC_RDONLY, H5P_DEFAULT); + if (reader<0) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not open file \"%s\" for reading", filename); + } + assert (reader>=0); + // get the number of datasets in the file + ndatasets=GetnDatasets(reader); + } + + vector<ibset> regions_read(Carpet::maps); + + // Broadcast number of datasets + MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + assert (ndatasets>=0); + + + for (int datasetid=0; datasetid<ndatasets; ++datasetid) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Handling dataset #%d", datasetid); + + + // Read data + if (CCTK_MyProc(cctkGH)==0) { + GetDatasetName(reader,datasetid,datasetname); + // cout << datasetname << "\n"; + + HDF5_ERROR (dataset = H5Dopen (reader, datasetname)); + } + + +#if 0 + int amr_level; + int amr_origin[dim]; + int amr_dims[dim]; +#endif + + if (CCTK_MyProc(cctkGH)==0) { + + // Read data + char * name; + ReadAttribute (dataset, "name", name); + // cout << "dataset name is " << name << endl; + if (verbose && name) { + CCTK_VInfo (CCTK_THORNSTRING, "Dataset name is \"%s\"", name); + } + want_dataset = name && CCTK_EQUALS(name, fullname); + free (name); + } // myproc == 0 + + MPI_Bcast (&want_dataset, 1, MPI_INT, 0, dist::comm); + + if(want_dataset) { + did_read_something = ReadVar(cctkGH,vindex,dataset,regions_read,0); + } // want_dataset + + } // loop over datasets + + // Close the file + if (CCTK_MyProc(cctkGH)==0) { + if (verbose) CCTK_VInfo (CCTK_THORNSTRING, "Closing file"); + HDF5_ERROR (H5Fclose(reader)); + reader=-1; + } + + // Was everything initialised? + if (did_read_something) { + for (int m=0; m<Carpet::maps; ++m) { + dh<dim>& thedd = *arrdata.at(group).at(m).dd; + ibset all_exterior; + for (size_t c=0; c<thedd.boxes.at(rl).size(); ++c) { + all_exterior |= thedd.boxes.at(rl).at(c).at(mglevel).exterior; + } + if (regions_read.at(m) != all_exterior) { +#ifdef CARPETIOHDF5_DEBUG + cout << "read: " << regions_read.at(m) << endl + << "want: " << all_exterior << endl; +#endif + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Variable \"%s\" could not be initialised from file -- the file may be missing data", + fullname); + } + } + } // if did_read_something + // CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING,"stop!"); + + return did_read_something ? 0 : -1; + +} + + +int CarpetIOHDF5ReadData (const cGH* const cctkGH) +{ + int retval = 0; + DECLARE_CCTK_PARAMETERS + + + int numvars = CCTK_NumVars (); + vector<bool> flags (numvars); + + if (CCTK_TraverseString (in3D_vars, SetFlag, &flags, CCTK_GROUP_OR_VAR) < 0) + { + CCTK_VWarn (strict_io_parameter_check ? 0 : 1, + __LINE__, __FILE__, CCTK_THORNSTRING, + "error while parsing parameter 'IOHDF5::in3D_vars'"); + } + + for (int vindex = 0; vindex < numvars; vindex++) + { + if (flags.at (vindex)) + { + retval = InputVarAs (cctkGH, vindex, CCTK_VarName (vindex)); + if (retval) + { + break; + } + } + } + + return (retval); +} + + + +#if 0 +/** returns the number of recovered variables */ +int Recover (cGH* const cctkGH, const char *basefilename, + const int called_from) +{ + assert (cctkGH); + assert (basefilename); + assert (called_from == CP_INITIAL_DATA + || called_from == CP_EVOLUTION_DATA + || called_from == CP_RECOVER_PARAMETERS + || called_from == CP_RECOVER_DATA + || called_from == FILEREADER_DATA); + + // the other modes are not supported yet + assert (called_from == FILEREADER_DATA); + + const ioGH * const iogh = (const ioGH *) CCTK_GHExtension (cctkGH, "IO"); + assert (iogh); + + int num_vars_read = 0; + assert (iogh->do_inVars); + for (int n=0; n<CCTK_NumVars(); ++n) { + if (iogh->do_inVars[n]) { + const int ierr = InputVarAs (cctkGH, vindex, basefilename); + if (! ierr) { + ++ num_vars_read; + } + } + } + + return num_vars_read; +} +#endif + +} // namespace CarpetIOHDF5 diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.h b/Carpet/CarpetIOHDF5/src/iohdf5.h new file mode 100644 index 000000000..17ea9d98a --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5.h @@ -0,0 +1,44 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.h,v 1.7 2004/08/18 16:02:56 tradke Exp $ */ + +#ifndef CARPETIOHDF5_H +#define CARPETIOHDF5_H + +#ifdef __cplusplus +namespace CarpetIOHDF5 { + extern "C" { +#endif + +#ifdef USE_CHRISTIANS_ROUTINES +#include "cctk_Arguments.h" + +int CarpetIOHDF5Startup (void); +void CarpetIOHDF5Init (CCTK_ARGUMENTS); +void CarpetIOHDF5ReadData (CCTK_ARGUMENTS); +void CarpetIOHDF5_EvolutionCheckpoint (const cGH*); +void CarpetIOHDF5_InitialDataCheckpoint (const cGH*); + +#else + +/* Scheduled functions */ +void CarpetIOHDF5Startup (void); +int CarpetIOHDF5Init (const cGH* const); +int CarpetIOHDF5ReadData (const cGH* const); +int CarpetIOHDF5_InitialDataCheckpoint (const cGH* const); +int CarpetIOHDF5_EvolutionCheckpoint (const cGH* const); +int CarpetIOHDF5_TerminationCheckpoint (const cGH* const); +void CarpetIOHDF5EvolutionCheckpoint (const cGH* const); +void CarpetIOHDF5InitialDataCheckpoint (const cGH* const); + +#endif + +int CarpetIOHDF5_Recover (cGH* cgh, const char *basefilename, int called_from); + +int CarpetIOHDF5_RecoverParameters (void); +int CarpetIOHDF5_CloseFile (void); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetIOHDF5 */ +#endif + +#endif /* !defined(CARPETIOHDF5_H) */ diff --git a/Carpet/CarpetIOHDF5/src/iohdf5.hh b/Carpet/CarpetIOHDF5/src/iohdf5.hh new file mode 100644 index 000000000..bfb49386b --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5.hh @@ -0,0 +1,198 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5.hh,v 1.12 2004/07/09 15:38:18 tradke Exp $ + +#ifndef CARPETIOHDF5_HH +#define CARPETIOHDF5_HH + +#include <vector> + +#include "cctk.h" +#include "cctk_Arguments.h" + +#include "carpet.hh" + +#include "iohdf5.h" +#include "CactusBase/IOUtil/src/ioutil_Utils.h" + +/* some macros for HDF5 group names */ +#define METADATA_GROUP "Parameters and Global Attributes" +#define ALL_PARAMETERS "All Parameters" + +// Some MPI Datatypes we need for Recovery +// Originally written by Thomas Radke. + +#ifdef CCTK_INT4 +#define CARPET_MPI_INT4 (sizeof (CCTK_INT4) == sizeof (int) ? MPI_INT : \ + sizeof (CCTK_INT4) == sizeof (short) ? MPI_SHORT : \ + MPI_DATATYPE_NULL) +#endif + +#define CARPET_MPI_CHAR MPI_CHAR + +/* floating point types are architecture-independent, + ie. a float has always 4 bytes, and a double has 8 bytes + + PUGH_MPI_REAL is used for communicating reals of the generic CCTK_REAL type + PUGH_MPI_REALn is used to explicitely communicate n-byte reals */ +#ifdef CCTK_REAL4 +#define CARPET_MPI_REAL4 MPI_FLOAT +#endif +#ifdef CCTK_REAL8 +#define CARPET_MPI_REAL8 MPI_DOUBLE +#endif +#ifdef CCTK_REAL16 +#define CARPET_MPI_REAL16 (sizeof (CCTK_REAL16) == sizeof (long double) ? \ + MPI_LONG_DOUBLE : MPI_DATATYPE_NULL) +#endif + + +#ifdef CCTK_REAL_PRECISION_16 +#define CARPET_MPI_REAL CARPET_MPI_REAL16 +#elif CCTK_REAL_PRECISION_8 +#define CARPET_MPI_REAL CARPET_MPI_REAL8 +#elif CCTK_REAL_PRECISION_4 +#define CARPET_MPI_REAL CARPET_MPI_REAL4 +#endif + + +/*** Define the different datatypes used for HDF5 I/O + NOTE: the complex datatype SHOULD be [is] defined dynamically at runtime in Startup.c + 100% of the definitions below were taken from Thomas Radke's IOHDF5Util thorn for PUGH + ***/ +/* char type is easy */ +#define HDF5_CHAR H5T_NATIVE_CHAR + +/* floating point types are architecture-independent, + ie. a float has always 4 bytes, and a double has 8 bytes + HDF5_REAL is used for storing reals of the generic CCTK_REAL type + HDF5_REALn is used to explicitely store n-byte reals */ +#ifdef CCTK_REAL4 +#define HDF5_REAL4 H5T_NATIVE_FLOAT +#endif +#ifdef CCTK_REAL8 +#define HDF5_REAL8 H5T_NATIVE_DOUBLE +#endif +#ifdef CCTK_REAL16 +#define HDF5_REAL16 (sizeof (CCTK_REAL16) == sizeof (long double) ? \ + H5T_NATIVE_LDOUBLE : -1) +#endif + + +#ifdef CCTK_REAL_PRECISION_16 +#define HDF5_REAL HDF5_REAL16 +#elif CCTK_REAL_PRECISION_8 +#define HDF5_REAL HDF5_REAL8 +#elif CCTK_REAL_PRECISION_4 +#define HDF5_REAL HDF5_REAL4 +#endif + + +/* integer types are architecture-dependent: + HDF5_INT is used for communicating integers of the generic CCTK_INT type + HDF5_INTn is used to explicitely communicate n-byte integers */ +#ifdef CCTK_INT8 +#define HDF5_INT8 (sizeof (CCTK_INT8) == sizeof (int) ? H5T_NATIVE_INT : \ + sizeof (CCTK_INT8) == sizeof (long) ? H5T_NATIVE_LONG : \ + sizeof (CCTK_INT8) == sizeof (long long) ? \ + H5T_NATIVE_LLONG : -1) +#endif + +#ifdef CCTK_INT4 +#define HDF5_INT4 (sizeof (CCTK_INT4) == sizeof (int) ? H5T_NATIVE_INT : \ + sizeof (CCTK_INT4) == sizeof (short) ? \ + H5T_NATIVE_SHORT : -1) +#endif + +#ifdef CCTK_INT2 +#define HDF5_INT2 (sizeof (CCTK_INT2) == sizeof (short) ? \ + H5T_NATIVE_SHORT : -1) +#endif + +#ifdef CCTK_INT1 +#define HDF5_INT1 H5T_NATIVE_CHAR +#endif + +#ifdef CCTK_INTEGER_PRECISION_8 +#define HDF5_INT HDF5_INT8 +#elif CCTK_INTEGER_PRECISION_4 +#define HDF5_INT HDF5_INT4 +#elif CCTK_INTEGER_PRECISION_2 +#define HDF5_INT HDF5_INT2 +#elif CCTK_INTEGER_PRECISION_1 +#define HDF5_INT HDF5_INT1 +#endif + +/* Nice error handling. Stolen from Thomas Radke */ +/* check return code of HDF5 call and print a warning in case of an error */ +#define HDF5_ERROR(fn_call) \ + { \ + int _error_code = fn_call; \ + \ + \ + if (_error_code < 0) \ + { \ + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, \ + "HDF5 call '%s' returned error code %d", \ + #fn_call, _error_code); \ + } \ + } + + + + +namespace CarpetIOHDF5 { + + using namespace std; + using namespace Carpet; + + // Variable definitions + extern vector<bool> do_truncate; // [var] + extern vector<vector<vector<int> > > last_output; // [ml][rl][var] + + void* SetupGH (tFleshConfig* const fc, + const int convLevel, cGH* const cctkGH); + + int OutputGH (const cGH* const cctkGH); + int WriteVar (const cGH* const cctkGH, const hid_t writer, const ioRequest* request, + const int called_from_checkpoint); + int OutputVarAs (const cGH* const cctkGH, const char* const varname, + const char* const alias); + + int TimeToOutput (const cGH* const cctkGH, const int vindex); + int TriggerOutput (const cGH* const cctkGH, const int vindex); + + int InputGH (const cGH* const cctkGH); + int ReadVar (const cGH* const cctkGH, const int vindex, + const hid_t currdataset, vector<ibset> ®ions_read, + const int called_from_recovery); + + int Recover (cGH* cgh, const char *basefilename, int called_from); + + // auxiliary functions defined in iohdf5utils.cc + + bool CheckForVariable (const char* const varlist, const int vindex); + void SetFlag (int index, const char* optstring, void* arg); + + void WriteAttribute (const hid_t dataset, const char* name, int value); + void WriteAttribute (const hid_t dataset, const char* name, const int* values, int nvalues); + void WriteAttribute (const hid_t dataset, const char* name, double value); + void WriteAttribute (const hid_t dataset, const char* name, const double* values, int nvalues); + void WriteAttribute (const hid_t dataset, const char* name, char value); + void WriteAttribute (const hid_t dataset, const char* name, const char* values); + void WriteAttribute (const hid_t dataset, const char* name, const char* values, int nvalues); + + int ReadAttribute (const hid_t dataset, const char* name, int& value); + int ReadAttribute (const hid_t dataset, const char* name, int* values, int nvalues); + int ReadAttribute (const hid_t dataset, const char* name, double& value); + int ReadAttribute (const hid_t dataset, const char* name, double* values, int nvalues); + int ReadAttribute (const hid_t dataset, const char* name, char& value); + int ReadAttribute (const hid_t dataset, const char* name, char*& values); + int ReadAttribute (const hid_t dataset, const char* name, char* values, int nvalues); + + int GetnDatasets (const hid_t reader); + void GetDatasetName (const hid_t reader, const int _index, char* name); + + hid_t h5DataType(const cGH* const cctkGH, int cctk_type); + +} // namespace CarpetIOHDF5 + +#endif // !defined(CARPETIOHDF5_HH) diff --git a/Carpet/CarpetIOHDF5/src/iohdf5GH.h b/Carpet/CarpetIOHDF5/src/iohdf5GH.h new file mode 100644 index 000000000..0516201c2 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5GH.h @@ -0,0 +1,56 @@ +// This was adopted from Thomas Radke's IOHDF5 thorn. +// Thanks, Thomas! + +#ifndef _CARPETIOHDF5_IOHDF5GH_H_ +#define _CARPETIOHDF5_IOHDF5GH_H_ 1 + +#include "StoreNamedData.h" + +/* I took basically everything in this file from Thomas' IOHDF5; much of + below is still unused.. */ + +/* CARPET IOHDF5 GH extension structure */ +typedef struct +{ + /* default number of times to output */ + int out_every_default; + + /* number of times to output for each variable */ + CCTK_INT *out_every; + + /* the last iteration output for each variable */ + int *out_last; + + /* list of variables to output */ + char *out_vars; + + /* I/O request description list (for all variables) */ + ioRequest **requests; + + /* directory in which to output */ + char *out_dir; + + /* filename database for opened files */ + pNamedData *open_output_files; + + /* timer array for checkpointing/recovery */ + // int timers[IOHDF5_NUM_TIMERS]; + + /* flag to indicate request for timer output */ + // int print_timing_info; + + /* ring buffer for list of successfully created cp files */ + int cp_filename_index; + char **cp_filename_list; + + /* iteration number of the last checkpoint */ + int last_checkpoint_iteration; + + /* hdf5 datatype for stupid complex variables; to be set at run time */ + hid_t HDF5_COMPLEX, HDF5_COMPLEX8, HDF5_COMPLEX16, HDF5_COMPLEX32; + + +} CarpetIOHDF5GH; + + +#endif diff --git a/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc b/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc new file mode 100644 index 000000000..f8e6b9a3d --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc @@ -0,0 +1,914 @@ +#include <assert.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <sstream> +#include <string> +#include <vector> + +#include <hdf5.h> + +#include "cctk.h" +#include "cctk_Parameters.h" +#include "cctk_Version.h" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5chckpt_recover.cc,v 1.36 2004/07/07 11:01:05 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5chckpt_recover_cc); +} + +#include "CactusBase/IOUtil/src/ioGH.h" +#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h" + +#include "bbox.hh" +#include "data.hh" +#include "gdata.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "iohdf5.hh" +#include "iohdf5GH.h" + +/* some macros for HDF5 group names */ +#define PARAMETERS_GLOBAL_ATTRIBUTES_GROUP "Parameters and Global Attributes" +#define ALL_PARAMETERS "All Parameters" + + + +namespace CarpetIOHDF5 { + + using namespace std; + using namespace Carpet; + + // linked list for reading in the checkpoint file + + list<string> datasetnamelist; + + int Checkpoint (const cGH* const cctkGH, int called_from); + int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer); + + int RecoverParameters (hid_t reader); + int RecoverGHextensions (cGH* cctkGH, hid_t reader); + int RecoverVariables (cGH* cctkGH, hid_t reader); + + void CarpetIOHDF5InitialDataCheckpoint( const cGH* const cgh){ + + DECLARE_CCTK_PARAMETERS; + + if (checkpoint && checkpoint_ID) + { + CCTK_INFO ("---------------------------------------------------------"); + CCTK_INFO ("Dumping initial data checkpoint"); + CCTK_INFO ("---------------------------------------------------------"); + + Checkpoint (cgh, CP_INITIAL_DATA); + } + } // CarpetIOHDF5_InitialDataCheckpoint + + + void CarpetIOHDF5EvolutionCheckpoint( const cGH* const cgh){ + + DECLARE_CCTK_PARAMETERS; + + // Test checkpoint_every, and adjust it. This is necessary until + // recovery is more flexible. + int every_full = pow(2.0,maxreflevels-1); + if (checkpoint_every>0 && (checkpoint_every % every_full) != 0) { + int every = (checkpoint_every / every_full + 1) * every_full; + ostringstream outevery; + outevery << every; + CCTK_ParameterSet("checkpoint_every","IOUtil", + outevery.str().c_str()); + CCTK_VInfo (CCTK_THORNSTRING,"I have adjusted your checkpoint_every to %i.",every); + + } + + if (checkpoint && + ((checkpoint_every > 0 && cgh->cctk_iteration % checkpoint_every == 0) || + checkpoint_next)) + { + CCTK_INFO ("---------------------------------------------------------"); + CCTK_VInfo (CCTK_THORNSTRING, "Dumping periodic checkpoint at " + "iteration %d", cgh->cctk_iteration); + CCTK_INFO ("---------------------------------------------------------"); + + Checkpoint (cgh, CP_EVOLUTION_DATA); + + if (checkpoint_next) + { + CCTK_ParameterSet ("checkpoint_next", CCTK_THORNSTRING, "no"); + } + } + } // CarpetIOHDF5_EvolutionCheckpoint + + + int CarpetIOHDF5RecoverParameters(void){ + // Register with the Cactus Recovery Interface + return (IOUtil_RecoverParameters (CarpetIOHDF5_Recover, ".h5", "HDF5")); + } + + int CarpetIOHDF5_Recover (cGH* cctkGH, const char *basefilename, int called_from) { + + DECLARE_CCTK_PARAMETERS; + + int result=0; + int myproc=-1; + + CarpetIOHDF5GH *myGH; + + + static hid_t reader=0; //this thing absolutely needs to be static!!! + + myGH = NULL; + + myproc = CCTK_MyProc (cctkGH); + + + if (called_from == CP_RECOVER_PARAMETERS) { + // Okay, let's see what we can do about the parameters + + // Invent a file name + ostringstream filenamebuf; + + // if(CCTK_nProcs(cctkGH) == 1) + filenamebuf << recover_dir << "/" << basefilename << ".h5"; + //else + // filenamebuf << recover_dir << "/" << basefilename << ".file_0.h5"; + + string filenamestr = filenamebuf.str(); + const char * const filename = filenamestr.c_str(); + + if (myproc == 0) { + // First, open the file + if (verbose) + CCTK_VInfo(CCTK_THORNSTRING, "Opening Checkpoint file %s for recovery",filename); + reader = H5Fopen (filename, H5F_ACC_RDONLY, H5P_DEFAULT); + if (reader<0) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not recover from \"%s\"", filename); + } + } // myproc == 0 + } + else { + /* This is the case for CP_RECOVER_DATA. + CCTK_RECOVER_PARAMETERS must have been called before + and set up the file info structure. */ + if (myproc == 0) { + assert(reader>=0); + } + } + + if (called_from == CP_RECOVER_PARAMETERS) + { + return (RecoverParameters (reader)); + } + + if (called_from == CP_RECOVER_DATA) { + CCTK_INT4 numberofmgtimes=0; + + CCTK_VInfo(CCTK_THORNSTRING,"Starting to recover data on reflevel %d!!!",reflevel); + + if (myproc == 0) { + + // Use refinement levels parameter from checkpointing file? + if (use_reflevels_from_checkpoint && reflevel==0) { + + herr_t herr; + + hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP); + assert(group >= 0); + hid_t dataset = H5Dopen (group, ALL_PARAMETERS); + assert(dataset>= 0); + + int reflevels_chkpt; + + ReadAttribute (dataset, "carpet_reflevels", reflevels_chkpt); + + herr = H5Dclose(dataset); + assert(!herr); + herr = H5Gclose(group); + assert(!herr); + + ostringstream reflevels_str; + reflevels_str << reflevels_chkpt; + CCTK_ParameterSet ("refinement_levels","CarpetRegrid",reflevels_str.str().c_str()); + + CCTK_VInfo (CCTK_THORNSTRING, "Using %i reflevels read from checkpoint file. Ignoring value in parameter file.", reflevels_chkpt); + + } + + /* we need all the times on the individual levels */ + // these are a bit messy to extract + + // Actually, we do have to do this only once + + hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP); + assert(group>=0); + hid_t dataset = H5Dopen (group, ALL_PARAMETERS); + assert(dataset >= 0); + hid_t attr = H5Aopen_name (dataset, "numberofmgtimes"); + assert(attr >= 0); + hid_t atype = H5Aget_type (attr); + if(H5Tequal(atype, H5T_NATIVE_INT)) { + herr_t herr = H5Aread(attr, atype, &numberofmgtimes); + assert(!herr); + herr = H5Aclose(attr); + assert(numberofmgtimes==mglevels); + char buffer[100]; + for(int lcv=0;lcv<numberofmgtimes;lcv++) { + sprintf(buffer,"mgleveltimes %d",lcv); + attr = H5Aopen_name(dataset, buffer); + assert (attr>=0); + atype = H5Aget_type (attr); + assert (atype>=0); + herr = H5Aread (attr, atype, &leveltimes.at(lcv).at(0)); + assert(!herr); + herr = H5Aclose(attr); + assert(!herr); + } + herr = H5Dclose(dataset); + assert(!herr); + herr = H5Gclose(group); + assert(!herr); + } else { + CCTK_WARN(0,"BAD BAD BAD! Can't read leveltimes!!"); + } + + } // myproc == 0 + + + // communicate the time on all the mglevels and reflevels + + int mpierr = MPI_Bcast (&numberofmgtimes, 1, CARPET_MPI_INT4, 0,MPI_COMM_WORLD); + assert(!mpierr); + + + for(int i=0;i<numberofmgtimes;i++) { + mpierr = MPI_Bcast (&(leveltimes.at(i).at(0)), reflevels, CARPET_MPI_REAL, 0, MPI_COMM_WORLD); + assert(!mpierr); + } + + if (verbose) { + cout << "leveltimes: " << leveltimes << endl; + } + + cctkGH->cctk_time = leveltimes.at(mglevel).at(reflevel); + + result += RecoverGHextensions(cctkGH,reader); + + + if (verbose) { + cout << "reflevel: " << reflevel << endl; + } + + result += RecoverVariables (cctkGH,reader); + + + CCTK_VInfo (CCTK_THORNSTRING, + "Restarting simulation at iteration %d (physical time %g)", + cctkGH->cctk_iteration, (double) cctkGH->cctk_time); + + } // called_from == CP_RECOVER_DATA + + if (reflevel==maxreflevels) { + if(myproc == 0) { + H5Fclose(reader); + } + } + + return (result); + } // CarpetIOHDF5_Recover + + + int RecoverVariables (cGH* cctkGH, hid_t reader) { + + DECLARE_CCTK_PARAMETERS; + + int retval = 0; + int myproc = CCTK_MyProc (cctkGH); + char * name; + + int ndatasets; + + int varindex; + + double datasettime; + double leveltime; + static double totaltime; + + hid_t dataset; + herr_t herr; + + list<string> refleveldatasetnamelist; + + if (reflevel==0) { + totaltime = 0; + } + + leveltime = MPI_Wtime(); + + + if(myproc==0) { + ndatasets=GetnDatasets(reader); + assert (ndatasets>=0); + } + + // Broadcast number of datasets + MPI_Bcast (&ndatasets, 1, MPI_INT, 0, dist::comm); + + assert ((ndatasets)>=0); + + //if (verbose && reflevel==0) cout << "ndatasets: " << ndatasets << endl; + if ( reflevel == 0) { + cout << "ndatasets: " << ndatasets << endl; + } + + if (reflevel==0) { + for (int currdataset=0;currdataset<ndatasets+1;currdataset++){ + char datasetname[256]; + if (myproc==0) { + GetDatasetName(reader,currdataset,datasetname); + datasetnamelist.push_back(datasetname); + } //myproc = 0 + else { + datasetnamelist.push_back("blah"); + } + } + } + + cout << "I have " << datasetnamelist.size() << endl; + + double comparetime = MPI_Wtime(); + + if(myproc==0) { + // for(currdataset=datasetnamelist.begin(); + // currdataset!=datasetnamelist.end(); + // ++currdataset) { + + list<string>::iterator currdataset; + currdataset=datasetnamelist.begin(); + while(currdataset!=datasetnamelist.end()) { + char tempstr[10]; + sprintf(tempstr,"rl=%d m=",reflevel); + if ( (*currdataset).find(tempstr) < (*currdataset).size() ) { + refleveldatasetnamelist.push_back((*currdataset).c_str()); + currdataset = datasetnamelist.erase(currdataset); + } else { + ++currdataset; + } // if ... + } // while ... + } // if(myproc==0) + + + + + static long reflevelnamenum; // static keeps this thing local + + if(myproc==0) { + reflevelnamenum=refleveldatasetnamelist.size(); + } + + MPI_Bcast (&reflevelnamenum, 1, MPI_LONG, 0, dist::comm); + assert ((reflevelnamenum)>=0); + + // fill bogus namelist for non-IO cpus + if(myproc !=0) { + for(long i=0;i < reflevelnamenum;i++) { + refleveldatasetnamelist.push_back("blah"); + } + } + + comparetime = MPI_Wtime() - comparetime; + cout << "Time for string comparison: " << comparetime << endl; + cout << "I have for this reflevel " << refleveldatasetnamelist.size() << endl; + + list<string>::iterator currdataset; + + currdataset=refleveldatasetnamelist.begin(); + + while(currdataset!=refleveldatasetnamelist.end()) { + + // cout << "name: " << (*currdataset).c_str() << endl; + + if (myproc==0) { + dataset = H5Dopen (reader, (*currdataset).c_str()); + assert(dataset); + // Read data + ReadAttribute (dataset, "name", name); + varindex = CCTK_VarIndex(name); + } + + MPI_Bcast (&varindex, 1, MPI_INT, 0, dist::comm); + + name = CCTK_FullName(varindex); + + if (verbose) { + cout << name << " rl: " << reflevel << endl; + } + vector<ibset> regions_read(Carpet::maps); + + assert (varindex>=0 && varindex<CCTK_NumVars()); + const int group = CCTK_GroupIndexFromVarI (varindex); + const int grouptype = CCTK_GroupTypeI(group); + + int did_read_something = ReadVar(cctkGH,name,dataset,regions_read,1); + + MPI_Bcast (&did_read_something, 1, MPI_INT, 0, dist::comm); + + if (did_read_something) { + currdataset = refleveldatasetnamelist.erase(currdataset); + } else { + ++currdataset; + } + + if(myproc==0) { + herr = H5Dclose(dataset); + assert(!herr); + } + free(name); + + } // for (currdataset ... ) + leveltime = MPI_Wtime() - leveltime; + totaltime = totaltime + leveltime; + + cout << "Timers: leveltime: " << leveltime << " totaltime: " << totaltime << endl; + + return retval; + } + + + int RecoverGHextensions (cGH *cctkGH, hid_t reader) + { + const int myproc = CCTK_MyProc(cctkGH); + CCTK_INT4 int4Buffer[3]; + CCTK_REAL realBuffer; + CCTK_REAL realBuffer2; + CCTK_INT4 intbuffer; + + int mpierr = 0; + + if (myproc==0) + { + + // First open group and dataset + hid_t group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP); + assert(group>=0); + hid_t dataset = H5Dopen (group, ALL_PARAMETERS); + assert(dataset >= 0); + + ReadAttribute(dataset,"GH$iteration",int4Buffer[0]); + ReadAttribute(dataset,"main loop index",int4Buffer[1]); + ReadAttribute(dataset,"carpet_global_time",realBuffer); + // ReadAttribute(dataset,"carpet_reflevels",int4Buffer[2]); + ReadAttribute(dataset,"carpet_delta_time",realBuffer2); + + herr_t herr = H5Dclose(dataset); + assert(!herr); + herr = H5Gclose(group); + assert(!herr); + + } + /* Broadcast the GH extensions to all processors */ + /* NOTE: We have to use MPI_COMM_WORLD here + because PUGH_COMM_WORLD is not yet set up at parameter recovery time. + We also assume that PUGH_MPI_INT4 is a compile-time defined datatype. */ + + mpierr = MPI_Bcast (int4Buffer, 3, CARPET_MPI_INT4, 0,MPI_COMM_WORLD); + assert(!mpierr); + mpierr = MPI_Bcast (int4Buffer, 3, CARPET_MPI_INT4, 0,MPI_COMM_WORLD); + assert(!mpierr); + mpierr = MPI_Bcast (&realBuffer, 1, CARPET_MPI_REAL,0,MPI_COMM_WORLD); + assert(!mpierr); + mpierr = MPI_Bcast (&realBuffer2, 1, CARPET_MPI_REAL,0,MPI_COMM_WORLD); + assert(!mpierr); + + global_time = (CCTK_REAL) realBuffer; + delta_time = (CCTK_REAL) realBuffer2; + // reflevels = (int) int4Buffer[2]; + cctkGH->cctk_iteration = (int) int4Buffer[0]; + CCTK_SetMainLoopIndex ((int) int4Buffer[1]); + + + return (0); + + } // RecoverGHExtensions + + int RecoverParameters(hid_t reader){ + + DECLARE_CCTK_PARAMETERS; + + int myproc, retval; + char *parameters; + CCTK_INT4 parameterSize; + + hid_t group,dataset; + herr_t herr; + + int mpierr; + + myproc = CCTK_MyProc (NULL); + + if (myproc == 0){ + CCTK_VInfo (CCTK_THORNSTRING, "Recovering parameters from checkpoint "); + + group = H5Gopen (reader, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP); + assert(group >= 0); + dataset = H5Dopen (group, ALL_PARAMETERS); + assert(dataset>= 0); + + parameterSize = H5Dget_storage_size (dataset); + parameters = (char *) malloc (parameterSize); + herr = H5Dread (dataset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, + H5P_DEFAULT, parameters); + assert(!herr); + herr = H5Dclose(dataset); + assert(!herr); + herr = H5Gclose(group); + assert(!herr); + + if(verbose) { + CCTK_VInfo (CCTK_THORNSTRING, "\n%s\n",parameters); + } + + CCTK_VInfo(CCTK_THORNSTRING, "Successfully recovered parameters!"); + } // myproc == 0 + + /* Broadcast the parameter buffer size to all processors */ + /* NOTE: We have to use MPI_COMM_WORLD here + because CARPET_COMM_WORLD is not yet set up at parameter recovery time. + We also assume that CARPET_MPI_INT4 is a compile-time defined datatype. */ + mpierr = MPI_Bcast (¶meterSize, 1, CARPET_MPI_INT4, 0, + MPI_COMM_WORLD); + assert(!mpierr); + + if (parameterSize > 0) { + if (myproc) { + parameters = (char*) malloc (parameterSize + 1); + } + + mpierr = MPI_Bcast (parameters, parameterSize + 1, CARPET_MPI_CHAR, + 0,MPI_COMM_WORLD); + assert(!mpierr); + + IOUtil_SetAllParameters (parameters); + + free (parameters); + } + + /* return positive value for success otherwise negative */ + retval = (parameterSize > 0 ? 1 : -1); + + return (retval); + + } // RecoverParameters + + + + int Checkpoint (const cGH* const cctkGH, int called_from) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + herr_t herr; + + int retval = 0; + + const ioGH *ioUtilGH; + + ioRequest *request; + + CarpetIOHDF5GH *myGH; + myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH, "CarpetIOHDF5"); + + // check if CarpetIOHDF5 was registered as I/O method + if (myGH == NULL) { + CCTK_WARN (0, "No CarpetIOHDF5 I/O methods registered"); + return -1; + } + + int const myproc = CCTK_MyProc (cctkGH); + + + + // Invent a file name + ostringstream cp_tempname_buf; + ostringstream cp_filename_buf; + + switch (called_from) + { + case CP_INITIAL_DATA: + cp_tempname_buf << checkpoint_dir << "/tmp_" << checkpoint_ID_file << ".it_" << cctkGH->cctk_iteration << ".h5"; + cp_filename_buf << checkpoint_dir << "/" << checkpoint_ID_file << ".it_" << cctkGH->cctk_iteration << ".h5"; + break; + + case CP_EVOLUTION_DATA: + cp_tempname_buf << checkpoint_dir << "/tmp_" << checkpoint_file << ".it_" << cctkGH->cctk_iteration << ".h5"; + cp_filename_buf << checkpoint_dir << "/" << checkpoint_file << ".it_" << cctkGH->cctk_iteration << ".h5"; + break; + + case CP_RECOVER_DATA: + case CP_RECOVER_PARAMETERS: + case FILEREADER_DATA: + cp_tempname_buf << recover_dir << "/tmp_" << recover_file << ".h5"; + cp_filename_buf << recover_dir << "/" << recover_file << ".h5"; + break; + + default: + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "IOUtil_PrepareFilename: Unknown calling mode %d", + called_from); + break; + } + + string const cp_tempname_str = cp_tempname_buf.str(); + string const cp_filename_str = cp_filename_buf.str(); + char const * const cp_tempname = cp_tempname_str.c_str(); + char const * const cp_filename = cp_filename_str.c_str(); + + + + hid_t writer = -1; + + if (myproc == 0) { + + if (verbose) { + CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", cp_tempname); + } + + CCTK_VInfo (CCTK_THORNSTRING, "Creating temporary checkpoint file '%s'", cp_tempname); + + CCTK_VInfo (CCTK_THORNSTRING, "Verbose = %d", verbose); + + writer = H5Fcreate (cp_tempname, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT); + assert (writer>=0); + herr = H5Fclose (writer); + assert (!herr); + writer = -1; + + // Now open the file + + writer = H5Fopen (cp_tempname, H5F_ACC_RDWR, H5P_DEFAULT); + assert (writer>=0); + + // Dump all parameters and GHExtentions + retval += DumpParametersGHExtentions (cctkGH, 1, writer); + assert(!retval); + + } // myproc == 0 + + + // now dump the grid variables on all mglevels, reflevels, maps and components + BEGIN_MGLEVEL_LOOP(cctkGH) { + + BEGIN_REFLEVEL_LOOP(cctkGH) { + + if (verbose) + { + CCTK_INFO ("Dumping Grid Variables ..."); + } + for (int group = CCTK_NumGroups () - 1; group >= 0; group--) + { + /* only dump groups which have storage assigned */ + + if (CCTK_QueryGroupStorageI (cctkGH, group) <= 0) + { + continue; + } + + const int grouptype = CCTK_GroupTypeI(group); + + /* scalars and grid arrays only have 1 reflevel: */ + if ( (grouptype != CCTK_GF) && (reflevel != 0) ) { + continue; + } + /* now check if there is any memory allocated + for GFs and GAs. GSs should always have + memory allocated and there is at this point + no CCTK function to check this :/ + */ + + if ( (grouptype == CCTK_GF) || (grouptype == CCTK_ARRAY)){ + const int gpdim = CCTK_GroupDimI(group); + int gtotalsize=1; + vector<int> tlsh(gpdim); + assert(!CCTK_GrouplshGI(cctkGH,gpdim,&tlsh[0],group)); + for(int i=0;i<gpdim;i++) { + gtotalsize=tlsh[i]; + } + if(gtotalsize == 0){ + if (verbose) CCTK_VInfo(CCTK_THORNSTRING, + "Group %s is zero-sized. No checkpoint info written",CCTK_GroupName(group)); + continue; + } + } + + /* get the number of allocated timelevels */ + cGroup gdata; + CCTK_GroupData (group, &gdata); + gdata.numtimelevels = 0; + gdata.numtimelevels = CCTK_GroupStorageIncrease (cctkGH, 1, &group, + &gdata.numtimelevels,NULL); + + int first_vindex = CCTK_FirstVarIndexI (group); + + /* get the default I/O request for this group */ + request = IOUtil_DefaultIORequest (cctkGH, first_vindex, 1); + + /* disable checking for old data objects, disable datatype conversion + and downsampling */ + request->check_exist = 0; + request->hdatatype = gdata.vartype; + for (request->hdim = 0; request->hdim < request->vdim; request->hdim++) + { + request->downsample[request->hdim] = 1; + } + + /* loop over all variables in this group */ + for (request->vindex = first_vindex; + request->vindex < first_vindex + gdata.numvars; + request->vindex++) + { + /* loop over all timelevels of this variable */ + for (request->timelevel = 0; + request->timelevel < gdata.numtimelevels; + request->timelevel++) + { + if (verbose) + { + char *fullname = CCTK_FullName (request->vindex); + if (fullname != NULL) { + CCTK_VInfo (CCTK_THORNSTRING, " %s (timelevel %d)", + fullname, request->timelevel); + free (fullname); + } + else { + CCTK_VWarn(1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Invalid variable with varindex %d", request->vindex); + } + } + // write the var + + if (grouptype == CCTK_ARRAY || grouptype == CCTK_GF || grouptype == CCTK_SCALAR) + { + char* fullname = CCTK_FullName (request->vindex); + if (verbose) + CCTK_VInfo (CCTK_THORNSTRING,"%s: reflevel: %d map: %d component: %d grouptype: %d ", + fullname,reflevel,Carpet::map,component,grouptype); + free(fullname); + retval += WriteVar(cctkGH,writer,request,1); + } + else + { + char *fullname = CCTK_FullName (request->vindex); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Invalid group type %d for variable '%s'", grouptype, fullname); + free(fullname); + retval = -1; + } + + } + } /* end of loop over all variables */ + } /* end of loop over all groups */ + } END_REFLEVEL_LOOP; + + } END_MGLEVEL_LOOP; + + + if (myproc==0) { + // Close the file + herr = H5Fclose(writer); + assert(!herr); + } + + if (retval == 0) { + if (myproc==0) { + if (rename (cp_tempname, cp_filename)) + { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not rename temporary checkpoint file '%s' to '%s'", + cp_tempname, cp_filename); + retval = -1; + } + else { + if (myGH->cp_filename_list[myGH->cp_filename_index]) { + if (checkpoint_keep > 0) { + remove (myGH->cp_filename_list[myGH->cp_filename_index]); + } + free (myGH->cp_filename_list[myGH->cp_filename_index]); + } + myGH->cp_filename_list[myGH->cp_filename_index] = strdup (cp_filename); + myGH->cp_filename_index = (myGH->cp_filename_index+1) % abs (checkpoint_keep); + } // else + } // myproc == 0 + } // retval == 0 + + return retval; + + } // Checkpoint + + + int DumpParametersGHExtentions (const cGH *cctkGH, int all, hid_t writer) + { + // large parts of this routine were taken from + // Thomas Radke's IOHDF5Util. Thanks Thomas! + + DECLARE_CCTK_PARAMETERS; + + char *parameters; + hid_t group, dataspace, dataset; + hsize_t size; + herr_t herr; + + CCTK_INT4 itmp; + CCTK_REAL dtmp; + const char *version; + ioGH *ioUtilGH; + + if (verbose) { + CCTK_INFO ("Dumping Parameters and GH Extentions..."); + } + + /* get the parameter string buffer */ + parameters = IOUtil_GetAllParameters (cctkGH, all); + + if (parameters) + { + size = strlen (parameters) + 1; + group = H5Gcreate (writer, PARAMETERS_GLOBAL_ATTRIBUTES_GROUP, 0); + assert(group>=0); + dataspace = H5Screate_simple (1, &size, NULL); + assert(dataspace>=0); + dataset = H5Dcreate (group, ALL_PARAMETERS, H5T_NATIVE_UCHAR, + dataspace, H5P_DEFAULT); + assert(dataset>=0); + herr = H5Dwrite (dataset, H5T_NATIVE_CHAR, H5S_ALL, H5S_ALL, + H5P_DEFAULT, parameters); + assert(!herr); + + // now dump the GH Extentions + + /* get the handle for IOUtil extensions */ + ioUtilGH = (ioGH *) CCTK_GHExtension (cctkGH, "IO"); + + itmp = CCTK_MainLoopIndex (); + WriteAttribute(dataset,"main loop index",itmp); + + itmp = cctkGH->cctk_iteration; + WriteAttribute(dataset,"GH$iteration",itmp); + + itmp = ioUtilGH->ioproc_every; + WriteAttribute(dataset,"GH$ioproc_every",itmp); + + itmp = CCTK_nProcs (cctkGH); + WriteAttribute(dataset,"GH$nprocs",itmp); + + dtmp = cctkGH->cctk_time; + WriteAttribute(dataset,"GH$time", dtmp); + + dtmp = global_time; + WriteAttribute(dataset,"carpet_global_time", dtmp); + + itmp = reflevels; + WriteAttribute(dataset,"carpet_reflevels", itmp); + + dtmp = delta_time; + WriteAttribute(dataset,"carpet_delta_time", dtmp); + + version = CCTK_FullVersion(); + WriteAttribute(dataset,"Cactus version", version); + + /* finally, we need all the times on the individual refinement levels */ + + const int numberofmgtimes=mglevels; + WriteAttribute(dataset,"numberofmgtimes",numberofmgtimes); + for(int i=0;i < numberofmgtimes;i++) { + char buffer[100]; + sprintf(buffer,"mgleveltimes %d",i); + WriteAttribute(dataset,buffer,(double *) &leveltimes.at(i).at(0), reflevels); + } + + herr = H5Dclose (dataset); + assert(!herr); + herr = H5Sclose (dataspace); + assert(!herr); + herr = H5Gclose (group); + assert(!herr); + + free (parameters); + } + + return 0; + } // DumpParametersGHExtentions + + + + +} // namespace CarpetIOHDF5 diff --git a/Carpet/CarpetIOHDF5/src/iohdf5utils.cc b/Carpet/CarpetIOHDF5/src/iohdf5utils.cc new file mode 100644 index 000000000..5545a3563 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/iohdf5utils.cc @@ -0,0 +1,521 @@ +#include <assert.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <sys/types.h> + +#include <algorithm> +#include <fstream> +#include <sstream> +#include <vector> + +#include <hdf5.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/iohdf5utils.cc,v 1.8 2004/07/07 17:09:17 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetIOHDF5_iohdf5utils_cc); +} + +#include "CactusBase/IOUtil/src/ioGH.h" +#include "CactusBase/IOUtil/src/ioutil_CheckpointRecovery.h" + +#include "bbox.hh" +#include "data.hh" +#include "gdata.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "iohdf5.hh" +#include "iohdf5GH.h" + + + +namespace CarpetIOHDF5 { + + using namespace std; + using namespace Carpet; + + + + bool CheckForVariable (const char* const varlist, const int vindex) + { + const int numvars = CCTK_NumVars(); + assert (vindex>=0 && vindex<numvars); + + vector<bool> flags(numvars); + + CCTK_TraverseString (varlist, SetFlag, &flags, CCTK_GROUP_OR_VAR); + + return flags.at(vindex); + } + + void SetFlag (int vindex, const char* optstring, void* arg) + { + if (optstring) + { + char *fullname = CCTK_FullName (vindex); + CCTK_VWarn (2, __LINE__, __FILE__, CCTK_THORNSTRING, + "Option string '%s' will be ignored for HDF5 output of " + "variable '%s'", optstring, fullname); + free (fullname); + } + vector<bool>& flags = *(vector<bool>*)arg; + flags.at(vindex) = true; + } + + + + void WriteAttribute (const hid_t dataset, const char* const name, const int value) + { + WriteAttribute (dataset, name, &value, 1); + } + + void WriteAttribute (const hid_t dataset, const char* const name, const int* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + hsize_t shape[1]; + shape[0] = nvalues; + const hid_t dataspace = nvalues==1 ? H5Screate (H5S_SCALAR) : H5Screate_simple (1, shape, NULL); + assert (dataspace>=0); + + const hid_t datatype = H5T_NATIVE_INT; + + const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT); + assert (attribute>=0); + herr = H5Awrite (attribute, datatype, values); + assert (!herr); + herr = H5Aclose (attribute); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + } + + + + void WriteAttribute (const hid_t dataset, const char* const name, const double value) + { + WriteAttribute (dataset, name, &value, 1); + } + + void WriteAttribute (const hid_t dataset, const char* const name, const double* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + hsize_t shape[1]; + shape[0] = nvalues; + const hid_t dataspace = nvalues==1 ? H5Screate (H5S_SCALAR) : H5Screate_simple (1, shape, NULL); + assert (dataspace>=0); + + const hid_t datatype = H5T_NATIVE_DOUBLE; + + const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT); + assert (attribute>=0); + herr = H5Awrite (attribute, datatype, values); + assert (!herr); + herr = H5Aclose (attribute); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + } + + + + void WriteAttribute (const hid_t dataset, const char* const name, const char value) + { + WriteAttribute (dataset, name, &value, 1); + } + + void WriteAttribute (const hid_t dataset, const char* const name, const char* const values) + { + WriteAttribute (dataset, name, values, strlen(values)); + } + + void WriteAttribute (const hid_t dataset, const char* const name, const char* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + const hid_t dataspace = H5Screate (H5S_SCALAR); + assert (dataspace>=0); + + const hid_t datatype = H5Tcopy (H5T_C_S1); + assert (datatype>=0); + herr = H5Tset_size (datatype, nvalues); + assert (!herr); + + const hid_t attribute = H5Acreate (dataset, name, datatype, dataspace, H5P_DEFAULT); + assert (attribute>=0); + herr = H5Awrite (attribute, datatype, values); + assert (!herr); + herr = H5Aclose (attribute); + assert (!herr); + + herr = H5Tclose (datatype); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + } + + + + int ReadAttribute (const hid_t dataset, const char* const name, int& value) + { + return ReadAttribute (dataset, name, &value, 1); + } + + int ReadAttribute (const hid_t dataset, const char* name, int* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + const hid_t attribute = H5Aopen_name (dataset, name); + if (attribute<0) return attribute; + + const hid_t dataspace = H5Aget_space (attribute); + assert (dataspace>=0); + + // cout << "reading int attribute " << name << endl; + + hsize_t rank = H5Sget_simple_extent_ndims (dataspace); + hsize_t shape[1]; + if (rank==0) { + shape[0] = 1; + } else if (rank==1) { + herr = H5Sget_simple_extent_dims (dataspace, shape, NULL); + assert (herr >= 0); + } else { + assert (0); + } + const int length = shape[0]; + + const hid_t datatype = H5Aget_type (attribute); + assert (datatype>=0); + + assert(H5Tequal(datatype, H5T_NATIVE_INT)); + + vector<int> values1(length); + + herr = H5Aread (attribute, datatype, &values1.at(0)); + assert (!herr); + + for (int i=0; i<min(length, nvalues); ++i) { + values[i] = values1[i]; + } + + herr = H5Tclose (datatype); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + + herr = H5Aclose (attribute); + assert (!herr); + + return length; + } + + + + int ReadAttribute (const hid_t dataset, const char* const name, double& value) + { + return ReadAttribute (dataset, name, &value, 1); + } + + int ReadAttribute (const hid_t dataset, const char* const name, double* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + const hid_t attribute = H5Aopen_name (dataset, name); + if (attribute<0) return attribute; + + const hid_t dataspace = H5Aget_space (attribute); + assert (dataspace>=0); + + hsize_t rank = H5Sget_simple_extent_ndims (dataspace); + hsize_t shape[1]; + if (rank==0) { + shape[0] = 1; + } else if (rank==1) { + rank = H5Sget_simple_extent_dims (dataspace, shape, NULL); + assert (rank == 1); + } else { + assert (0); + } + const int length = shape[0]; + + const hid_t datatype = H5Aget_type (attribute); + assert (datatype>=0); + assert(H5Tequal(datatype, H5T_NATIVE_DOUBLE)); + + vector<double> values1(length); + + herr = H5Aread (attribute, datatype, &values1.at(0)); + assert (!herr); + + for (int i=0; i<min(length, nvalues); ++i) { + values[i] = values1[i]; + } + + herr = H5Tclose (datatype); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + + herr = H5Aclose (attribute); + assert (!herr); + + return length; + } + + + + int ReadAttribute (const hid_t dataset, const char* const name, char& value) + { + return ReadAttribute (dataset, name, &value, 1); + } + + int ReadAttribute (const hid_t dataset, const char* const name, char*& values) + { + assert (dataset>=0); + assert (name); + + herr_t herr; + + const hid_t attribute = H5Aopen_name (dataset, name); + if (attribute<0) return attribute; + + const hid_t dataspace = H5Aget_space (attribute); + assert (dataspace>=0); + + hsize_t rank = H5Sget_simple_extent_ndims (dataspace); + assert (rank==0); + + const hid_t datatype = H5Aget_type (attribute); + assert (datatype>=0); + assert (H5Tget_class (datatype) == H5T_STRING); + const int length = H5Tget_size (datatype); + assert (length>=0); + + values = (char*) malloc (length+1); + assert (values); + + herr = H5Aread (attribute, datatype, values); + assert (!herr); + values[length] = '\0'; + + herr = H5Tclose (datatype); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + + herr = H5Aclose (attribute); + assert (!herr); + + return length; + } + + int ReadAttribute (const hid_t dataset, const char* const name, char* const values, const int nvalues) + { + assert (dataset>=0); + assert (name); + assert (values); + assert (nvalues>=0); + + herr_t herr; + + const hid_t attribute = H5Aopen_name (dataset, name); + if (attribute<0) return attribute; + + const hid_t dataspace = H5Aget_space (attribute); + assert (dataspace>=0); + + hsize_t rank = H5Sget_simple_extent_ndims (dataspace); + assert (rank==0); + + const hid_t datatype = H5Aget_type (attribute); + assert (datatype>=0); + assert(H5Tget_class (datatype) == H5T_STRING); + const int length = H5Tget_size (datatype); + assert (length>=0); + + vector<char> values1(length); + + herr = H5Aread (attribute, datatype, &values1.at(0)); + assert (!herr); + + for (int i=0; i<min(length, nvalues); ++i) { + values[i] = values1[i]; + } + + herr = H5Tclose (datatype); + assert (!herr); + + herr = H5Sclose (dataspace); + assert (!herr); + + herr = H5Aclose (attribute); + assert (!herr); + + return length; + } + + herr_t DatasetCounter(hid_t group_id, const char *member_name, void *operator_data) + /* Counts datasets. Used by GetnDatasets; straight from John Shalf's FlexIO library */ + { + int *count = (int*)operator_data; + H5G_stat_t objinfo; + // request info about the type of objects in root group + if(H5Gget_objinfo(group_id,member_name,1 /* follow links */,&objinfo)<0) { + return 0; + } + // only count objects that are datasets (not subgroups) + if(objinfo.type==H5G_DATASET) { + (*count)++; + } + return 0; + } + + + int GetnDatasets(const hid_t reader) + { + //this is straight from John Shalf's FlexIO library + + int count=0; + int idx=0; + while(H5Giterate(reader, /* hid_t loc_id, */ + "/", /*const char *name, */ + &idx, /* int *idx, */ + DatasetCounter, + &count)<0){} + return count; + } + + struct H5IO_getname_t { + //this is straight from John Shalf's FlexIO library + int index,count; + char *name; + }; + + + herr_t GetName(hid_t group_id, const char *member_name, void *operator_data) + { + //this is straight from John Shalf's FlexIO library + H5IO_getname_t *getn = (H5IO_getname_t*)operator_data; + // check type first (only respond if it is a dataset) + H5G_stat_t objinfo; + // request info about the type of objects in root group + if(H5Gget_objinfo(group_id, + member_name, + 1 /* follow links */, + &objinfo)<0) return 0; // error (probably bad symlink) + // only count objects that are datasets (not subgroups) + if(objinfo.type!=H5G_DATASET) + return 0; // do not increment count if it isn't a dataset. + if(getn->index==getn->count){ + strcpy(getn->name,member_name); + return 1; // success + } + getn->count++; + return 0; + } + + + void GetDatasetName(const hid_t reader, const int _index, char *name) { + //this is straight from John Shalf's FlexIO library + H5IO_getname_t getn; + int idx=_index; + getn.index=_index; getn.name=name; getn.count=_index; + while(H5Giterate(reader, /* hid_t loc_id, */ + "/", /*const char *name, */ + &idx, /* int *idx, */ + GetName, + &getn)<0){} + } + + hid_t h5DataType (const cGH* const cctkGH, int cctk_type) { + + hid_t retval; + + CarpetIOHDF5GH *myGH; + myGH = (CarpetIOHDF5GH *) CCTK_GHExtension (cctkGH, "CarpetIOHDF5"); + + // this is adapted from Thomas Radke's IOHDF5Util. Thanks, Thomas! + + switch (cctk_type) + { + case CCTK_VARIABLE_CHAR: retval = HDF5_CHAR; break; + case CCTK_VARIABLE_INT: retval = HDF5_INT; break; + case CCTK_VARIABLE_REAL: retval = HDF5_REAL; break; + case CCTK_VARIABLE_COMPLEX: retval = myGH->HDF5_COMPLEX; break; +#ifdef CCTK_INT1 + case CCTK_VARIABLE_INT1: retval = HDF5_INT1; break; +#endif +#ifdef CCTK_INT2 + case CCTK_VARIABLE_INT2: retval = HDF5_INT2; break; +#endif +#ifdef CCTK_INT4 + case CCTK_VARIABLE_INT4: retval = HDF5_INT4; break; +#endif +#ifdef CCTK_INT8 + case CCTK_VARIABLE_INT8: retval = HDF5_INT8; break; +#endif +#ifdef CCTK_REAL4 + case CCTK_VARIABLE_REAL4: retval = HDF5_REAL4; break; + case CCTK_VARIABLE_COMPLEX8: retval = myGH->HDF5_COMPLEX8; break; +#endif +#ifdef CCTK_REAL8 + case CCTK_VARIABLE_REAL8: retval = HDF5_REAL8; break; + case CCTK_VARIABLE_COMPLEX16: retval = myGH->HDF5_COMPLEX16; break; +#endif +#ifdef CCTK_REAL16 + case CCTK_VARIABLE_REAL16: retval = HDF5_REAL16; break; + case CCTK_VARIABLE_COMPLEX32: retval = myGH->HDF5_COMPLEX32; break; +#endif + + default: CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Unsupported CCTK variable datatype %d", cctk_type); + retval = -1; + } + + return (retval); + } + + + +} // namespace CarpetIOHDF5 diff --git a/Carpet/CarpetIOHDF5/src/make.code.defn b/Carpet/CarpetIOHDF5/src/make.code.defn new file mode 100644 index 000000000..a8600e812 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/make.code.defn @@ -0,0 +1,5 @@ +# Main make.code.defn file for thorn CarpetIOHDF5 +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/make.code.defn,v 1.5 2004/07/09 15:38:18 tradke Exp $ + +# Source files in this directory +SRCS = iohdf5.cc iohdf5utils.cc Checkpoint.cc Recover.cc diff --git a/Carpet/CarpetIOHDF5/src/make.configuration.defn b/Carpet/CarpetIOHDF5/src/make.configuration.defn new file mode 100644 index 000000000..3de9eea95 --- /dev/null +++ b/Carpet/CarpetIOHDF5/src/make.configuration.defn @@ -0,0 +1,7 @@ +# Main make.configuration.defn file for thorn CarpetIOHDF5 -*-Makefile-*- +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/src/make.configuration.defn,v 1.1 2004/05/04 22:08:37 schnetter Exp $ + +# Ensure that MPI is available +ifeq ($(strip $(HAVE_HDF5)), ) + $(error Configuration error: The CarpetIOHDF5 thorn requires HDF5. Please configure with HDF5, or remove the CarpetIOHDF5 thorn from the ThornList.) +endif diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5 b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5 Binary files differnew file mode 100644 index 000000000..bed1b5bb5 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.it_64.h5 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile new file mode 100644 index 000000000..f5d898aa1 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyCheckpoint_test.parfile @@ -0,0 +1,44 @@ +ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC" + + +Cactus::cctk_itlast = 64 + +Time::dtfac = 0.5 + +Grid::avoid_origin = "no" +Grid::type = "byrange" +Grid::dxyz = 1 + +IDScalarWave::initial_data = "gaussian" +IDScalarWave::sigma = 2.8 +IDScalarWave::radius = 0.0 + +Driver::global_nsize = 10 +Driver::ghost_size = 2 + +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 +Carpet::init_each_timelevel = "yes" +Carpet::buffer_width = 6 +Carpet::max_refinement_levels = 4 +CarpetRegrid::refinement_levels = 4 + +# Output +IO::out_dir = $parfile +IO::out_fileinfo = "none" +IO::parfile_write = "no" + +IOBasic::outInfo_every = 1 +IOBasic::outInfo_vars = "wavetoy::phi" +IOBasic::outScalar_every = 32 +IOBasic::outScalar_vars = "wavetoy::phi" + +IOASCII::out1D_vars = "wavetoy::phi" +IOASCII::out1D_every = 32 + +# Checkpointing +IO::checkpoint_file = $parfile +IO::checkpoint_every = 32 + +IOHDF5::checkpoint = "yes" +IOHDF5::verbose = "yes" diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par new file mode 100644 index 000000000..cb72b9b60 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc.par @@ -0,0 +1,14 @@ +ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC" + + +Cactus::cctk_itlast = 128 + +# Output +IO::out_dir = $parfile + +# Recovery +IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test" +IO::recover = "manual" +IO::recover_file = "CarpetWaveToyCheckpoint_test.it_64" + +IOHDF5::checkpoint = "no" diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc new file mode 100644 index 000000000..05526bfeb --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.x.asc @@ -0,0 +1,227 @@ +# WAVETOY::phi x (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018 +64 0 0 0 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 0 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 0 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 0 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 0 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 0 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 0 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938 +64 0 1 0 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561 +64 0 1 0 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006156 +64 0 1 0 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638 +64 0 1 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 1 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 1 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 1 0 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 1 0 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638 +64 0 1 0 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006155 +64 0 1 0 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561 +64 0 1 0 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.733688776948746 +64 0 2 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 2 0 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.726552055334392 +64 0 2 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 2 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703 +64 0 2 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 2 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 2 0 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097 +64 0 2 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 2 0 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703 +64 0 2 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 2 0 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.726552055334392 +64 0 2 0 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 2 0 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.724720854915558 +64 0 3 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703 +64 0 3 0 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.724409709543024 +64 0 3 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 3 0 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.724151545837958 +64 0 3 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097 +64 0 3 0 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 3 0 0 37 36 36 0.888888888888889 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.723805016719017 +64 0 3 0 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.72395273727097 +64 0 3 0 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.724151545837958 +64 0 3 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 3 0 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.724409709543024 +64 0 3 0 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.724502518106703 +64 0 3 0 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.724720854915558 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996 +96 0 0 0 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 0 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 0 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 0 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 0 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 0 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 0 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057 +96 0 1 0 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151 +96 0 1 0 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657 +96 0 1 0 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196 +96 0 1 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 1 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 1 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125 +96 0 1 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 1 0 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 1 0 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196 +96 0 1 0 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657 +96 0 1 0 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151 +96 0 1 0 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.683302448238139 +96 0 2 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 2 0 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.654541556639422 +96 0 2 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 2 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.630026346765969 +96 0 2 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124 +96 0 2 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 2 0 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861 +96 0 2 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125 +96 0 2 0 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.63002634676597 +96 0 2 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 2 0 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.654541556639422 +96 0 2 0 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 2 0 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.63539979750899 +96 0 3 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.630026346765969 +96 0 3 0 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.625297419028293 +96 0 3 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124 +96 0 3 0 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.618663308361111 +96 0 3 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861 +96 0 3 0 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 3 0 0 37 36 36 1.33333333333333 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.615777600484678 +96 0 3 0 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.616824486578861 +96 0 3 0 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.618663308361111 +96 0 3 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125 +96 0 3 0 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.625297419028293 +96 0 3 0 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.63002634676597 +96 0 3 0 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018 +128 0 0 0 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 0 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 0 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 0 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 0 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 0 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 0 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007 +128 0 1 0 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905 +128 0 1 0 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718 +128 0 1 0 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071 +128 0 1 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 1 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559 +128 0 1 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156 +128 0 1 0 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 1 0 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071 +128 0 1 0 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718 +128 0 1 0 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905 +128 0 1 0 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.882075542854246 +128 0 2 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 2 0 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.898403242286228 +128 0 2 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559 +128 0 2 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027 +128 0 2 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 2 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 2 0 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396 +128 0 2 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 2 0 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027 +128 0 2 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156 +128 0 2 0 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.898403242286228 +128 0 2 0 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 2 0 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 -5.55111512312578e-17 0.912613836832073 +128 0 3 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027 +128 0 3 0 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.920818233193455 +128 0 3 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 3 0 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 -5.55111512312578e-17 0.926147880297958 +128 0 3 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396 +128 0 3 0 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 3 0 0 37 36 36 1.77777777777778 0.0277777777777777 -5.55111512312578e-17 -5.55111512312578e-17 0.928209975180567 +128 0 3 0 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.927485951077396 +128 0 3 0 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.926147880297958 +128 0 3 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 3 0 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.920818233193455 +128 0 3 0 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.916919384356027 +128 0 3 0 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc new file mode 100644 index 000000000..305349452 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.y.asc @@ -0,0 +1,227 @@ +# WAVETOY::phi y (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018 +64 0 0 0 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 0 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 0 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 0 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 0 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 0 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 0 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938 +64 0 1 0 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562 +64 0 1 0 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156 +64 0 1 0 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 0 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 0 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575 +64 0 1 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 0 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574 +64 0 1 0 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 0 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 0 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155 +64 0 1 0 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561 +64 0 1 0 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 36 22 36 0.888888888888889 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.733688776948746 +64 0 2 0 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 2 0 0 36 26 36 0.888888888888889 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.726552055334392 +64 0 2 0 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575 +64 0 2 0 0 36 30 36 0.888888888888889 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.724502518106703 +64 0 2 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 2 0 0 36 34 36 0.888888888888889 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 2 0 0 36 38 36 0.888888888888889 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.72395273727097 +64 0 2 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 2 0 0 36 42 36 0.888888888888889 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.724502518106703 +64 0 2 0 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574 +64 0 2 0 0 36 46 36 0.888888888888889 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.726552055334392 +64 0 2 0 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 2 0 0 36 50 36 0.888888888888889 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 36 29 36 0.888888888888889 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.724720854915558 +64 0 3 0 0 36 30 36 0.888888888888889 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.724502518106703 +64 0 3 0 0 36 31 36 0.888888888888889 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.724409709543024 +64 0 3 0 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 3 0 0 36 33 36 0.888888888888889 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.724151545837958 +64 0 3 0 0 36 34 36 0.888888888888889 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.72395273727097 +64 0 3 0 0 36 35 36 0.888888888888889 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 3 0 0 36 37 36 0.888888888888889 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.723805016719017 +64 0 3 0 0 36 38 36 0.888888888888889 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.72395273727097 +64 0 3 0 0 36 39 36 0.888888888888889 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.724151545837958 +64 0 3 0 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 3 0 0 36 41 36 0.888888888888889 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.724409709543024 +64 0 3 0 0 36 42 36 0.888888888888889 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.724502518106703 +64 0 3 0 0 36 43 36 0.888888888888889 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.724720854915558 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996 +96 0 0 0 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 0 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 0 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 0 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 0 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 0 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 0 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057 +96 0 1 0 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 0 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657 +96 0 1 0 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 0 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 0 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296 +96 0 1 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125 +96 0 1 0 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297 +96 0 1 0 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 0 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 0 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657 +96 0 1 0 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 0 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 36 22 36 1.33333333333333 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.683302448238139 +96 0 2 0 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 2 0 0 36 26 36 1.33333333333333 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.654541556639422 +96 0 2 0 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296 +96 0 2 0 0 36 30 36 1.33333333333333 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.630026346765969 +96 0 2 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124 +96 0 2 0 0 36 34 36 1.33333333333333 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 2 0 0 36 38 36 1.33333333333333 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.616824486578861 +96 0 2 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125 +96 0 2 0 0 36 42 36 1.33333333333333 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.63002634676597 +96 0 2 0 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297 +96 0 2 0 0 36 46 36 1.33333333333333 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.654541556639422 +96 0 2 0 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 2 0 0 36 50 36 1.33333333333333 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 36 29 36 1.33333333333333 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.63539979750899 +96 0 3 0 0 36 30 36 1.33333333333333 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.630026346765969 +96 0 3 0 0 36 31 36 1.33333333333333 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.625297419028293 +96 0 3 0 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124 +96 0 3 0 0 36 33 36 1.33333333333333 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.618663308361111 +96 0 3 0 0 36 34 36 1.33333333333333 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.616824486578861 +96 0 3 0 0 36 35 36 1.33333333333333 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 3 0 0 36 37 36 1.33333333333333 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.615777600484678 +96 0 3 0 0 36 38 36 1.33333333333333 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.616824486578861 +96 0 3 0 0 36 39 36 1.33333333333333 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.618663308361111 +96 0 3 0 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125 +96 0 3 0 0 36 41 36 1.33333333333333 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.625297419028293 +96 0 3 0 0 36 42 36 1.33333333333333 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.63002634676597 +96 0 3 0 0 36 43 36 1.33333333333333 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018 +128 0 0 0 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 0 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 0 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 0 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 0 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 0 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 0 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007 +128 0 1 0 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 0 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718 +128 0 1 0 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 0 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 0 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 0 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 0 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 0 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 0 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718 +128 0 1 0 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 0 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 36 22 36 1.77777777777778 -5.55111512312578e-17 -0.388888888888889 -5.55111512312578e-17 0.882075542854246 +128 0 2 0 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 2 0 0 36 26 36 1.77777777777778 -5.55111512312578e-17 -0.277777777777778 -5.55111512312578e-17 0.898403242286228 +128 0 2 0 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 2 0 0 36 30 36 1.77777777777778 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.916919384356027 +128 0 2 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 2 0 0 36 34 36 1.77777777777778 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 2 0 0 36 38 36 1.77777777777778 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.927485951077396 +128 0 2 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 2 0 0 36 42 36 1.77777777777778 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.916919384356027 +128 0 2 0 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 2 0 0 36 46 36 1.77777777777778 -5.55111512312578e-17 0.277777777777778 -5.55111512312578e-17 0.898403242286228 +128 0 2 0 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 2 0 0 36 50 36 1.77777777777778 -5.55111512312578e-17 0.388888888888889 -5.55111512312578e-17 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 36 29 36 1.77777777777778 -5.55111512312578e-17 -0.194444444444445 -5.55111512312578e-17 0.912613836832073 +128 0 3 0 0 36 30 36 1.77777777777778 -5.55111512312578e-17 -0.166666666666667 -5.55111512312578e-17 0.916919384356027 +128 0 3 0 0 36 31 36 1.77777777777778 -5.55111512312578e-17 -0.138888888888889 -5.55111512312578e-17 0.920818233193455 +128 0 3 0 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 3 0 0 36 33 36 1.77777777777778 -5.55111512312578e-17 -0.0833333333333334 -5.55111512312578e-17 0.926147880297958 +128 0 3 0 0 36 34 36 1.77777777777778 -5.55111512312578e-17 -0.0555555555555556 -5.55111512312578e-17 0.927485951077396 +128 0 3 0 0 36 35 36 1.77777777777778 -5.55111512312578e-17 -0.0277777777777778 -5.55111512312578e-17 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 3 0 0 36 37 36 1.77777777777778 -5.55111512312578e-17 0.0277777777777777 -5.55111512312578e-17 0.928209975180567 +128 0 3 0 0 36 38 36 1.77777777777778 -5.55111512312578e-17 0.0555555555555555 -5.55111512312578e-17 0.927485951077396 +128 0 3 0 0 36 39 36 1.77777777777778 -5.55111512312578e-17 0.0833333333333333 -5.55111512312578e-17 0.926147880297958 +128 0 3 0 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 3 0 0 36 41 36 1.77777777777778 -5.55111512312578e-17 0.138888888888889 -5.55111512312578e-17 0.920818233193455 +128 0 3 0 0 36 42 36 1.77777777777778 -5.55111512312578e-17 0.166666666666667 -5.55111512312578e-17 0.916919384356027 +128 0 3 0 0 36 43 36 1.77777777777778 -5.55111512312578e-17 0.194444444444444 -5.55111512312578e-17 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc new file mode 100644 index 000000000..8868db22c --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi.z.asc @@ -0,0 +1,227 @@ +# WAVETOY::phi z (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018 +64 0 0 0 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182 +64 0 0 0 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861 +64 0 0 0 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952 +64 0 0 0 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952 +64 0 0 0 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861 +64 0 0 0 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182 +64 0 0 0 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 36 36 8 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938 +64 0 1 0 0 36 36 12 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562 +64 0 1 0 0 36 36 16 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156 +64 0 1 0 0 36 36 20 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638 +64 0 1 0 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 1 0 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 1 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 1 0 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 1 0 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 1 0 0 36 36 52 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638 +64 0 1 0 0 36 36 56 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155 +64 0 1 0 0 36 36 60 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561 +64 0 1 0 0 36 36 64 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 36 36 22 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746 +64 0 2 0 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 2 0 0 36 36 26 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392 +64 0 2 0 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 2 0 0 36 36 30 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 2 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 2 0 0 36 36 34 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 2 0 0 36 36 38 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 2 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 2 0 0 36 36 42 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 2 0 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 2 0 0 36 36 46 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391 +64 0 2 0 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 2 0 0 36 36 50 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 36 36 29 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.724720854915558 +64 0 3 0 0 36 36 30 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 3 0 0 36 36 31 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.724409709543024 +64 0 3 0 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 3 0 0 36 36 33 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958 +64 0 3 0 0 36 36 34 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 3 0 0 36 36 35 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 3 0 0 36 36 37 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.723805016719017 +64 0 3 0 0 36 36 38 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 3 0 0 36 36 39 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.724151545837958 +64 0 3 0 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 3 0 0 36 36 41 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.724409709543024 +64 0 3 0 0 36 36 42 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 3 0 0 36 36 43 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.724720854915557 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996 +96 0 0 0 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601 +96 0 0 0 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599 +96 0 0 0 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667 +96 0 0 0 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667 +96 0 0 0 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599 +96 0 0 0 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601 +96 0 0 0 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 36 36 8 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057 +96 0 1 0 0 36 36 12 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151 +96 0 1 0 0 36 36 16 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657 +96 0 1 0 0 36 36 20 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196 +96 0 1 0 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 1 0 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 1 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 1 0 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 1 0 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 1 0 0 36 36 52 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196 +96 0 1 0 0 36 36 56 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657 +96 0 1 0 0 36 36 60 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151 +96 0 1 0 0 36 36 64 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 36 36 22 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139 +96 0 2 0 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 2 0 0 36 36 26 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422 +96 0 2 0 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 2 0 0 36 36 30 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 2 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 2 0 0 36 36 34 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 2 0 0 36 36 38 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 2 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 2 0 0 36 36 42 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 2 0 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 2 0 0 36 36 46 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422 +96 0 2 0 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 2 0 0 36 36 50 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 36 36 29 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.63539979750899 +96 0 3 0 0 36 36 30 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 3 0 0 36 36 31 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.625297419028293 +96 0 3 0 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 3 0 0 36 36 33 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111 +96 0 3 0 0 36 36 34 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 3 0 0 36 36 35 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 3 0 0 36 36 37 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.615777600484678 +96 0 3 0 0 36 36 38 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 3 0 0 36 36 39 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.618663308361111 +96 0 3 0 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 3 0 0 36 36 41 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.625297419028293 +96 0 3 0 0 36 36 42 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 3 0 0 36 36 43 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018 +128 0 0 0 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308 +128 0 0 0 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887 +128 0 0 0 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519 +128 0 0 0 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519 +128 0 0 0 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887 +128 0 0 0 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308 +128 0 0 0 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 36 36 8 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007 +128 0 1 0 0 36 36 12 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905 +128 0 1 0 0 36 36 16 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718 +128 0 1 0 0 36 36 20 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071 +128 0 1 0 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 1 0 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 1 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 1 0 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 1 0 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 1 0 0 36 36 52 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071 +128 0 1 0 0 36 36 56 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718 +128 0 1 0 0 36 36 60 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905 +128 0 1 0 0 36 36 64 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 36 36 22 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246 +128 0 2 0 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 2 0 0 36 36 26 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228 +128 0 2 0 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 2 0 0 36 36 30 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 2 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 2 0 0 36 36 34 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 2 0 0 36 36 38 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 2 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 2 0 0 36 36 42 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 2 0 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 2 0 0 36 36 46 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228 +128 0 2 0 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 2 0 0 36 36 50 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 36 36 29 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.194444444444445 0.912613836832073 +128 0 3 0 0 36 36 30 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 3 0 0 36 36 31 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.138888888888889 0.920818233193455 +128 0 3 0 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 3 0 0 36 36 33 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958 +128 0 3 0 0 36 36 34 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 3 0 0 36 36 35 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 3 0 0 36 36 37 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0277777777777777 0.928209975180567 +128 0 3 0 0 36 36 38 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 3 0 0 36 36 39 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.0833333333333333 0.926147880297958 +128 0 3 0 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 3 0 0 36 36 41 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.138888888888889 0.920818233193455 +128 0 3 0 0 36 36 42 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 3 0 0 36 36 43 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.194444444444444 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg new file mode 100644 index 000000000..e25d17d43 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_maximum.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.8737009967770 +1.3333333333333 0.8774806033600 +1.7777777777778 0.9157991357717 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg new file mode 100644 index 000000000..973172b6d --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_minimum.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.6796516032334 +1.3333333333333 0.6328288136667 +1.7777777777778 0.6796516032334 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg new file mode 100644 index 000000000..6e8792bca --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm1.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.7927895664365 +1.3333333333333 0.7914772512610 +1.7777777777778 0.8208628581415 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg new file mode 100644 index 000000000..124c22eda --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_1proc/phi_norm2.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.7937177688028 +1.3333333333333 0.7927587735574 +1.7777777777778 0.8218200985038 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par new file mode 100644 index 000000000..cb72b9b60 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc.par @@ -0,0 +1,14 @@ +ActiveThorns = "Boundary CartGrid3D Time CoordBase SymBase Carpet CarpetLib CarpetRegrid CarpetReduce CarpetSlab IOUtil IOBasic CarpetIOASCII CarpetIOHDF5 IDScalarWaveC WaveToyC" + + +Cactus::cctk_itlast = 128 + +# Output +IO::out_dir = $parfile + +# Recovery +IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test" +IO::recover = "manual" +IO::recover_file = "CarpetWaveToyCheckpoint_test.it_64" + +IOHDF5::checkpoint = "no" diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc new file mode 100644 index 000000000..f0d2110bb --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.x.asc @@ -0,0 +1,632 @@ +# WAVETOY::phi x (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018 +64 0 0 0 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 0 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 0 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 0 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 1 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 1 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 1 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 1 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 1 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 1 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 2 0 0 40 40 0.888888888888889 -1 0.111111111111111 0.111111111111111 0.873700996777018 +64 0 0 2 0 8 40 40 0.888888888888889 -0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 2 0 16 40 40 0.888888888888889 -0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 2 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 2 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 2 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 3 0 24 40 40 0.888888888888889 -0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 3 0 32 40 40 0.888888888888889 -0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 3 0 48 40 40 0.888888888888889 0.333333333333333 0.111111111111111 0.111111111111111 0.730294733882952 +64 0 0 3 0 56 40 40 0.888888888888889 0.555555555555556 0.111111111111111 0.111111111111111 0.756699260944861 +64 0 0 3 0 64 40 40 0.888888888888889 0.777777777777778 0.111111111111111 0.111111111111111 0.807676282684182 +64 0 0 3 0 72 40 40 0.888888888888889 1 0.111111111111111 0.111111111111111 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.808379332677938 +64 0 1 0 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.779665123251561 +64 0 1 0 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.756097245006156 +64 0 1 0 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.739694852518638 +64 0 1 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.729218296316213 +64 0 1 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574 +64 0 1 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177 +64 0 1 0 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 1 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177 +64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.724342898925177 +64 0 1 1 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.725100663327574 +64 0 1 1 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.729218296316213 +64 0 1 1 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.739694852518638 +64 0 1 1 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.756097245006155 +64 0 1 1 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.779665123251561 +64 0 1 1 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.808379332677938 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 2 0 8 36 36 0.888888888888889 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938 +64 0 1 2 0 12 36 36 0.888888888888889 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561 +64 0 1 2 0 16 36 36 0.888888888888889 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006156 +64 0 1 2 0 20 36 36 0.888888888888889 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638 +64 0 1 2 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 1 2 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 1 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 2 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 2 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 3 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.724342898925177 +64 0 1 3 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.725100663327574 +64 0 1 3 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.729218296316213 +64 0 1 3 0 52 36 36 0.888888888888889 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.739694852518638 +64 0 1 3 0 56 36 36 0.888888888888889 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.756097245006155 +64 0 1 3 0 60 36 36 0.888888888888889 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.779665123251561 +64 0 1 3 0 64 36 36 0.888888888888889 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.733688776948746 +64 0 2 0 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.729218296316213 +64 0 2 0 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.726552055334392 +64 0 2 0 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.725100663327574 +64 0 2 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.724502518106703 +64 0 2 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177 +64 0 2 0 0 34 36 36 0.888888888888889 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 0 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097 +64 0 2 0 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 1 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097 +64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 1 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.72395273727097 +64 0 2 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.724342898925177 +64 0 2 1 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.724502518106703 +64 0 2 1 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.725100663327574 +64 0 2 1 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.726552055334392 +64 0 2 1 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.729218296316213 +64 0 2 1 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.733688776948745 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 2 0 22 36 36 0.888888888888889 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.733688776948746 +64 0 2 2 0 24 36 36 0.888888888888889 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.729218296316213 +64 0 2 2 0 26 36 36 0.888888888888889 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.726552055334392 +64 0 2 2 0 28 36 36 0.888888888888889 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.725100663327574 +64 0 2 2 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.724502518106703 +64 0 2 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177 +64 0 2 2 0 34 36 36 0.888888888888889 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097 +64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 2 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097 +64 0 2 2 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 3 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097 +64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 3 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.72395273727097 +64 0 2 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.724342898925177 +64 0 2 3 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.724502518106703 +64 0 2 3 0 44 36 36 0.888888888888889 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.725100663327574 +64 0 2 3 0 46 36 36 0.888888888888889 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.726552055334392 +64 0 2 3 0 48 36 36 0.888888888888889 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.729218296316213 +64 0 2 3 0 50 36 36 0.888888888888889 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 0 0.724720854915558 +64 0 3 0 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 0 0.724502518106703 +64 0 3 0 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 0 0.724409709543024 +64 0 3 0 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 0 0.724342898925177 +64 0 3 0 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 0 0.724151545837958 +64 0 3 0 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 0 0.72395273727097 +64 0 3 0 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 0 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017 +64 0 3 0 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 0 0.72395273727097 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 1 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017 +64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 1 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 0 0.723805016719017 +64 0 3 1 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 0 0.72395273727097 +64 0 3 1 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 0 0.724151545837958 +64 0 3 1 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 0 0.724342898925177 +64 0 3 1 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 0 0.724409709543024 +64 0 3 1 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 0 0.724502518106703 +64 0 3 1 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 0 0.724720854915558 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 2 0 29 36 36 0.888888888888889 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.724720854915558 +64 0 3 2 0 30 36 36 0.888888888888889 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.724502518106703 +64 0 3 2 0 31 36 36 0.888888888888889 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.724409709543024 +64 0 3 2 0 32 36 36 0.888888888888889 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.724342898925177 +64 0 3 2 0 33 36 36 0.888888888888889 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.724151545837958 +64 0 3 2 0 34 36 36 0.888888888888889 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097 +64 0 3 2 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017 +64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 2 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017 +64 0 3 2 0 38 36 36 0.888888888888889 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 3 0 35 36 36 0.888888888888889 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017 +64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 3 0 37 36 36 0.888888888888889 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.723805016719017 +64 0 3 3 0 38 36 36 0.888888888888889 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.72395273727097 +64 0 3 3 0 39 36 36 0.888888888888889 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.724151545837958 +64 0 3 3 0 40 36 36 0.888888888888889 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.724342898925177 +64 0 3 3 0 41 36 36 0.888888888888889 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.724409709543024 +64 0 3 3 0 42 36 36 0.888888888888889 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.724502518106703 +64 0 3 3 0 43 36 36 0.888888888888889 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.724720854915558 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996 +96 0 0 0 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 0 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 0 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 0 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 1 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 1 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 1 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 1 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 1 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 1 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 2 0 0 40 40 1.33333333333333 -1 0.111111111111111 0.111111111111111 0.877480603359996 +96 0 0 2 0 8 40 40 1.33333333333333 -0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 2 0 16 40 40 1.33333333333333 -0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 2 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 2 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 2 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 3 0 24 40 40 1.33333333333333 -0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 3 0 32 40 40 1.33333333333333 -0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 3 0 48 40 40 1.33333333333333 0.333333333333333 0.111111111111111 0.111111111111111 0.677899959110667 +96 0 0 3 0 56 40 40 1.33333333333333 0.555555555555556 0.111111111111111 0.111111111111111 0.735090597558599 +96 0 0 3 0 64 40 40 1.33333333333333 0.777777777777778 0.111111111111111 0.111111111111111 0.798008089475601 +96 0 0 3 0 72 40 40 1.33333333333333 1 0.111111111111111 0.111111111111111 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.796688784792057 +96 0 1 0 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.76190136189151 +96 0 1 0 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.729928937348657 +96 0 1 0 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.698215010923196 +96 0 1 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.668908746807157 +96 0 1 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296 +96 0 1 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839125 +96 0 1 0 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 1 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839124 +96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.621410197839125 +96 0 1 1 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.641345710414296 +96 0 1 1 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.668908746807157 +96 0 1 1 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.698215010923196 +96 0 1 1 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.729928937348657 +96 0 1 1 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.76190136189151 +96 0 1 1 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.796688784792057 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 2 0 8 36 36 1.33333333333333 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057 +96 0 1 2 0 12 36 36 1.33333333333333 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151 +96 0 1 2 0 16 36 36 1.33333333333333 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657 +96 0 1 2 0 20 36 36 1.33333333333333 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196 +96 0 1 2 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 1 2 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 1 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124 +96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 2 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125 +96 0 1 2 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 3 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839124 +96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.621410197839125 +96 0 1 3 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.641345710414296 +96 0 1 3 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.668908746807157 +96 0 1 3 0 52 36 36 1.33333333333333 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.698215010923196 +96 0 1 3 0 56 36 36 1.33333333333333 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.729928937348657 +96 0 1 3 0 60 36 36 1.33333333333333 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.76190136189151 +96 0 1 3 0 64 36 36 1.33333333333333 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.683302448238139 +96 0 2 0 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.668908746807157 +96 0 2 0 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.654541556639422 +96 0 2 0 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.641345710414296 +96 0 2 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.630026346765969 +96 0 2 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839124 +96 0 2 0 0 34 36 36 1.33333333333333 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 0 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861 +96 0 2 0 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839125 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 1 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861 +96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 1 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.616824486578861 +96 0 2 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.621410197839125 +96 0 2 1 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.63002634676597 +96 0 2 1 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.641345710414296 +96 0 2 1 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.654541556639422 +96 0 2 1 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.668908746807157 +96 0 2 1 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.683302448238139 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 2 0 22 36 36 1.33333333333333 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.683302448238139 +96 0 2 2 0 24 36 36 1.33333333333333 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.668908746807157 +96 0 2 2 0 26 36 36 1.33333333333333 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.654541556639422 +96 0 2 2 0 28 36 36 1.33333333333333 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.641345710414296 +96 0 2 2 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.630026346765969 +96 0 2 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839124 +96 0 2 2 0 34 36 36 1.33333333333333 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861 +96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 2 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861 +96 0 2 2 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839125 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 3 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861 +96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 3 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.616824486578861 +96 0 2 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.621410197839125 +96 0 2 3 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.63002634676597 +96 0 2 3 0 44 36 36 1.33333333333333 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.641345710414296 +96 0 2 3 0 46 36 36 1.33333333333333 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.654541556639422 +96 0 2 3 0 48 36 36 1.33333333333333 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.668908746807157 +96 0 2 3 0 50 36 36 1.33333333333333 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 0 0.63539979750899 +96 0 3 0 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 0 0.630026346765969 +96 0 3 0 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 0 0.625297419028293 +96 0 3 0 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 0 0.621410197839124 +96 0 3 0 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 0 0.618663308361111 +96 0 3 0 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 0 0.616824486578861 +96 0 3 0 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 0 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678 +96 0 3 0 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 0 0.616824486578861 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 1 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678 +96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 1 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 0 0.615777600484678 +96 0 3 1 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 0 0.616824486578861 +96 0 3 1 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 0 0.618663308361111 +96 0 3 1 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 0 0.621410197839125 +96 0 3 1 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 0 0.625297419028293 +96 0 3 1 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 0 0.63002634676597 +96 0 3 1 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 0 0.63539979750899 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 2 0 29 36 36 1.33333333333333 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.63539979750899 +96 0 3 2 0 30 36 36 1.33333333333333 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.630026346765969 +96 0 3 2 0 31 36 36 1.33333333333333 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.625297419028293 +96 0 3 2 0 32 36 36 1.33333333333333 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.621410197839124 +96 0 3 2 0 33 36 36 1.33333333333333 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.618663308361111 +96 0 3 2 0 34 36 36 1.33333333333333 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861 +96 0 3 2 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678 +96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 2 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678 +96 0 3 2 0 38 36 36 1.33333333333333 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 3 0 35 36 36 1.33333333333333 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678 +96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 3 0 37 36 36 1.33333333333333 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.615777600484678 +96 0 3 3 0 38 36 36 1.33333333333333 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.616824486578861 +96 0 3 3 0 39 36 36 1.33333333333333 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.618663308361111 +96 0 3 3 0 40 36 36 1.33333333333333 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.621410197839125 +96 0 3 3 0 41 36 36 1.33333333333333 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.625297419028293 +96 0 3 3 0 42 36 36 1.33333333333333 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.63002634676597 +96 0 3 3 0 43 36 36 1.33333333333333 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018 +128 0 0 0 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 0 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 0 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 0 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 1 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 1 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 1 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 1 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 1 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 1 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 2 0 0 40 40 1.77777777777778 -1 0.111111111111111 0.111111111111111 0.873700996777018 +128 0 0 2 0 8 40 40 1.77777777777778 -0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 2 0 16 40 40 1.77777777777778 -0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 2 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 2 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 2 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 3 0 24 40 40 1.77777777777778 -0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 3 0 32 40 40 1.77777777777778 -0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 3 0 48 40 40 1.77777777777778 0.333333333333333 0.111111111111111 0.111111111111111 0.883486952153519 +128 0 0 3 0 56 40 40 1.77777777777778 0.555555555555556 0.111111111111111 0.111111111111111 0.863004424640887 +128 0 0 3 0 64 40 40 1.77777777777778 0.777777777777778 0.111111111111111 0.111111111111111 0.859471717622308 +128 0 0 3 0 72 40 40 1.77777777777778 1 0.111111111111111 0.111111111111111 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.862653663591007 +128 0 1 0 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.862560028606905 +128 0 1 0 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -9.86623976961809e-17 0.866965759785718 +128 0 1 0 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.876167092595071 +128 0 1 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.889185421864397 +128 0 1 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.907998184681559 +128 0 1 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888 +128 0 1 0 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.90799818468156 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 1 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888 +128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -9.86623976961809e-17 0.924033489738888 +128 0 1 1 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -9.86623976961809e-17 0.90799818468156 +128 0 1 1 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -9.86623976961809e-17 0.889185421864397 +128 0 1 1 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -9.86623976961809e-17 0.876167092595071 +128 0 1 1 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -9.86623976961809e-17 0.866965759785718 +128 0 1 1 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -9.86623976961809e-17 0.862560028606905 +128 0 1 1 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -9.86623976961809e-17 0.862653663591007 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 2 0 8 36 36 1.77777777777778 -0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007 +128 0 1 2 0 12 36 36 1.77777777777778 -0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905 +128 0 1 2 0 16 36 36 1.77777777777778 -0.555555555555556 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718 +128 0 1 2 0 20 36 36 1.77777777777778 -0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071 +128 0 1 2 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 1 2 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.907998184681559 +128 0 1 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 2 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 2 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 3 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -5.55111512312578e-17 0.924033489738888 +128 0 1 3 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -5.55111512312578e-17 0.90799818468156 +128 0 1 3 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.889185421864397 +128 0 1 3 0 52 36 36 1.77777777777778 0.444444444444444 -5.55111512312578e-17 -5.55111512312578e-17 0.876167092595071 +128 0 1 3 0 56 36 36 1.77777777777778 0.555555555555555 -5.55111512312578e-17 -5.55111512312578e-17 0.866965759785718 +128 0 1 3 0 60 36 36 1.77777777777778 0.666666666666667 -5.55111512312578e-17 -5.55111512312578e-17 0.862560028606905 +128 0 1 3 0 64 36 36 1.77777777777778 0.777777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.882075542854246 +128 0 2 0 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.889185421864397 +128 0 2 0 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.898403242286228 +128 0 2 0 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.907998184681559 +128 0 2 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.916919384356027 +128 0 2 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888 +128 0 2 0 0 34 36 36 1.77777777777778 -0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 0 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396 +128 0 2 0 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 1 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396 +128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 1 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 2.46655994240452e-17 0.927485951077396 +128 0 2 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 2.46655994240452e-17 0.924033489738888 +128 0 2 1 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 2.46655994240452e-17 0.916919384356027 +128 0 2 1 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 2.46655994240452e-17 0.90799818468156 +128 0 2 1 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 2.46655994240452e-17 0.898403242286228 +128 0 2 1 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 2.46655994240452e-17 0.889185421864397 +128 0 2 1 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 2.46655994240452e-17 0.882075542854246 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 2 0 22 36 36 1.77777777777778 -0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.882075542854246 +128 0 2 2 0 24 36 36 1.77777777777778 -0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.889185421864397 +128 0 2 2 0 26 36 36 1.77777777777778 -0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.898403242286228 +128 0 2 2 0 28 36 36 1.77777777777778 -0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.907998184681559 +128 0 2 2 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.916919384356027 +128 0 2 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888 +128 0 2 2 0 34 36 36 1.77777777777778 -0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396 +128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 2 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396 +128 0 2 2 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 3 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396 +128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 3 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -2.77555756156289e-17 0.927485951077396 +128 0 2 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -2.77555756156289e-17 0.924033489738888 +128 0 2 3 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -2.77555756156289e-17 0.916919384356027 +128 0 2 3 0 44 36 36 1.77777777777778 0.222222222222222 -5.55111512312578e-17 -2.77555756156289e-17 0.90799818468156 +128 0 2 3 0 46 36 36 1.77777777777778 0.277777777777778 -5.55111512312578e-17 -2.77555756156289e-17 0.898403242286228 +128 0 2 3 0 48 36 36 1.77777777777778 0.333333333333333 -5.55111512312578e-17 -2.77555756156289e-17 0.889185421864397 +128 0 2 3 0 50 36 36 1.77777777777778 0.388888888888889 -5.55111512312578e-17 -2.77555756156289e-17 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 0 0.912613836832073 +128 0 3 0 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 0 0.916919384356027 +128 0 3 0 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 0 0.920818233193455 +128 0 3 0 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 0 0.924033489738888 +128 0 3 0 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 0 0.926147880297958 +128 0 3 0 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 0 0.927485951077396 +128 0 3 0 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 0 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567 +128 0 3 0 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 0 0.927485951077396 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 1 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567 +128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 1 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 0 0.928209975180567 +128 0 3 1 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 0 0.927485951077396 +128 0 3 1 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 0 0.926147880297958 +128 0 3 1 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 0 0.924033489738888 +128 0 3 1 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 0 0.920818233193455 +128 0 3 1 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 0 0.916919384356027 +128 0 3 1 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 0 0.912613836832073 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 2 0 29 36 36 1.77777777777778 -0.194444444444445 -5.55111512312578e-17 -1.38777878078145e-17 0.912613836832073 +128 0 3 2 0 30 36 36 1.77777777777778 -0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.916919384356027 +128 0 3 2 0 31 36 36 1.77777777777778 -0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.920818233193455 +128 0 3 2 0 32 36 36 1.77777777777778 -0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.924033489738888 +128 0 3 2 0 33 36 36 1.77777777777778 -0.0833333333333334 -5.55111512312578e-17 -1.38777878078145e-17 0.926147880297958 +128 0 3 2 0 34 36 36 1.77777777777778 -0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396 +128 0 3 2 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567 +128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 2 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567 +128 0 3 2 0 38 36 36 1.77777777777778 0.0555555555555556 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 3 0 35 36 36 1.77777777777778 -0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567 +128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 3 0 37 36 36 1.77777777777778 0.0277777777777778 -5.55111512312578e-17 -1.38777878078145e-17 0.928209975180567 +128 0 3 3 0 38 36 36 1.77777777777778 0.0555555555555555 -5.55111512312578e-17 -1.38777878078145e-17 0.927485951077396 +128 0 3 3 0 39 36 36 1.77777777777778 0.0833333333333333 -5.55111512312578e-17 -1.38777878078145e-17 0.926147880297958 +128 0 3 3 0 40 36 36 1.77777777777778 0.111111111111111 -5.55111512312578e-17 -1.38777878078145e-17 0.924033489738888 +128 0 3 3 0 41 36 36 1.77777777777778 0.138888888888889 -5.55111512312578e-17 -1.38777878078145e-17 0.920818233193455 +128 0 3 3 0 42 36 36 1.77777777777778 0.166666666666667 -5.55111512312578e-17 -1.38777878078145e-17 0.916919384356027 +128 0 3 3 0 43 36 36 1.77777777777778 0.194444444444444 -5.55111512312578e-17 -1.38777878078145e-17 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc new file mode 100644 index 000000000..acc2fbf34 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.y.asc @@ -0,0 +1,866 @@ +# WAVETOY::phi y (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018 +64 0 0 0 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 0 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 0 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 0 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 0 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 0 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 0 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 1 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018 +64 0 0 1 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 1 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 1 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 1 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 1 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 1 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 1 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 1 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 2 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018 +64 0 0 2 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 2 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 2 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 2 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 2 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 2 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 2 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 2 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 3 0 40 0 40 0.888888888888889 0.111111111111111 -1 0.111111111111111 0.873700996777018 +64 0 0 3 0 40 8 40 0.888888888888889 0.111111111111111 -0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 3 0 40 16 40 0.888888888888889 0.111111111111111 -0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 3 0 40 24 40 0.888888888888889 0.111111111111111 -0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 3 0 40 32 40 0.888888888888889 0.111111111111111 -0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 3 0 40 48 40 0.888888888888889 0.111111111111111 0.333333333333333 0.111111111111111 0.730294733882952 +64 0 0 3 0 40 56 40 0.888888888888889 0.111111111111111 0.555555555555556 0.111111111111111 0.756699260944861 +64 0 0 3 0 40 64 40 0.888888888888889 0.111111111111111 0.777777777777778 0.111111111111111 0.807676282684182 +64 0 0 3 0 40 72 40 0.888888888888889 0.111111111111111 1 0.111111111111111 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 36 8 36 0.888888888888889 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.808379332677938 +64 0 1 0 0 36 12 36 0.888888888888889 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.779665123251562 +64 0 1 0 0 36 16 36 0.888888888888889 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.756097245006156 +64 0 1 0 0 36 20 36 0.888888888888889 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.739694852518638 +64 0 1 0 0 36 24 36 0.888888888888889 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.729218296316213 +64 0 1 0 0 36 28 36 0.888888888888889 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.725100663327575 +64 0 1 0 0 36 32 36 0.888888888888889 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 0 0 36 40 36 0.888888888888889 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.724342898925177 +64 0 1 0 0 36 44 36 0.888888888888889 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.725100663327574 +64 0 1 0 0 36 48 36 0.888888888888889 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.729218296316213 +64 0 1 0 0 36 52 36 0.888888888888889 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.739694852518638 +64 0 1 0 0 36 56 36 0.888888888888889 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.756097245006155 +64 0 1 0 0 36 60 36 0.888888888888889 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.779665123251561 +64 0 1 0 0 36 64 36 0.888888888888889 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.808379332677938 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 1 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.808379332677938 +64 0 1 1 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.779665123251562 +64 0 1 1 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.756097245006156 +64 0 1 1 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.739694852518638 +64 0 1 1 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.729218296316213 +64 0 1 1 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.725100663327575 +64 0 1 1 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.724342898925177 +64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 1 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.724342898925177 +64 0 1 1 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.725100663327574 +64 0 1 1 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.729218296316213 +64 0 1 1 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.739694852518638 +64 0 1 1 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.756097245006155 +64 0 1 1 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.779665123251561 +64 0 1 1 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.808379332677938 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 2 0 36 8 36 0.888888888888889 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938 +64 0 1 2 0 36 12 36 0.888888888888889 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562 +64 0 1 2 0 36 16 36 0.888888888888889 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156 +64 0 1 2 0 36 20 36 0.888888888888889 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 2 0 36 24 36 0.888888888888889 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 2 0 36 28 36 0.888888888888889 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575 +64 0 1 2 0 36 32 36 0.888888888888889 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 2 0 36 40 36 0.888888888888889 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 2 0 36 44 36 0.888888888888889 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574 +64 0 1 2 0 36 48 36 0.888888888888889 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 2 0 36 52 36 0.888888888888889 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 2 0 36 56 36 0.888888888888889 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155 +64 0 1 2 0 36 60 36 0.888888888888889 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561 +64 0 1 2 0 36 64 36 0.888888888888889 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 3 0 36 8 36 0.888888888888889 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.808379332677938 +64 0 1 3 0 36 12 36 0.888888888888889 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.779665123251562 +64 0 1 3 0 36 16 36 0.888888888888889 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.756097245006156 +64 0 1 3 0 36 20 36 0.888888888888889 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 3 0 36 24 36 0.888888888888889 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 3 0 36 28 36 0.888888888888889 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.725100663327575 +64 0 1 3 0 36 32 36 0.888888888888889 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 3 0 36 40 36 0.888888888888889 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.724342898925177 +64 0 1 3 0 36 44 36 0.888888888888889 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.725100663327574 +64 0 1 3 0 36 48 36 0.888888888888889 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.729218296316213 +64 0 1 3 0 36 52 36 0.888888888888889 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.739694852518638 +64 0 1 3 0 36 56 36 0.888888888888889 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.756097245006155 +64 0 1 3 0 36 60 36 0.888888888888889 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.779665123251561 +64 0 1 3 0 36 64 36 0.888888888888889 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 36 22 36 0.888888888888889 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.733688776948746 +64 0 2 0 0 36 24 36 0.888888888888889 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.729218296316213 +64 0 2 0 0 36 26 36 0.888888888888889 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.726552055334392 +64 0 2 0 0 36 28 36 0.888888888888889 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.725100663327575 +64 0 2 0 0 36 30 36 0.888888888888889 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.724502518106703 +64 0 2 0 0 36 32 36 0.888888888888889 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.724342898925177 +64 0 2 0 0 36 34 36 0.888888888888889 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 0 0 36 38 36 0.888888888888889 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.72395273727097 +64 0 2 0 0 36 40 36 0.888888888888889 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.724342898925177 +64 0 2 0 0 36 42 36 0.888888888888889 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.724502518106703 +64 0 2 0 0 36 44 36 0.888888888888889 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.725100663327574 +64 0 2 0 0 36 46 36 0.888888888888889 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.726552055334392 +64 0 2 0 0 36 48 36 0.888888888888889 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.729218296316213 +64 0 2 0 0 36 50 36 0.888888888888889 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.733688776948745 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 1 0 36 22 36 0.888888888888889 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.733688776948746 +64 0 2 1 0 36 24 36 0.888888888888889 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.729218296316213 +64 0 2 1 0 36 26 36 0.888888888888889 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.726552055334392 +64 0 2 1 0 36 28 36 0.888888888888889 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.725100663327575 +64 0 2 1 0 36 30 36 0.888888888888889 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.724502518106703 +64 0 2 1 0 36 32 36 0.888888888888889 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.724342898925177 +64 0 2 1 0 36 34 36 0.888888888888889 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.72395273727097 +64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 1 0 36 38 36 0.888888888888889 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.72395273727097 +64 0 2 1 0 36 40 36 0.888888888888889 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.724342898925177 +64 0 2 1 0 36 42 36 0.888888888888889 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.724502518106703 +64 0 2 1 0 36 44 36 0.888888888888889 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.725100663327574 +64 0 2 1 0 36 46 36 0.888888888888889 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.726552055334392 +64 0 2 1 0 36 48 36 0.888888888888889 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.729218296316213 +64 0 2 1 0 36 50 36 0.888888888888889 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.733688776948745 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 2 0 36 22 36 0.888888888888889 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.733688776948746 +64 0 2 2 0 36 24 36 0.888888888888889 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.729218296316213 +64 0 2 2 0 36 26 36 0.888888888888889 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.726552055334392 +64 0 2 2 0 36 28 36 0.888888888888889 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.725100663327575 +64 0 2 2 0 36 30 36 0.888888888888889 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.724502518106703 +64 0 2 2 0 36 32 36 0.888888888888889 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.724342898925177 +64 0 2 2 0 36 34 36 0.888888888888889 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.72395273727097 +64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 2 0 36 38 36 0.888888888888889 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.72395273727097 +64 0 2 2 0 36 40 36 0.888888888888889 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.724342898925177 +64 0 2 2 0 36 42 36 0.888888888888889 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.724502518106703 +64 0 2 2 0 36 44 36 0.888888888888889 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.725100663327574 +64 0 2 2 0 36 46 36 0.888888888888889 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.726552055334392 +64 0 2 2 0 36 48 36 0.888888888888889 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.729218296316213 +64 0 2 2 0 36 50 36 0.888888888888889 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.733688776948745 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 3 0 36 22 36 0.888888888888889 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.733688776948746 +64 0 2 3 0 36 24 36 0.888888888888889 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.729218296316213 +64 0 2 3 0 36 26 36 0.888888888888889 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.726552055334392 +64 0 2 3 0 36 28 36 0.888888888888889 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.725100663327575 +64 0 2 3 0 36 30 36 0.888888888888889 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.724502518106703 +64 0 2 3 0 36 32 36 0.888888888888889 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.724342898925177 +64 0 2 3 0 36 34 36 0.888888888888889 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.72395273727097 +64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 3 0 36 38 36 0.888888888888889 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.72395273727097 +64 0 2 3 0 36 40 36 0.888888888888889 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.724342898925177 +64 0 2 3 0 36 42 36 0.888888888888889 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.724502518106703 +64 0 2 3 0 36 44 36 0.888888888888889 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.725100663327574 +64 0 2 3 0 36 46 36 0.888888888888889 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.726552055334392 +64 0 2 3 0 36 48 36 0.888888888888889 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.729218296316213 +64 0 2 3 0 36 50 36 0.888888888888889 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 36 29 36 0.888888888888889 0 -0.194444444444445 0 0.724720854915558 +64 0 3 0 0 36 30 36 0.888888888888889 0 -0.166666666666667 0 0.724502518106703 +64 0 3 0 0 36 31 36 0.888888888888889 0 -0.138888888888889 0 0.724409709543024 +64 0 3 0 0 36 32 36 0.888888888888889 0 -0.111111111111111 0 0.724342898925177 +64 0 3 0 0 36 33 36 0.888888888888889 0 -0.0833333333333334 0 0.724151545837958 +64 0 3 0 0 36 34 36 0.888888888888889 0 -0.0555555555555556 0 0.72395273727097 +64 0 3 0 0 36 35 36 0.888888888888889 0 -0.0277777777777778 0 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 0 0 36 37 36 0.888888888888889 0 0.0277777777777777 0 0.723805016719017 +64 0 3 0 0 36 38 36 0.888888888888889 0 0.0555555555555555 0 0.72395273727097 +64 0 3 0 0 36 39 36 0.888888888888889 0 0.0833333333333333 0 0.724151545837958 +64 0 3 0 0 36 40 36 0.888888888888889 0 0.111111111111111 0 0.724342898925177 +64 0 3 0 0 36 41 36 0.888888888888889 0 0.138888888888889 0 0.724409709543024 +64 0 3 0 0 36 42 36 0.888888888888889 0 0.166666666666667 0 0.724502518106703 +64 0 3 0 0 36 43 36 0.888888888888889 0 0.194444444444444 0 0.724720854915558 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 1 0 36 29 36 0.888888888888889 -1.38777878078145e-17 -0.194444444444445 0 0.724720854915558 +64 0 3 1 0 36 30 36 0.888888888888889 -1.38777878078145e-17 -0.166666666666667 0 0.724502518106703 +64 0 3 1 0 36 31 36 0.888888888888889 -1.38777878078145e-17 -0.138888888888889 0 0.724409709543024 +64 0 3 1 0 36 32 36 0.888888888888889 -1.38777878078145e-17 -0.111111111111111 0 0.724342898925177 +64 0 3 1 0 36 33 36 0.888888888888889 -1.38777878078145e-17 -0.0833333333333334 0 0.724151545837958 +64 0 3 1 0 36 34 36 0.888888888888889 -1.38777878078145e-17 -0.0555555555555556 0 0.72395273727097 +64 0 3 1 0 36 35 36 0.888888888888889 -1.38777878078145e-17 -0.0277777777777778 0 0.723805016719017 +64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 1 0 36 37 36 0.888888888888889 -1.38777878078145e-17 0.0277777777777777 0 0.723805016719017 +64 0 3 1 0 36 38 36 0.888888888888889 -1.38777878078145e-17 0.0555555555555555 0 0.72395273727097 +64 0 3 1 0 36 39 36 0.888888888888889 -1.38777878078145e-17 0.0833333333333333 0 0.724151545837958 +64 0 3 1 0 36 40 36 0.888888888888889 -1.38777878078145e-17 0.111111111111111 0 0.724342898925177 +64 0 3 1 0 36 41 36 0.888888888888889 -1.38777878078145e-17 0.138888888888889 0 0.724409709543024 +64 0 3 1 0 36 42 36 0.888888888888889 -1.38777878078145e-17 0.166666666666667 0 0.724502518106703 +64 0 3 1 0 36 43 36 0.888888888888889 -1.38777878078145e-17 0.194444444444444 0 0.724720854915558 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 2 0 36 29 36 0.888888888888889 0 -0.194444444444445 -1.38777878078145e-17 0.724720854915558 +64 0 3 2 0 36 30 36 0.888888888888889 0 -0.166666666666667 -1.38777878078145e-17 0.724502518106703 +64 0 3 2 0 36 31 36 0.888888888888889 0 -0.138888888888889 -1.38777878078145e-17 0.724409709543024 +64 0 3 2 0 36 32 36 0.888888888888889 0 -0.111111111111111 -1.38777878078145e-17 0.724342898925177 +64 0 3 2 0 36 33 36 0.888888888888889 0 -0.0833333333333334 -1.38777878078145e-17 0.724151545837958 +64 0 3 2 0 36 34 36 0.888888888888889 0 -0.0555555555555556 -1.38777878078145e-17 0.72395273727097 +64 0 3 2 0 36 35 36 0.888888888888889 0 -0.0277777777777778 -1.38777878078145e-17 0.723805016719017 +64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 2 0 36 37 36 0.888888888888889 0 0.0277777777777777 -1.38777878078145e-17 0.723805016719017 +64 0 3 2 0 36 38 36 0.888888888888889 0 0.0555555555555555 -1.38777878078145e-17 0.72395273727097 +64 0 3 2 0 36 39 36 0.888888888888889 0 0.0833333333333333 -1.38777878078145e-17 0.724151545837958 +64 0 3 2 0 36 40 36 0.888888888888889 0 0.111111111111111 -1.38777878078145e-17 0.724342898925177 +64 0 3 2 0 36 41 36 0.888888888888889 0 0.138888888888889 -1.38777878078145e-17 0.724409709543024 +64 0 3 2 0 36 42 36 0.888888888888889 0 0.166666666666667 -1.38777878078145e-17 0.724502518106703 +64 0 3 2 0 36 43 36 0.888888888888889 0 0.194444444444444 -1.38777878078145e-17 0.724720854915558 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 3 0 36 29 36 0.888888888888889 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.724720854915558 +64 0 3 3 0 36 30 36 0.888888888888889 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.724502518106703 +64 0 3 3 0 36 31 36 0.888888888888889 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.724409709543024 +64 0 3 3 0 36 32 36 0.888888888888889 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.724342898925177 +64 0 3 3 0 36 33 36 0.888888888888889 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.724151545837958 +64 0 3 3 0 36 34 36 0.888888888888889 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.72395273727097 +64 0 3 3 0 36 35 36 0.888888888888889 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.723805016719017 +64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 3 0 36 37 36 0.888888888888889 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.723805016719017 +64 0 3 3 0 36 38 36 0.888888888888889 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.72395273727097 +64 0 3 3 0 36 39 36 0.888888888888889 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.724151545837958 +64 0 3 3 0 36 40 36 0.888888888888889 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.724342898925177 +64 0 3 3 0 36 41 36 0.888888888888889 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.724409709543024 +64 0 3 3 0 36 42 36 0.888888888888889 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.724502518106703 +64 0 3 3 0 36 43 36 0.888888888888889 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.724720854915558 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996 +96 0 0 0 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 0 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 0 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 0 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 0 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 0 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 0 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 1 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996 +96 0 0 1 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 1 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 1 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 1 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 1 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 1 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 1 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 1 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 2 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996 +96 0 0 2 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 2 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 2 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 2 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 2 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 2 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 2 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 2 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 3 0 40 0 40 1.33333333333333 0.111111111111111 -1 0.111111111111111 0.877480603359996 +96 0 0 3 0 40 8 40 1.33333333333333 0.111111111111111 -0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 3 0 40 16 40 1.33333333333333 0.111111111111111 -0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 3 0 40 24 40 1.33333333333333 0.111111111111111 -0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 3 0 40 32 40 1.33333333333333 0.111111111111111 -0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 3 0 40 48 40 1.33333333333333 0.111111111111111 0.333333333333333 0.111111111111111 0.677899959110667 +96 0 0 3 0 40 56 40 1.33333333333333 0.111111111111111 0.555555555555556 0.111111111111111 0.735090597558599 +96 0 0 3 0 40 64 40 1.33333333333333 0.111111111111111 0.777777777777778 0.111111111111111 0.798008089475601 +96 0 0 3 0 40 72 40 1.33333333333333 0.111111111111111 1 0.111111111111111 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 36 8 36 1.33333333333333 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.796688784792057 +96 0 1 0 0 36 12 36 1.33333333333333 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.76190136189151 +96 0 1 0 0 36 16 36 1.33333333333333 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.729928937348657 +96 0 1 0 0 36 20 36 1.33333333333333 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.698215010923196 +96 0 1 0 0 36 24 36 1.33333333333333 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.668908746807157 +96 0 1 0 0 36 28 36 1.33333333333333 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.641345710414296 +96 0 1 0 0 36 32 36 1.33333333333333 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 0 0 36 40 36 1.33333333333333 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.621410197839125 +96 0 1 0 0 36 44 36 1.33333333333333 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.641345710414297 +96 0 1 0 0 36 48 36 1.33333333333333 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.668908746807157 +96 0 1 0 0 36 52 36 1.33333333333333 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.698215010923196 +96 0 1 0 0 36 56 36 1.33333333333333 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.729928937348657 +96 0 1 0 0 36 60 36 1.33333333333333 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.76190136189151 +96 0 1 0 0 36 64 36 1.33333333333333 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.796688784792057 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 1 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.796688784792057 +96 0 1 1 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.76190136189151 +96 0 1 1 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.729928937348657 +96 0 1 1 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.698215010923196 +96 0 1 1 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.668908746807157 +96 0 1 1 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.641345710414296 +96 0 1 1 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.621410197839124 +96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 1 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.621410197839125 +96 0 1 1 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.641345710414297 +96 0 1 1 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.668908746807157 +96 0 1 1 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.698215010923196 +96 0 1 1 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.729928937348657 +96 0 1 1 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.76190136189151 +96 0 1 1 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.796688784792057 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 2 0 36 8 36 1.33333333333333 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057 +96 0 1 2 0 36 12 36 1.33333333333333 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 2 0 36 16 36 1.33333333333333 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657 +96 0 1 2 0 36 20 36 1.33333333333333 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 2 0 36 24 36 1.33333333333333 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 2 0 36 28 36 1.33333333333333 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296 +96 0 1 2 0 36 32 36 1.33333333333333 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124 +96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 2 0 36 40 36 1.33333333333333 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125 +96 0 1 2 0 36 44 36 1.33333333333333 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297 +96 0 1 2 0 36 48 36 1.33333333333333 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 2 0 36 52 36 1.33333333333333 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 2 0 36 56 36 1.33333333333333 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657 +96 0 1 2 0 36 60 36 1.33333333333333 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 2 0 36 64 36 1.33333333333333 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 3 0 36 8 36 1.33333333333333 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.796688784792057 +96 0 1 3 0 36 12 36 1.33333333333333 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 3 0 36 16 36 1.33333333333333 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.729928937348657 +96 0 1 3 0 36 20 36 1.33333333333333 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 3 0 36 24 36 1.33333333333333 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 3 0 36 28 36 1.33333333333333 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.641345710414296 +96 0 1 3 0 36 32 36 1.33333333333333 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.621410197839124 +96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 3 0 36 40 36 1.33333333333333 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.621410197839125 +96 0 1 3 0 36 44 36 1.33333333333333 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.641345710414297 +96 0 1 3 0 36 48 36 1.33333333333333 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.668908746807157 +96 0 1 3 0 36 52 36 1.33333333333333 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.698215010923196 +96 0 1 3 0 36 56 36 1.33333333333333 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.729928937348657 +96 0 1 3 0 36 60 36 1.33333333333333 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.76190136189151 +96 0 1 3 0 36 64 36 1.33333333333333 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 36 22 36 1.33333333333333 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.683302448238139 +96 0 2 0 0 36 24 36 1.33333333333333 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.668908746807157 +96 0 2 0 0 36 26 36 1.33333333333333 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.654541556639422 +96 0 2 0 0 36 28 36 1.33333333333333 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.641345710414296 +96 0 2 0 0 36 30 36 1.33333333333333 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.630026346765969 +96 0 2 0 0 36 32 36 1.33333333333333 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.621410197839124 +96 0 2 0 0 36 34 36 1.33333333333333 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 0 0 36 38 36 1.33333333333333 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.616824486578861 +96 0 2 0 0 36 40 36 1.33333333333333 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.621410197839125 +96 0 2 0 0 36 42 36 1.33333333333333 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.63002634676597 +96 0 2 0 0 36 44 36 1.33333333333333 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.641345710414297 +96 0 2 0 0 36 46 36 1.33333333333333 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.654541556639422 +96 0 2 0 0 36 48 36 1.33333333333333 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.668908746807157 +96 0 2 0 0 36 50 36 1.33333333333333 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.683302448238139 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 1 0 36 22 36 1.33333333333333 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.683302448238139 +96 0 2 1 0 36 24 36 1.33333333333333 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.668908746807157 +96 0 2 1 0 36 26 36 1.33333333333333 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.654541556639422 +96 0 2 1 0 36 28 36 1.33333333333333 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.641345710414296 +96 0 2 1 0 36 30 36 1.33333333333333 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.630026346765969 +96 0 2 1 0 36 32 36 1.33333333333333 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.621410197839124 +96 0 2 1 0 36 34 36 1.33333333333333 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.616824486578861 +96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 1 0 36 38 36 1.33333333333333 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.616824486578861 +96 0 2 1 0 36 40 36 1.33333333333333 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.621410197839125 +96 0 2 1 0 36 42 36 1.33333333333333 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.63002634676597 +96 0 2 1 0 36 44 36 1.33333333333333 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.641345710414297 +96 0 2 1 0 36 46 36 1.33333333333333 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.654541556639422 +96 0 2 1 0 36 48 36 1.33333333333333 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.668908746807157 +96 0 2 1 0 36 50 36 1.33333333333333 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.683302448238139 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 2 0 36 22 36 1.33333333333333 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.683302448238139 +96 0 2 2 0 36 24 36 1.33333333333333 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.668908746807157 +96 0 2 2 0 36 26 36 1.33333333333333 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.654541556639422 +96 0 2 2 0 36 28 36 1.33333333333333 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.641345710414296 +96 0 2 2 0 36 30 36 1.33333333333333 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.630026346765969 +96 0 2 2 0 36 32 36 1.33333333333333 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.621410197839124 +96 0 2 2 0 36 34 36 1.33333333333333 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.616824486578861 +96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 2 0 36 38 36 1.33333333333333 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.616824486578861 +96 0 2 2 0 36 40 36 1.33333333333333 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.621410197839125 +96 0 2 2 0 36 42 36 1.33333333333333 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.63002634676597 +96 0 2 2 0 36 44 36 1.33333333333333 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.641345710414297 +96 0 2 2 0 36 46 36 1.33333333333333 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.654541556639422 +96 0 2 2 0 36 48 36 1.33333333333333 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.668908746807157 +96 0 2 2 0 36 50 36 1.33333333333333 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.683302448238139 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 3 0 36 22 36 1.33333333333333 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.683302448238139 +96 0 2 3 0 36 24 36 1.33333333333333 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.668908746807157 +96 0 2 3 0 36 26 36 1.33333333333333 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.654541556639422 +96 0 2 3 0 36 28 36 1.33333333333333 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.641345710414296 +96 0 2 3 0 36 30 36 1.33333333333333 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.630026346765969 +96 0 2 3 0 36 32 36 1.33333333333333 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.621410197839124 +96 0 2 3 0 36 34 36 1.33333333333333 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.616824486578861 +96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 3 0 36 38 36 1.33333333333333 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.616824486578861 +96 0 2 3 0 36 40 36 1.33333333333333 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.621410197839125 +96 0 2 3 0 36 42 36 1.33333333333333 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.63002634676597 +96 0 2 3 0 36 44 36 1.33333333333333 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.641345710414297 +96 0 2 3 0 36 46 36 1.33333333333333 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.654541556639422 +96 0 2 3 0 36 48 36 1.33333333333333 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.668908746807157 +96 0 2 3 0 36 50 36 1.33333333333333 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 36 29 36 1.33333333333333 0 -0.194444444444445 0 0.63539979750899 +96 0 3 0 0 36 30 36 1.33333333333333 0 -0.166666666666667 0 0.630026346765969 +96 0 3 0 0 36 31 36 1.33333333333333 0 -0.138888888888889 0 0.625297419028293 +96 0 3 0 0 36 32 36 1.33333333333333 0 -0.111111111111111 0 0.621410197839124 +96 0 3 0 0 36 33 36 1.33333333333333 0 -0.0833333333333334 0 0.618663308361111 +96 0 3 0 0 36 34 36 1.33333333333333 0 -0.0555555555555556 0 0.616824486578861 +96 0 3 0 0 36 35 36 1.33333333333333 0 -0.0277777777777778 0 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 0 0 36 37 36 1.33333333333333 0 0.0277777777777777 0 0.615777600484678 +96 0 3 0 0 36 38 36 1.33333333333333 0 0.0555555555555555 0 0.616824486578861 +96 0 3 0 0 36 39 36 1.33333333333333 0 0.0833333333333333 0 0.618663308361111 +96 0 3 0 0 36 40 36 1.33333333333333 0 0.111111111111111 0 0.621410197839125 +96 0 3 0 0 36 41 36 1.33333333333333 0 0.138888888888889 0 0.625297419028293 +96 0 3 0 0 36 42 36 1.33333333333333 0 0.166666666666667 0 0.63002634676597 +96 0 3 0 0 36 43 36 1.33333333333333 0 0.194444444444444 0 0.63539979750899 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 1 0 36 29 36 1.33333333333333 -1.38777878078145e-17 -0.194444444444445 0 0.63539979750899 +96 0 3 1 0 36 30 36 1.33333333333333 -1.38777878078145e-17 -0.166666666666667 0 0.630026346765969 +96 0 3 1 0 36 31 36 1.33333333333333 -1.38777878078145e-17 -0.138888888888889 0 0.625297419028293 +96 0 3 1 0 36 32 36 1.33333333333333 -1.38777878078145e-17 -0.111111111111111 0 0.621410197839124 +96 0 3 1 0 36 33 36 1.33333333333333 -1.38777878078145e-17 -0.0833333333333334 0 0.618663308361111 +96 0 3 1 0 36 34 36 1.33333333333333 -1.38777878078145e-17 -0.0555555555555556 0 0.616824486578861 +96 0 3 1 0 36 35 36 1.33333333333333 -1.38777878078145e-17 -0.0277777777777778 0 0.615777600484678 +96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 1 0 36 37 36 1.33333333333333 -1.38777878078145e-17 0.0277777777777777 0 0.615777600484678 +96 0 3 1 0 36 38 36 1.33333333333333 -1.38777878078145e-17 0.0555555555555555 0 0.616824486578861 +96 0 3 1 0 36 39 36 1.33333333333333 -1.38777878078145e-17 0.0833333333333333 0 0.618663308361111 +96 0 3 1 0 36 40 36 1.33333333333333 -1.38777878078145e-17 0.111111111111111 0 0.621410197839125 +96 0 3 1 0 36 41 36 1.33333333333333 -1.38777878078145e-17 0.138888888888889 0 0.625297419028293 +96 0 3 1 0 36 42 36 1.33333333333333 -1.38777878078145e-17 0.166666666666667 0 0.63002634676597 +96 0 3 1 0 36 43 36 1.33333333333333 -1.38777878078145e-17 0.194444444444444 0 0.63539979750899 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 2 0 36 29 36 1.33333333333333 0 -0.194444444444445 -1.38777878078145e-17 0.63539979750899 +96 0 3 2 0 36 30 36 1.33333333333333 0 -0.166666666666667 -1.38777878078145e-17 0.630026346765969 +96 0 3 2 0 36 31 36 1.33333333333333 0 -0.138888888888889 -1.38777878078145e-17 0.625297419028293 +96 0 3 2 0 36 32 36 1.33333333333333 0 -0.111111111111111 -1.38777878078145e-17 0.621410197839124 +96 0 3 2 0 36 33 36 1.33333333333333 0 -0.0833333333333334 -1.38777878078145e-17 0.618663308361111 +96 0 3 2 0 36 34 36 1.33333333333333 0 -0.0555555555555556 -1.38777878078145e-17 0.616824486578861 +96 0 3 2 0 36 35 36 1.33333333333333 0 -0.0277777777777778 -1.38777878078145e-17 0.615777600484678 +96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 2 0 36 37 36 1.33333333333333 0 0.0277777777777777 -1.38777878078145e-17 0.615777600484678 +96 0 3 2 0 36 38 36 1.33333333333333 0 0.0555555555555555 -1.38777878078145e-17 0.616824486578861 +96 0 3 2 0 36 39 36 1.33333333333333 0 0.0833333333333333 -1.38777878078145e-17 0.618663308361111 +96 0 3 2 0 36 40 36 1.33333333333333 0 0.111111111111111 -1.38777878078145e-17 0.621410197839125 +96 0 3 2 0 36 41 36 1.33333333333333 0 0.138888888888889 -1.38777878078145e-17 0.625297419028293 +96 0 3 2 0 36 42 36 1.33333333333333 0 0.166666666666667 -1.38777878078145e-17 0.63002634676597 +96 0 3 2 0 36 43 36 1.33333333333333 0 0.194444444444444 -1.38777878078145e-17 0.63539979750899 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 3 0 36 29 36 1.33333333333333 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.63539979750899 +96 0 3 3 0 36 30 36 1.33333333333333 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.630026346765969 +96 0 3 3 0 36 31 36 1.33333333333333 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.625297419028293 +96 0 3 3 0 36 32 36 1.33333333333333 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.621410197839124 +96 0 3 3 0 36 33 36 1.33333333333333 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.618663308361111 +96 0 3 3 0 36 34 36 1.33333333333333 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.616824486578861 +96 0 3 3 0 36 35 36 1.33333333333333 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.615777600484678 +96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 3 0 36 37 36 1.33333333333333 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.615777600484678 +96 0 3 3 0 36 38 36 1.33333333333333 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.616824486578861 +96 0 3 3 0 36 39 36 1.33333333333333 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.618663308361111 +96 0 3 3 0 36 40 36 1.33333333333333 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.621410197839125 +96 0 3 3 0 36 41 36 1.33333333333333 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.625297419028293 +96 0 3 3 0 36 42 36 1.33333333333333 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.63002634676597 +96 0 3 3 0 36 43 36 1.33333333333333 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018 +128 0 0 0 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 0 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 0 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 0 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 0 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 0 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 0 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 1 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018 +128 0 0 1 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 1 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 1 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 1 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 1 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 1 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 1 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 1 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 2 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018 +128 0 0 2 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 2 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 2 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 2 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 2 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 2 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 2 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 2 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 3 0 40 0 40 1.77777777777778 0.111111111111111 -1 0.111111111111111 0.873700996777018 +128 0 0 3 0 40 8 40 1.77777777777778 0.111111111111111 -0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 3 0 40 16 40 1.77777777777778 0.111111111111111 -0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 3 0 40 24 40 1.77777777777778 0.111111111111111 -0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 3 0 40 32 40 1.77777777777778 0.111111111111111 -0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 3 0 40 48 40 1.77777777777778 0.111111111111111 0.333333333333333 0.111111111111111 0.883486952153519 +128 0 0 3 0 40 56 40 1.77777777777778 0.111111111111111 0.555555555555556 0.111111111111111 0.863004424640887 +128 0 0 3 0 40 64 40 1.77777777777778 0.111111111111111 0.777777777777778 0.111111111111111 0.859471717622308 +128 0 0 3 0 40 72 40 1.77777777777778 0.111111111111111 1 0.111111111111111 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 36 8 36 1.77777777777778 -9.86623976961809e-17 -0.777777777777778 -9.86623976961809e-17 0.862653663591007 +128 0 1 0 0 36 12 36 1.77777777777778 -9.86623976961809e-17 -0.666666666666667 -9.86623976961809e-17 0.862560028606905 +128 0 1 0 0 36 16 36 1.77777777777778 -9.86623976961809e-17 -0.555555555555556 -9.86623976961809e-17 0.866965759785718 +128 0 1 0 0 36 20 36 1.77777777777778 -9.86623976961809e-17 -0.444444444444444 -9.86623976961809e-17 0.876167092595071 +128 0 1 0 0 36 24 36 1.77777777777778 -9.86623976961809e-17 -0.333333333333333 -9.86623976961809e-17 0.889185421864397 +128 0 1 0 0 36 28 36 1.77777777777778 -9.86623976961809e-17 -0.222222222222222 -9.86623976961809e-17 0.907998184681559 +128 0 1 0 0 36 32 36 1.77777777777778 -9.86623976961809e-17 -0.111111111111111 -9.86623976961809e-17 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 0 0 36 40 36 1.77777777777778 -9.86623976961809e-17 0.111111111111111 -9.86623976961809e-17 0.924033489738888 +128 0 1 0 0 36 44 36 1.77777777777778 -9.86623976961809e-17 0.222222222222222 -9.86623976961809e-17 0.907998184681559 +128 0 1 0 0 36 48 36 1.77777777777778 -9.86623976961809e-17 0.333333333333333 -9.86623976961809e-17 0.889185421864397 +128 0 1 0 0 36 52 36 1.77777777777778 -9.86623976961809e-17 0.444444444444444 -9.86623976961809e-17 0.876167092595071 +128 0 1 0 0 36 56 36 1.77777777777778 -9.86623976961809e-17 0.555555555555555 -9.86623976961809e-17 0.866965759785718 +128 0 1 0 0 36 60 36 1.77777777777778 -9.86623976961809e-17 0.666666666666667 -9.86623976961809e-17 0.862560028606905 +128 0 1 0 0 36 64 36 1.77777777777778 -9.86623976961809e-17 0.777777777777778 -9.86623976961809e-17 0.862653663591007 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 1 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -9.86623976961809e-17 0.862653663591007 +128 0 1 1 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -9.86623976961809e-17 0.862560028606905 +128 0 1 1 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -9.86623976961809e-17 0.866965759785718 +128 0 1 1 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -9.86623976961809e-17 0.876167092595071 +128 0 1 1 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -9.86623976961809e-17 0.889185421864397 +128 0 1 1 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -9.86623976961809e-17 0.907998184681559 +128 0 1 1 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -9.86623976961809e-17 0.924033489738888 +128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 1 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -9.86623976961809e-17 0.924033489738888 +128 0 1 1 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -9.86623976961809e-17 0.907998184681559 +128 0 1 1 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -9.86623976961809e-17 0.889185421864397 +128 0 1 1 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -9.86623976961809e-17 0.876167092595071 +128 0 1 1 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -9.86623976961809e-17 0.866965759785718 +128 0 1 1 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -9.86623976961809e-17 0.862560028606905 +128 0 1 1 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -9.86623976961809e-17 0.862653663591007 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 2 0 36 8 36 1.77777777777778 -9.86623976961809e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007 +128 0 1 2 0 36 12 36 1.77777777777778 -9.86623976961809e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 2 0 36 16 36 1.77777777777778 -9.86623976961809e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718 +128 0 1 2 0 36 20 36 1.77777777777778 -9.86623976961809e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 2 0 36 24 36 1.77777777777778 -9.86623976961809e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 2 0 36 28 36 1.77777777777778 -9.86623976961809e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 2 0 36 32 36 1.77777777777778 -9.86623976961809e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 2 0 36 40 36 1.77777777777778 -9.86623976961809e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 2 0 36 44 36 1.77777777777778 -9.86623976961809e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 2 0 36 48 36 1.77777777777778 -9.86623976961809e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 2 0 36 52 36 1.77777777777778 -9.86623976961809e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 2 0 36 56 36 1.77777777777778 -9.86623976961809e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718 +128 0 1 2 0 36 60 36 1.77777777777778 -9.86623976961809e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 2 0 36 64 36 1.77777777777778 -9.86623976961809e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 3 0 36 8 36 1.77777777777778 -5.55111512312578e-17 -0.777777777777778 -5.55111512312578e-17 0.862653663591007 +128 0 1 3 0 36 12 36 1.77777777777778 -5.55111512312578e-17 -0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 3 0 36 16 36 1.77777777777778 -5.55111512312578e-17 -0.555555555555556 -5.55111512312578e-17 0.866965759785718 +128 0 1 3 0 36 20 36 1.77777777777778 -5.55111512312578e-17 -0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 3 0 36 24 36 1.77777777777778 -5.55111512312578e-17 -0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 3 0 36 28 36 1.77777777777778 -5.55111512312578e-17 -0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 3 0 36 32 36 1.77777777777778 -5.55111512312578e-17 -0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 3 0 36 40 36 1.77777777777778 -5.55111512312578e-17 0.111111111111111 -5.55111512312578e-17 0.924033489738888 +128 0 1 3 0 36 44 36 1.77777777777778 -5.55111512312578e-17 0.222222222222222 -5.55111512312578e-17 0.907998184681559 +128 0 1 3 0 36 48 36 1.77777777777778 -5.55111512312578e-17 0.333333333333333 -5.55111512312578e-17 0.889185421864397 +128 0 1 3 0 36 52 36 1.77777777777778 -5.55111512312578e-17 0.444444444444444 -5.55111512312578e-17 0.876167092595071 +128 0 1 3 0 36 56 36 1.77777777777778 -5.55111512312578e-17 0.555555555555555 -5.55111512312578e-17 0.866965759785718 +128 0 1 3 0 36 60 36 1.77777777777778 -5.55111512312578e-17 0.666666666666667 -5.55111512312578e-17 0.862560028606905 +128 0 1 3 0 36 64 36 1.77777777777778 -5.55111512312578e-17 0.777777777777778 -5.55111512312578e-17 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 36 22 36 1.77777777777778 2.46655994240452e-17 -0.388888888888889 2.46655994240452e-17 0.882075542854246 +128 0 2 0 0 36 24 36 1.77777777777778 2.46655994240452e-17 -0.333333333333333 2.46655994240452e-17 0.889185421864397 +128 0 2 0 0 36 26 36 1.77777777777778 2.46655994240452e-17 -0.277777777777778 2.46655994240452e-17 0.898403242286228 +128 0 2 0 0 36 28 36 1.77777777777778 2.46655994240452e-17 -0.222222222222222 2.46655994240452e-17 0.907998184681559 +128 0 2 0 0 36 30 36 1.77777777777778 2.46655994240452e-17 -0.166666666666667 2.46655994240452e-17 0.916919384356027 +128 0 2 0 0 36 32 36 1.77777777777778 2.46655994240452e-17 -0.111111111111111 2.46655994240452e-17 0.924033489738888 +128 0 2 0 0 36 34 36 1.77777777777778 2.46655994240452e-17 -0.0555555555555556 2.46655994240452e-17 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 0 0 36 38 36 1.77777777777778 2.46655994240452e-17 0.0555555555555555 2.46655994240452e-17 0.927485951077396 +128 0 2 0 0 36 40 36 1.77777777777778 2.46655994240452e-17 0.111111111111111 2.46655994240452e-17 0.924033489738888 +128 0 2 0 0 36 42 36 1.77777777777778 2.46655994240452e-17 0.166666666666667 2.46655994240452e-17 0.916919384356027 +128 0 2 0 0 36 44 36 1.77777777777778 2.46655994240452e-17 0.222222222222222 2.46655994240452e-17 0.907998184681559 +128 0 2 0 0 36 46 36 1.77777777777778 2.46655994240452e-17 0.277777777777778 2.46655994240452e-17 0.898403242286228 +128 0 2 0 0 36 48 36 1.77777777777778 2.46655994240452e-17 0.333333333333333 2.46655994240452e-17 0.889185421864397 +128 0 2 0 0 36 50 36 1.77777777777778 2.46655994240452e-17 0.388888888888889 2.46655994240452e-17 0.882075542854246 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 1 0 36 22 36 1.77777777777778 -2.77555756156289e-17 -0.388888888888889 2.46655994240452e-17 0.882075542854246 +128 0 2 1 0 36 24 36 1.77777777777778 -2.77555756156289e-17 -0.333333333333333 2.46655994240452e-17 0.889185421864397 +128 0 2 1 0 36 26 36 1.77777777777778 -2.77555756156289e-17 -0.277777777777778 2.46655994240452e-17 0.898403242286228 +128 0 2 1 0 36 28 36 1.77777777777778 -2.77555756156289e-17 -0.222222222222222 2.46655994240452e-17 0.907998184681559 +128 0 2 1 0 36 30 36 1.77777777777778 -2.77555756156289e-17 -0.166666666666667 2.46655994240452e-17 0.916919384356027 +128 0 2 1 0 36 32 36 1.77777777777778 -2.77555756156289e-17 -0.111111111111111 2.46655994240452e-17 0.924033489738888 +128 0 2 1 0 36 34 36 1.77777777777778 -2.77555756156289e-17 -0.0555555555555556 2.46655994240452e-17 0.927485951077396 +128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 1 0 36 38 36 1.77777777777778 -2.77555756156289e-17 0.0555555555555555 2.46655994240452e-17 0.927485951077396 +128 0 2 1 0 36 40 36 1.77777777777778 -2.77555756156289e-17 0.111111111111111 2.46655994240452e-17 0.924033489738888 +128 0 2 1 0 36 42 36 1.77777777777778 -2.77555756156289e-17 0.166666666666667 2.46655994240452e-17 0.916919384356027 +128 0 2 1 0 36 44 36 1.77777777777778 -2.77555756156289e-17 0.222222222222222 2.46655994240452e-17 0.907998184681559 +128 0 2 1 0 36 46 36 1.77777777777778 -2.77555756156289e-17 0.277777777777778 2.46655994240452e-17 0.898403242286228 +128 0 2 1 0 36 48 36 1.77777777777778 -2.77555756156289e-17 0.333333333333333 2.46655994240452e-17 0.889185421864397 +128 0 2 1 0 36 50 36 1.77777777777778 -2.77555756156289e-17 0.388888888888889 2.46655994240452e-17 0.882075542854246 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 2 0 36 22 36 1.77777777777778 2.46655994240452e-17 -0.388888888888889 -2.77555756156289e-17 0.882075542854246 +128 0 2 2 0 36 24 36 1.77777777777778 2.46655994240452e-17 -0.333333333333333 -2.77555756156289e-17 0.889185421864397 +128 0 2 2 0 36 26 36 1.77777777777778 2.46655994240452e-17 -0.277777777777778 -2.77555756156289e-17 0.898403242286228 +128 0 2 2 0 36 28 36 1.77777777777778 2.46655994240452e-17 -0.222222222222222 -2.77555756156289e-17 0.907998184681559 +128 0 2 2 0 36 30 36 1.77777777777778 2.46655994240452e-17 -0.166666666666667 -2.77555756156289e-17 0.916919384356027 +128 0 2 2 0 36 32 36 1.77777777777778 2.46655994240452e-17 -0.111111111111111 -2.77555756156289e-17 0.924033489738888 +128 0 2 2 0 36 34 36 1.77777777777778 2.46655994240452e-17 -0.0555555555555556 -2.77555756156289e-17 0.927485951077396 +128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 2 0 36 38 36 1.77777777777778 2.46655994240452e-17 0.0555555555555555 -2.77555756156289e-17 0.927485951077396 +128 0 2 2 0 36 40 36 1.77777777777778 2.46655994240452e-17 0.111111111111111 -2.77555756156289e-17 0.924033489738888 +128 0 2 2 0 36 42 36 1.77777777777778 2.46655994240452e-17 0.166666666666667 -2.77555756156289e-17 0.916919384356027 +128 0 2 2 0 36 44 36 1.77777777777778 2.46655994240452e-17 0.222222222222222 -2.77555756156289e-17 0.907998184681559 +128 0 2 2 0 36 46 36 1.77777777777778 2.46655994240452e-17 0.277777777777778 -2.77555756156289e-17 0.898403242286228 +128 0 2 2 0 36 48 36 1.77777777777778 2.46655994240452e-17 0.333333333333333 -2.77555756156289e-17 0.889185421864397 +128 0 2 2 0 36 50 36 1.77777777777778 2.46655994240452e-17 0.388888888888889 -2.77555756156289e-17 0.882075542854246 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 3 0 36 22 36 1.77777777777778 -2.77555756156289e-17 -0.388888888888889 -2.77555756156289e-17 0.882075542854246 +128 0 2 3 0 36 24 36 1.77777777777778 -2.77555756156289e-17 -0.333333333333333 -2.77555756156289e-17 0.889185421864397 +128 0 2 3 0 36 26 36 1.77777777777778 -2.77555756156289e-17 -0.277777777777778 -2.77555756156289e-17 0.898403242286228 +128 0 2 3 0 36 28 36 1.77777777777778 -2.77555756156289e-17 -0.222222222222222 -2.77555756156289e-17 0.907998184681559 +128 0 2 3 0 36 30 36 1.77777777777778 -2.77555756156289e-17 -0.166666666666667 -2.77555756156289e-17 0.916919384356027 +128 0 2 3 0 36 32 36 1.77777777777778 -2.77555756156289e-17 -0.111111111111111 -2.77555756156289e-17 0.924033489738888 +128 0 2 3 0 36 34 36 1.77777777777778 -2.77555756156289e-17 -0.0555555555555556 -2.77555756156289e-17 0.927485951077396 +128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 3 0 36 38 36 1.77777777777778 -2.77555756156289e-17 0.0555555555555555 -2.77555756156289e-17 0.927485951077396 +128 0 2 3 0 36 40 36 1.77777777777778 -2.77555756156289e-17 0.111111111111111 -2.77555756156289e-17 0.924033489738888 +128 0 2 3 0 36 42 36 1.77777777777778 -2.77555756156289e-17 0.166666666666667 -2.77555756156289e-17 0.916919384356027 +128 0 2 3 0 36 44 36 1.77777777777778 -2.77555756156289e-17 0.222222222222222 -2.77555756156289e-17 0.907998184681559 +128 0 2 3 0 36 46 36 1.77777777777778 -2.77555756156289e-17 0.277777777777778 -2.77555756156289e-17 0.898403242286228 +128 0 2 3 0 36 48 36 1.77777777777778 -2.77555756156289e-17 0.333333333333333 -2.77555756156289e-17 0.889185421864397 +128 0 2 3 0 36 50 36 1.77777777777778 -2.77555756156289e-17 0.388888888888889 -2.77555756156289e-17 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 36 29 36 1.77777777777778 0 -0.194444444444445 0 0.912613836832073 +128 0 3 0 0 36 30 36 1.77777777777778 0 -0.166666666666667 0 0.916919384356027 +128 0 3 0 0 36 31 36 1.77777777777778 0 -0.138888888888889 0 0.920818233193455 +128 0 3 0 0 36 32 36 1.77777777777778 0 -0.111111111111111 0 0.924033489738888 +128 0 3 0 0 36 33 36 1.77777777777778 0 -0.0833333333333334 0 0.926147880297958 +128 0 3 0 0 36 34 36 1.77777777777778 0 -0.0555555555555556 0 0.927485951077396 +128 0 3 0 0 36 35 36 1.77777777777778 0 -0.0277777777777778 0 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 0 0 36 37 36 1.77777777777778 0 0.0277777777777777 0 0.928209975180567 +128 0 3 0 0 36 38 36 1.77777777777778 0 0.0555555555555555 0 0.927485951077396 +128 0 3 0 0 36 39 36 1.77777777777778 0 0.0833333333333333 0 0.926147880297958 +128 0 3 0 0 36 40 36 1.77777777777778 0 0.111111111111111 0 0.924033489738888 +128 0 3 0 0 36 41 36 1.77777777777778 0 0.138888888888889 0 0.920818233193455 +128 0 3 0 0 36 42 36 1.77777777777778 0 0.166666666666667 0 0.916919384356027 +128 0 3 0 0 36 43 36 1.77777777777778 0 0.194444444444444 0 0.912613836832073 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 1 0 36 29 36 1.77777777777778 -1.38777878078145e-17 -0.194444444444445 0 0.912613836832073 +128 0 3 1 0 36 30 36 1.77777777777778 -1.38777878078145e-17 -0.166666666666667 0 0.916919384356027 +128 0 3 1 0 36 31 36 1.77777777777778 -1.38777878078145e-17 -0.138888888888889 0 0.920818233193455 +128 0 3 1 0 36 32 36 1.77777777777778 -1.38777878078145e-17 -0.111111111111111 0 0.924033489738888 +128 0 3 1 0 36 33 36 1.77777777777778 -1.38777878078145e-17 -0.0833333333333334 0 0.926147880297958 +128 0 3 1 0 36 34 36 1.77777777777778 -1.38777878078145e-17 -0.0555555555555556 0 0.927485951077396 +128 0 3 1 0 36 35 36 1.77777777777778 -1.38777878078145e-17 -0.0277777777777778 0 0.928209975180567 +128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 1 0 36 37 36 1.77777777777778 -1.38777878078145e-17 0.0277777777777777 0 0.928209975180567 +128 0 3 1 0 36 38 36 1.77777777777778 -1.38777878078145e-17 0.0555555555555555 0 0.927485951077396 +128 0 3 1 0 36 39 36 1.77777777777778 -1.38777878078145e-17 0.0833333333333333 0 0.926147880297958 +128 0 3 1 0 36 40 36 1.77777777777778 -1.38777878078145e-17 0.111111111111111 0 0.924033489738888 +128 0 3 1 0 36 41 36 1.77777777777778 -1.38777878078145e-17 0.138888888888889 0 0.920818233193455 +128 0 3 1 0 36 42 36 1.77777777777778 -1.38777878078145e-17 0.166666666666667 0 0.916919384356027 +128 0 3 1 0 36 43 36 1.77777777777778 -1.38777878078145e-17 0.194444444444444 0 0.912613836832073 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 2 0 36 29 36 1.77777777777778 0 -0.194444444444445 -1.38777878078145e-17 0.912613836832073 +128 0 3 2 0 36 30 36 1.77777777777778 0 -0.166666666666667 -1.38777878078145e-17 0.916919384356027 +128 0 3 2 0 36 31 36 1.77777777777778 0 -0.138888888888889 -1.38777878078145e-17 0.920818233193455 +128 0 3 2 0 36 32 36 1.77777777777778 0 -0.111111111111111 -1.38777878078145e-17 0.924033489738888 +128 0 3 2 0 36 33 36 1.77777777777778 0 -0.0833333333333334 -1.38777878078145e-17 0.926147880297958 +128 0 3 2 0 36 34 36 1.77777777777778 0 -0.0555555555555556 -1.38777878078145e-17 0.927485951077396 +128 0 3 2 0 36 35 36 1.77777777777778 0 -0.0277777777777778 -1.38777878078145e-17 0.928209975180567 +128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 2 0 36 37 36 1.77777777777778 0 0.0277777777777777 -1.38777878078145e-17 0.928209975180567 +128 0 3 2 0 36 38 36 1.77777777777778 0 0.0555555555555555 -1.38777878078145e-17 0.927485951077396 +128 0 3 2 0 36 39 36 1.77777777777778 0 0.0833333333333333 -1.38777878078145e-17 0.926147880297958 +128 0 3 2 0 36 40 36 1.77777777777778 0 0.111111111111111 -1.38777878078145e-17 0.924033489738888 +128 0 3 2 0 36 41 36 1.77777777777778 0 0.138888888888889 -1.38777878078145e-17 0.920818233193455 +128 0 3 2 0 36 42 36 1.77777777777778 0 0.166666666666667 -1.38777878078145e-17 0.916919384356027 +128 0 3 2 0 36 43 36 1.77777777777778 0 0.194444444444444 -1.38777878078145e-17 0.912613836832073 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 3 0 36 29 36 1.77777777777778 -1.38777878078145e-17 -0.194444444444445 -1.38777878078145e-17 0.912613836832073 +128 0 3 3 0 36 30 36 1.77777777777778 -1.38777878078145e-17 -0.166666666666667 -1.38777878078145e-17 0.916919384356027 +128 0 3 3 0 36 31 36 1.77777777777778 -1.38777878078145e-17 -0.138888888888889 -1.38777878078145e-17 0.920818233193455 +128 0 3 3 0 36 32 36 1.77777777777778 -1.38777878078145e-17 -0.111111111111111 -1.38777878078145e-17 0.924033489738888 +128 0 3 3 0 36 33 36 1.77777777777778 -1.38777878078145e-17 -0.0833333333333334 -1.38777878078145e-17 0.926147880297958 +128 0 3 3 0 36 34 36 1.77777777777778 -1.38777878078145e-17 -0.0555555555555556 -1.38777878078145e-17 0.927485951077396 +128 0 3 3 0 36 35 36 1.77777777777778 -1.38777878078145e-17 -0.0277777777777778 -1.38777878078145e-17 0.928209975180567 +128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 3 0 36 37 36 1.77777777777778 -1.38777878078145e-17 0.0277777777777777 -1.38777878078145e-17 0.928209975180567 +128 0 3 3 0 36 38 36 1.77777777777778 -1.38777878078145e-17 0.0555555555555555 -1.38777878078145e-17 0.927485951077396 +128 0 3 3 0 36 39 36 1.77777777777778 -1.38777878078145e-17 0.0833333333333333 -1.38777878078145e-17 0.926147880297958 +128 0 3 3 0 36 40 36 1.77777777777778 -1.38777878078145e-17 0.111111111111111 -1.38777878078145e-17 0.924033489738888 +128 0 3 3 0 36 41 36 1.77777777777778 -1.38777878078145e-17 0.138888888888889 -1.38777878078145e-17 0.920818233193455 +128 0 3 3 0 36 42 36 1.77777777777778 -1.38777878078145e-17 0.166666666666667 -1.38777878078145e-17 0.916919384356027 +128 0 3 3 0 36 43 36 1.77777777777778 -1.38777878078145e-17 0.194444444444444 -1.38777878078145e-17 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc new file mode 100644 index 000000000..343b8054b --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi.z.asc @@ -0,0 +1,632 @@ +# WAVETOY::phi z (phi) +# +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 0 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018 +64 0 0 0 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182 +64 0 0 0 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861 +64 0 0 0 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952 +64 0 0 0 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 0 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 1 0 40 40 0 0.888888888888889 0.111111111111111 0.111111111111111 -1 0.873700996777018 +64 0 0 1 0 40 40 8 0.888888888888889 0.111111111111111 0.111111111111111 -0.777777777777778 0.807676282684182 +64 0 0 1 0 40 40 16 0.888888888888889 0.111111111111111 0.111111111111111 -0.555555555555556 0.756699260944861 +64 0 0 1 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952 +64 0 0 1 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295 +64 0 0 1 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 1 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 2 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952 +64 0 0 2 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295 +64 0 0 2 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 2 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952 +64 0 0 2 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861 +64 0 0 2 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182 +64 0 0 2 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018 + +# iteration 64 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 0 3 0 40 40 24 0.888888888888889 0.111111111111111 0.111111111111111 -0.333333333333333 0.730294733882952 +64 0 0 3 0 40 40 32 0.888888888888889 0.111111111111111 0.111111111111111 -0.111111111111111 0.725539249473295 +64 0 0 3 0 40 40 40 0.888888888888889 0.111111111111111 0.111111111111111 0.111111111111111 0.725539249473295 +64 0 0 3 0 40 40 48 0.888888888888889 0.111111111111111 0.111111111111111 0.333333333333333 0.730294733882952 +64 0 0 3 0 40 40 56 0.888888888888889 0.111111111111111 0.111111111111111 0.555555555555556 0.756699260944861 +64 0 0 3 0 40 40 64 0.888888888888889 0.111111111111111 0.111111111111111 0.777777777777778 0.807676282684182 +64 0 0 3 0 40 40 72 0.888888888888889 0.111111111111111 0.111111111111111 1 0.873700996777018 + + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 0 0 36 36 8 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938 +64 0 1 0 0 36 36 12 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562 +64 0 1 0 0 36 36 16 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156 +64 0 1 0 0 36 36 20 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638 +64 0 1 0 0 36 36 24 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 1 0 0 36 36 28 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 1 0 0 36 36 32 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 1 0 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 0 0 36 36 40 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 1 0 0 36 36 44 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 1 0 36 36 8 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.808379332677938 +64 0 1 1 0 36 36 12 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.779665123251562 +64 0 1 1 0 36 36 16 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.756097245006156 +64 0 1 1 0 36 36 20 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.739694852518638 +64 0 1 1 0 36 36 24 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 1 1 0 36 36 28 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 1 1 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 1 1 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.723733474251298 +64 0 1 1 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 1 1 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 2 0 36 36 32 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 1 2 0 36 36 36 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 2 0 36 36 40 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 1 2 0 36 36 44 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 1 2 0 36 36 48 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 1 2 0 36 36 52 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638 +64 0 1 2 0 36 36 56 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155 +64 0 1 2 0 36 36 60 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561 +64 0 1 2 0 36 36 64 0.888888888888889 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938 + +# iteration 64 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 1 3 0 36 36 32 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 1 3 0 36 36 36 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.723733474251298 +64 0 1 3 0 36 36 40 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 1 3 0 36 36 44 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 1 3 0 36 36 48 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 1 3 0 36 36 52 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.739694852518638 +64 0 1 3 0 36 36 56 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.756097245006155 +64 0 1 3 0 36 36 60 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.779665123251561 +64 0 1 3 0 36 36 64 0.888888888888889 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.808379332677938 + + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 0 0 36 36 22 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746 +64 0 2 0 0 36 36 24 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 2 0 0 36 36 26 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392 +64 0 2 0 0 36 36 28 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 2 0 0 36 36 30 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 2 0 0 36 36 32 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 2 0 0 36 36 34 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.72395273727097 +64 0 2 0 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 0 0 36 36 38 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097 +64 0 2 0 0 36 36 40 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 1 0 36 36 22 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.733688776948746 +64 0 2 1 0 36 36 24 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.729218296316213 +64 0 2 1 0 36 36 26 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.726552055334392 +64 0 2 1 0 36 36 28 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.725100663327574 +64 0 2 1 0 36 36 30 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 2 1 0 36 36 32 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 2 1 0 36 36 34 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.72395273727097 +64 0 2 1 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.723733474251298 +64 0 2 1 0 36 36 38 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097 +64 0 2 1 0 36 36 40 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 2 0 36 36 34 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 2 2 0 36 36 36 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 2 0 36 36 38 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 2 2 0 36 36 40 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 2 2 0 36 36 42 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 2 2 0 36 36 44 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 2 2 0 36 36 46 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391 +64 0 2 2 0 36 36 48 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 2 2 0 36 36 50 0.888888888888889 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745 + +# iteration 64 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 2 3 0 36 36 34 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 2 3 0 36 36 36 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.723733474251298 +64 0 2 3 0 36 36 38 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 2 3 0 36 36 40 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 2 3 0 36 36 42 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 2 3 0 36 36 44 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.725100663327574 +64 0 2 3 0 36 36 46 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.726552055334391 +64 0 2 3 0 36 36 48 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.729218296316213 +64 0 2 3 0 36 36 50 0.888888888888889 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.733688776948745 + + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 0 0 36 36 29 0.888888888888889 0 -5.55111512312578e-17 -0.194444444444445 0.724720854915558 +64 0 3 0 0 36 36 30 0.888888888888889 0 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 3 0 0 36 36 31 0.888888888888889 0 -5.55111512312578e-17 -0.138888888888889 0.724409709543024 +64 0 3 0 0 36 36 32 0.888888888888889 0 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 3 0 0 36 36 33 0.888888888888889 0 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958 +64 0 3 0 0 36 36 34 0.888888888888889 0 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 3 0 0 36 36 35 0.888888888888889 0 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017 +64 0 3 0 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 0 0 36 36 37 0.888888888888889 0 -5.55111512312578e-17 0.0277777777777778 0.723805016719017 +64 0 3 0 0 36 36 38 0.888888888888889 0 -5.55111512312578e-17 0.0555555555555556 0.72395273727097 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 1 0 36 36 29 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.724720854915558 +64 0 3 1 0 36 36 30 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.724502518106703 +64 0 3 1 0 36 36 31 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.724409709543024 +64 0 3 1 0 36 36 32 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.724342898925177 +64 0 3 1 0 36 36 33 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.724151545837958 +64 0 3 1 0 36 36 34 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.72395273727097 +64 0 3 1 0 36 36 35 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017 +64 0 3 1 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0 0.723733474251298 +64 0 3 1 0 36 36 37 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.723805016719017 +64 0 3 1 0 36 36 38 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.72395273727097 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 2 0 36 36 35 0.888888888888889 0 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017 +64 0 3 2 0 36 36 36 0.888888888888889 0 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 2 0 36 36 37 0.888888888888889 0 -5.55111512312578e-17 0.0277777777777778 0.723805016719017 +64 0 3 2 0 36 36 38 0.888888888888889 0 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 3 2 0 36 36 39 0.888888888888889 0 -5.55111512312578e-17 0.0833333333333333 0.724151545837958 +64 0 3 2 0 36 36 40 0.888888888888889 0 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 3 2 0 36 36 41 0.888888888888889 0 -5.55111512312578e-17 0.138888888888889 0.724409709543024 +64 0 3 2 0 36 36 42 0.888888888888889 0 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 3 2 0 36 36 43 0.888888888888889 0 -5.55111512312578e-17 0.194444444444444 0.724720854915557 + +# iteration 64 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +64 0 3 3 0 36 36 35 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.723805016719017 +64 0 3 3 0 36 36 36 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.723733474251298 +64 0 3 3 0 36 36 37 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.723805016719017 +64 0 3 3 0 36 36 38 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.72395273727097 +64 0 3 3 0 36 36 39 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.724151545837958 +64 0 3 3 0 36 36 40 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.724342898925177 +64 0 3 3 0 36 36 41 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.724409709543024 +64 0 3 3 0 36 36 42 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.724502518106703 +64 0 3 3 0 36 36 43 0.888888888888889 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.724720854915557 + + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 0 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996 +96 0 0 0 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601 +96 0 0 0 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599 +96 0 0 0 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667 +96 0 0 0 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 0 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 1 0 40 40 0 1.33333333333333 0.111111111111111 0.111111111111111 -1 0.877480603359996 +96 0 0 1 0 40 40 8 1.33333333333333 0.111111111111111 0.111111111111111 -0.777777777777778 0.798008089475601 +96 0 0 1 0 40 40 16 1.33333333333333 0.111111111111111 0.111111111111111 -0.555555555555556 0.735090597558599 +96 0 0 1 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667 +96 0 0 1 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694 +96 0 0 1 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 1 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 2 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667 +96 0 0 2 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694 +96 0 0 2 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 2 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667 +96 0 0 2 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599 +96 0 0 2 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601 +96 0 0 2 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996 + +# iteration 96 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 0 3 0 40 40 24 1.33333333333333 0.111111111111111 0.111111111111111 -0.333333333333333 0.677899959110667 +96 0 0 3 0 40 40 32 1.33333333333333 0.111111111111111 0.111111111111111 -0.111111111111111 0.632828813666694 +96 0 0 3 0 40 40 40 1.33333333333333 0.111111111111111 0.111111111111111 0.111111111111111 0.632828813666694 +96 0 0 3 0 40 40 48 1.33333333333333 0.111111111111111 0.111111111111111 0.333333333333333 0.677899959110667 +96 0 0 3 0 40 40 56 1.33333333333333 0.111111111111111 0.111111111111111 0.555555555555556 0.735090597558599 +96 0 0 3 0 40 40 64 1.33333333333333 0.111111111111111 0.111111111111111 0.777777777777778 0.798008089475601 +96 0 0 3 0 40 40 72 1.33333333333333 0.111111111111111 0.111111111111111 1 0.877480603359996 + + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 0 0 36 36 8 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057 +96 0 1 0 0 36 36 12 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151 +96 0 1 0 0 36 36 16 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657 +96 0 1 0 0 36 36 20 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196 +96 0 1 0 0 36 36 24 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 1 0 0 36 36 28 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 1 0 0 36 36 32 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 1 0 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 0 0 36 36 40 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 1 0 0 36 36 44 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 1 0 36 36 8 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.796688784792057 +96 0 1 1 0 36 36 12 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.76190136189151 +96 0 1 1 0 36 36 16 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.729928937348657 +96 0 1 1 0 36 36 20 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.698215010923196 +96 0 1 1 0 36 36 24 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 1 1 0 36 36 28 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 1 1 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 1 1 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.61547287921812 +96 0 1 1 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 1 1 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 2 0 36 36 32 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 1 2 0 36 36 36 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 2 0 36 36 40 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 1 2 0 36 36 44 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 1 2 0 36 36 48 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 1 2 0 36 36 52 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196 +96 0 1 2 0 36 36 56 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657 +96 0 1 2 0 36 36 60 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151 +96 0 1 2 0 36 36 64 1.33333333333333 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057 + +# iteration 96 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 1 3 0 36 36 32 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 1 3 0 36 36 36 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.61547287921812 +96 0 1 3 0 36 36 40 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 1 3 0 36 36 44 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 1 3 0 36 36 48 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 1 3 0 36 36 52 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.698215010923196 +96 0 1 3 0 36 36 56 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.729928937348657 +96 0 1 3 0 36 36 60 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.76190136189151 +96 0 1 3 0 36 36 64 1.33333333333333 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.796688784792057 + + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 0 0 36 36 22 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139 +96 0 2 0 0 36 36 24 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 2 0 0 36 36 26 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422 +96 0 2 0 0 36 36 28 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 2 0 0 36 36 30 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 2 0 0 36 36 32 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 2 0 0 36 36 34 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.616824486578861 +96 0 2 0 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 0 0 36 36 38 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861 +96 0 2 0 0 36 36 40 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 1 0 36 36 22 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.683302448238139 +96 0 2 1 0 36 36 24 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.668908746807157 +96 0 2 1 0 36 36 26 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.654541556639422 +96 0 2 1 0 36 36 28 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.641345710414296 +96 0 2 1 0 36 36 30 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 2 1 0 36 36 32 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 2 1 0 36 36 34 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.616824486578861 +96 0 2 1 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.61547287921812 +96 0 2 1 0 36 36 38 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861 +96 0 2 1 0 36 36 40 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 2 0 36 36 34 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 2 2 0 36 36 36 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 2 0 36 36 38 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 2 2 0 36 36 40 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 2 2 0 36 36 42 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 2 2 0 36 36 44 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 2 2 0 36 36 46 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422 +96 0 2 2 0 36 36 48 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 2 2 0 36 36 50 1.33333333333333 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139 + +# iteration 96 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 2 3 0 36 36 34 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 2 3 0 36 36 36 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.61547287921812 +96 0 2 3 0 36 36 38 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 2 3 0 36 36 40 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 2 3 0 36 36 42 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 2 3 0 36 36 44 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.641345710414297 +96 0 2 3 0 36 36 46 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.654541556639422 +96 0 2 3 0 36 36 48 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.668908746807157 +96 0 2 3 0 36 36 50 1.33333333333333 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.683302448238139 + + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 0 0 36 36 29 1.33333333333333 0 -5.55111512312578e-17 -0.194444444444445 0.63539979750899 +96 0 3 0 0 36 36 30 1.33333333333333 0 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 3 0 0 36 36 31 1.33333333333333 0 -5.55111512312578e-17 -0.138888888888889 0.625297419028293 +96 0 3 0 0 36 36 32 1.33333333333333 0 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 3 0 0 36 36 33 1.33333333333333 0 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111 +96 0 3 0 0 36 36 34 1.33333333333333 0 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 3 0 0 36 36 35 1.33333333333333 0 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678 +96 0 3 0 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 0 0 36 36 37 1.33333333333333 0 -5.55111512312578e-17 0.0277777777777778 0.615777600484678 +96 0 3 0 0 36 36 38 1.33333333333333 0 -5.55111512312578e-17 0.0555555555555556 0.616824486578861 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 1 0 36 36 29 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.63539979750899 +96 0 3 1 0 36 36 30 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.630026346765969 +96 0 3 1 0 36 36 31 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.625297419028293 +96 0 3 1 0 36 36 32 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.621410197839124 +96 0 3 1 0 36 36 33 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.618663308361111 +96 0 3 1 0 36 36 34 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.616824486578861 +96 0 3 1 0 36 36 35 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678 +96 0 3 1 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0 0.61547287921812 +96 0 3 1 0 36 36 37 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.615777600484678 +96 0 3 1 0 36 36 38 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.616824486578861 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 2 0 36 36 35 1.33333333333333 0 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678 +96 0 3 2 0 36 36 36 1.33333333333333 0 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 2 0 36 36 37 1.33333333333333 0 -5.55111512312578e-17 0.0277777777777778 0.615777600484678 +96 0 3 2 0 36 36 38 1.33333333333333 0 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 3 2 0 36 36 39 1.33333333333333 0 -5.55111512312578e-17 0.0833333333333333 0.618663308361111 +96 0 3 2 0 36 36 40 1.33333333333333 0 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 3 2 0 36 36 41 1.33333333333333 0 -5.55111512312578e-17 0.138888888888889 0.625297419028293 +96 0 3 2 0 36 36 42 1.33333333333333 0 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 3 2 0 36 36 43 1.33333333333333 0 -5.55111512312578e-17 0.194444444444444 0.63539979750899 + +# iteration 96 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +96 0 3 3 0 36 36 35 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.615777600484678 +96 0 3 3 0 36 36 36 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.61547287921812 +96 0 3 3 0 36 36 37 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.615777600484678 +96 0 3 3 0 36 36 38 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.616824486578861 +96 0 3 3 0 36 36 39 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.618663308361111 +96 0 3 3 0 36 36 40 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.621410197839124 +96 0 3 3 0 36 36 41 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.625297419028293 +96 0 3 3 0 36 36 42 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.63002634676597 +96 0 3 3 0 36 36 43 1.33333333333333 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.63539979750899 + + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 0 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018 +128 0 0 0 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308 +128 0 0 0 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887 +128 0 0 0 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519 +128 0 0 0 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 0 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 1 0 40 40 0 1.77777777777778 0.111111111111111 0.111111111111111 -1 0.873700996777018 +128 0 0 1 0 40 40 8 1.77777777777778 0.111111111111111 0.111111111111111 -0.777777777777778 0.859471717622308 +128 0 0 1 0 40 40 16 1.77777777777778 0.111111111111111 0.111111111111111 -0.555555555555556 0.863004424640887 +128 0 0 1 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519 +128 0 0 1 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738 +128 0 0 1 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 1 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 2 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519 +128 0 0 2 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738 +128 0 0 2 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 2 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519 +128 0 0 2 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887 +128 0 0 2 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308 +128 0 0 2 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018 + +# iteration 128 +# refinement level 0 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 0 3 0 40 40 24 1.77777777777778 0.111111111111111 0.111111111111111 -0.333333333333333 0.883486952153519 +128 0 0 3 0 40 40 32 1.77777777777778 0.111111111111111 0.111111111111111 -0.111111111111111 0.915799135771738 +128 0 0 3 0 40 40 40 1.77777777777778 0.111111111111111 0.111111111111111 0.111111111111111 0.915799135771738 +128 0 0 3 0 40 40 48 1.77777777777778 0.111111111111111 0.111111111111111 0.333333333333333 0.883486952153519 +128 0 0 3 0 40 40 56 1.77777777777778 0.111111111111111 0.111111111111111 0.555555555555556 0.863004424640887 +128 0 0 3 0 40 40 64 1.77777777777778 0.111111111111111 0.111111111111111 0.777777777777778 0.859471717622308 +128 0 0 3 0 40 40 72 1.77777777777778 0.111111111111111 0.111111111111111 1 0.873700996777018 + + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 0 0 36 36 8 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007 +128 0 1 0 0 36 36 12 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905 +128 0 1 0 0 36 36 16 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718 +128 0 1 0 0 36 36 20 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071 +128 0 1 0 0 36 36 24 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 1 0 0 36 36 28 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 1 0 0 36 36 32 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 1 0 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 0 0 36 36 40 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 1 0 0 36 36 44 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 1 0 36 36 8 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.777777777777778 0.862653663591007 +128 0 1 1 0 36 36 12 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.666666666666667 0.862560028606905 +128 0 1 1 0 36 36 16 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.555555555555556 0.866965759785718 +128 0 1 1 0 36 36 20 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.444444444444444 0.876167092595071 +128 0 1 1 0 36 36 24 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 1 1 0 36 36 28 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 1 1 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 1 1 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -9.86623976961809e-17 0.928389498223199 +128 0 1 1 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 1 1 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 2 0 36 36 32 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 1 2 0 36 36 36 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 2 0 36 36 40 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 1 2 0 36 36 44 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 1 2 0 36 36 48 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 1 2 0 36 36 52 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071 +128 0 1 2 0 36 36 56 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718 +128 0 1 2 0 36 36 60 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905 +128 0 1 2 0 36 36 64 1.77777777777778 -9.86623976961809e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007 + +# iteration 128 +# refinement level 1 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 1 3 0 36 36 32 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 1 3 0 36 36 36 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 -5.55111512312578e-17 0.928389498223199 +128 0 1 3 0 36 36 40 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 1 3 0 36 36 44 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 1 3 0 36 36 48 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 1 3 0 36 36 52 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.444444444444444 0.876167092595071 +128 0 1 3 0 36 36 56 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.555555555555555 0.866965759785718 +128 0 1 3 0 36 36 60 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.666666666666667 0.862560028606905 +128 0 1 3 0 36 36 64 1.77777777777778 -5.55111512312578e-17 -5.55111512312578e-17 0.777777777777778 0.862653663591007 + + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 0 0 36 36 22 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246 +128 0 2 0 0 36 36 24 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 2 0 0 36 36 26 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228 +128 0 2 0 0 36 36 28 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 2 0 0 36 36 30 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 2 0 0 36 36 32 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 2 0 0 36 36 34 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555555 0.927485951077396 +128 0 2 0 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 0 0 36 36 38 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396 +128 0 2 0 0 36 36 40 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 1 0 36 36 22 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.388888888888889 0.882075542854246 +128 0 2 1 0 36 36 24 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.333333333333333 0.889185421864397 +128 0 2 1 0 36 36 26 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.277777777777778 0.898403242286228 +128 0 2 1 0 36 36 28 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.222222222222222 0.90799818468156 +128 0 2 1 0 36 36 30 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 2 1 0 36 36 32 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 2 1 0 36 36 34 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555555 0.927485951077396 +128 0 2 1 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 2.46655994240452e-17 0.928389498223199 +128 0 2 1 0 36 36 38 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396 +128 0 2 1 0 36 36 40 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 2 0 36 36 34 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 2 2 0 36 36 36 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 2 0 36 36 38 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 2 2 0 36 36 40 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 2 2 0 36 36 42 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 2 2 0 36 36 44 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 2 2 0 36 36 46 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228 +128 0 2 2 0 36 36 48 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 2 2 0 36 36 50 1.77777777777778 2.46655994240452e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246 + +# iteration 128 +# refinement level 2 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 2 3 0 36 36 34 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 2 3 0 36 36 36 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 -2.77555756156289e-17 0.928389498223199 +128 0 2 3 0 36 36 38 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 2 3 0 36 36 40 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 2 3 0 36 36 42 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 2 3 0 36 36 44 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.222222222222222 0.90799818468156 +128 0 2 3 0 36 36 46 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.277777777777778 0.898403242286228 +128 0 2 3 0 36 36 48 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.333333333333333 0.889185421864397 +128 0 2 3 0 36 36 50 1.77777777777778 -2.77555756156289e-17 -5.55111512312578e-17 0.388888888888889 0.882075542854246 + + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 0 0 36 36 29 1.77777777777778 0 -5.55111512312578e-17 -0.194444444444445 0.912613836832073 +128 0 3 0 0 36 36 30 1.77777777777778 0 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 3 0 0 36 36 31 1.77777777777778 0 -5.55111512312578e-17 -0.138888888888889 0.920818233193455 +128 0 3 0 0 36 36 32 1.77777777777778 0 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 3 0 0 36 36 33 1.77777777777778 0 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958 +128 0 3 0 0 36 36 34 1.77777777777778 0 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 3 0 0 36 36 35 1.77777777777778 0 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567 +128 0 3 0 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 0 0 36 36 37 1.77777777777778 0 -5.55111512312578e-17 0.0277777777777778 0.928209975180567 +128 0 3 0 0 36 36 38 1.77777777777778 0 -5.55111512312578e-17 0.0555555555555556 0.927485951077396 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 1 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 1 0 36 36 29 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.194444444444445 0.912613836832073 +128 0 3 1 0 36 36 30 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.166666666666667 0.916919384356027 +128 0 3 1 0 36 36 31 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.138888888888889 0.920818233193455 +128 0 3 1 0 36 36 32 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.111111111111111 0.924033489738888 +128 0 3 1 0 36 36 33 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0833333333333334 0.926147880297958 +128 0 3 1 0 36 36 34 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0555555555555556 0.927485951077396 +128 0 3 1 0 36 36 35 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567 +128 0 3 1 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0 0.928389498223199 +128 0 3 1 0 36 36 37 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.928209975180567 +128 0 3 1 0 36 36 38 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555556 0.927485951077396 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 2 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 2 0 36 36 35 1.77777777777778 0 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567 +128 0 3 2 0 36 36 36 1.77777777777778 0 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 2 0 36 36 37 1.77777777777778 0 -5.55111512312578e-17 0.0277777777777778 0.928209975180567 +128 0 3 2 0 36 36 38 1.77777777777778 0 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 3 2 0 36 36 39 1.77777777777778 0 -5.55111512312578e-17 0.0833333333333333 0.926147880297958 +128 0 3 2 0 36 36 40 1.77777777777778 0 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 3 2 0 36 36 41 1.77777777777778 0 -5.55111512312578e-17 0.138888888888889 0.920818233193455 +128 0 3 2 0 36 36 42 1.77777777777778 0 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 3 2 0 36 36 43 1.77777777777778 0 -5.55111512312578e-17 0.194444444444444 0.912613836832073 + +# iteration 128 +# refinement level 3 multigrid level 0 map 0 component 3 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +128 0 3 3 0 36 36 35 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -0.0277777777777778 0.928209975180567 +128 0 3 3 0 36 36 36 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 -1.38777878078145e-17 0.928389498223199 +128 0 3 3 0 36 36 37 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0277777777777778 0.928209975180567 +128 0 3 3 0 36 36 38 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0555555555555555 0.927485951077396 +128 0 3 3 0 36 36 39 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.0833333333333333 0.926147880297958 +128 0 3 3 0 36 36 40 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.111111111111111 0.924033489738888 +128 0 3 3 0 36 36 41 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.138888888888889 0.920818233193455 +128 0 3 3 0 36 36 42 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.166666666666667 0.916919384356027 +128 0 3 3 0 36 36 43 1.77777777777778 -1.38777878078145e-17 -5.55111512312578e-17 0.194444444444444 0.912613836832073 + + diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg new file mode 100644 index 000000000..e25d17d43 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_maximum.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.8737009967770 +1.3333333333333 0.8774806033600 +1.7777777777778 0.9157991357717 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg new file mode 100644 index 000000000..973172b6d --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_minimum.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.6796516032334 +1.3333333333333 0.6328288136667 +1.7777777777778 0.6796516032334 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg new file mode 100644 index 000000000..6e8792bca --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm1.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.7927895664365 +1.3333333333333 0.7914772512610 +1.7777777777778 0.8208628581415 diff --git a/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg new file mode 100644 index 000000000..124c22eda --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/CarpetWaveToyRecover_test_4proc/phi_norm2.xg @@ -0,0 +1,4 @@ +"phi v time +0.8888888888889 0.7937177688028 +1.3333333333333 0.7927587735574 +1.7777777777778 0.8218200985038 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data.par b/Carpet/CarpetIOHDF5/test/input_initial_data.par new file mode 100644 index 000000000..a16e312c6 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data.par @@ -0,0 +1,57 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/test/input_initial_data.par,v 1.3 2004/08/19 11:47:31 tradke Exp $ + +# deactivate the IDScalarWaveMoL thorn +# initial data is read from files using the filereader +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5" +#ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL IDScalarWaveMoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5" + + +Cactus::cctk_itlast = 128 + +Driver::global_nx = 24 +Driver::global_ny = 5 +Driver::global_nz = 5 +Driver::ghost_size = 2 + +Carpet::max_refinement_levels = 3 +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 +Carpet::init_each_timelevel = "yes" + +CarpetRegrid::refinement_levels = 1 +CarpetRegrid::refined_regions = "manual-gridpoint-list" +CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]" +CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" + +NaNChecker::check_every = 16 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = "terminate" + +Grid::domain = full +Grid::type = byrange +Grid::xmin = -0.1 +Grid::ymin = -0.15 +Grid::zmin = -0.15 +Grid::xmax = +1.05 +Grid::ymax = +0.15 +Grid::zmax = +0.15 + +Periodic::periodic = "yes" + +Time::dtfac = 0.25 + +MoL::ODE_Method = "ICN" + +IO::out_dir = $parfilename +IO::out_fileinfo = "none" +IO::parfile_write = "no" +IO::out_every = 1 +IO::out_yline_x = 0.5 +IO::out_zline_x = 0.5 + +IOBasic::outInfo_vars = "WaveToyMoL::scalarevolve" +IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve" + +# filereader input files and directory +IO::filereader_ID_files = "psi phi" +IO::recover_dir = "../../../arrangements/Carpet/CarpetIOHDF5/test/input_initial_data" diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5 b/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5 Binary files differnew file mode 100644 index 000000000..86ad6542c --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi.h5 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg new file mode 100644 index 000000000..78ce3fbaa --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_maximum.xg @@ -0,0 +1,34 @@ +"phi v time +0.0000000000000 1.0000000000000 +0.0125000000000 0.9986404587860 +0.0250000000000 0.9945673789444 +0.0375000000000 1.0119432126264 +0.0500000000000 1.0268055861612 +0.0625000000000 1.0388778598256 +0.0750000000000 1.0481272355649 +0.0875000000000 1.0716903046796 +0.1000000000000 1.0982829974947 +0.1125000000000 1.1218913478250 +0.1250000000000 1.1424512117393 +0.1375000000000 1.1599067288796 +0.1500000000000 1.1900017850006 +0.1625000000000 1.2219191687257 +0.1750000000000 1.2505162515579 +0.1875000000000 1.2757153346263 +0.2000000000000 1.2974479523686 +0.2125000000000 1.3156550585508 +0.2250000000000 1.3380762519805 +0.2375000000000 1.3673894350252 +0.2500000000000 1.3929870450400 +0.2625000000000 1.4147995341575 +0.2750000000000 1.4327676397030 +0.2875000000000 1.4468425452064 +0.3000000000000 1.4569860130280 +0.3125000000000 1.4631704882406 +0.3250000000000 1.4713646259286 +0.3375000000000 1.4861345916159 +0.3500000000000 1.4968663526009 +0.3625000000000 1.5035307556225 +0.3750000000000 1.5061096994421 +0.3875000000000 1.5045961840087 +0.4000000000000 1.4989943294590 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg new file mode 100644 index 000000000..d62cc5b13 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_minimum.xg @@ -0,0 +1,34 @@ +"phi v time +0.0000000000000 -1.0000000000000 +0.0125000000000 -0.9986404587860 +0.0250000000000 -0.9945673789444 +0.0375000000000 -1.0119432126264 +0.0500000000000 -1.0268055861612 +0.0625000000000 -1.0388778598256 +0.0750000000000 -1.0481272355649 +0.0875000000000 -1.0716903046796 +0.1000000000000 -1.0982829974947 +0.1125000000000 -1.1218913478250 +0.1250000000000 -1.1424512117393 +0.1375000000000 -1.1599067288796 +0.1500000000000 -1.1900017850006 +0.1625000000000 -1.2219191687257 +0.1750000000000 -1.2505162515579 +0.1875000000000 -1.2757153346263 +0.2000000000000 -1.2974479523686 +0.2125000000000 -1.3156550585508 +0.2250000000000 -1.3380762519805 +0.2375000000000 -1.3673894350252 +0.2500000000000 -1.3929870450400 +0.2625000000000 -1.4147995341575 +0.2750000000000 -1.4327676397030 +0.2875000000000 -1.4468425452064 +0.3000000000000 -1.4569860130280 +0.3125000000000 -1.4631704882406 +0.3250000000000 -1.4713646259286 +0.3375000000000 -1.4861345916159 +0.3500000000000 -1.4968663526009 +0.3625000000000 -1.5035307556225 +0.3750000000000 -1.5061096994421 +0.3875000000000 -1.5045961840087 +0.4000000000000 -1.4989943294590 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg new file mode 100644 index 000000000..c3618d28a --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm1.xg @@ -0,0 +1,34 @@ +"phi v time +0.0000000000000 0.6807763773465 +0.0125000000000 0.6883135845966 +0.0250000000000 0.6939804679330 +0.0375000000000 0.6977616325549 +0.0500000000000 0.6996468076312 +0.0625000000000 0.7113978965384 +0.0750000000000 0.7221770888255 +0.0875000000000 0.7309939361006 +0.1000000000000 0.7378244845393 +0.1125000000000 0.7471033499543 +0.1250000000000 0.7616523319997 +0.1375000000000 0.7741316985445 +0.1500000000000 0.7845075440356 +0.1625000000000 0.7927516787444 +0.1750000000000 0.7988417053545 +0.1875000000000 0.8110731791327 +0.2000000000000 0.8232064841264 +0.2125000000000 0.8331029209643 +0.2250000000000 0.8407356028304 +0.2375000000000 0.8460837941132 +0.2500000000000 0.8491329667380 +0.2625000000000 0.8498748396317 +0.2750000000000 0.8565790617590 +0.2875000000000 0.8664821742987 +0.3000000000000 0.8740308325676 +0.3125000000000 0.8792045294337 +0.3250000000000 0.8819892111320 +0.3375000000000 0.8823773154395 +0.3500000000000 0.8803677922124 +0.3625000000000 0.8759661062267 +0.3750000000000 0.8691842223177 +0.3875000000000 0.8713683085882 +0.4000000000000 0.8728859333298 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg new file mode 100644 index 000000000..bd291cc98 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/phi_norm2.xg @@ -0,0 +1,34 @@ +"phi v time +0.0000000000000 0.7489861339271 +0.0125000000000 0.7518419444399 +0.0250000000000 0.7562195954773 +0.0375000000000 0.7620457996251 +0.0500000000000 0.7692251813885 +0.0625000000000 0.7776434804038 +0.0750000000000 0.7871711042100 +0.0875000000000 0.7976667955515 +0.1000000000000 0.8089812100628 +0.1125000000000 0.8209602464387 +0.1250000000000 0.8334480229821 +0.1375000000000 0.8462894436775 +0.1500000000000 0.8593323383447 +0.1625000000000 0.8724291925272 +0.1750000000000 0.8854385033832 +0.1875000000000 0.8982258092504 +0.2000000000000 0.9106644447590 +0.2125000000000 0.9226360724714 +0.2250000000000 0.9340310379450 +0.2375000000000 0.9447485893398 +0.2500000000000 0.9546969963259 +0.2625000000000 0.9637935967973 +0.2750000000000 0.9719647941895 +0.2875000000000 0.9791460232367 +0.3000000000000 0.9852816978433 +0.3125000000000 0.9903251513560 +0.3250000000000 0.9942385768297 +0.3375000000000 0.9969929727762 +0.3500000000000 0.9985680982614 +0.3625000000000 0.9989524399743 +0.3750000000000 0.9981431929225 +0.3875000000000 0.9961462556366 +0.4000000000000 0.9929762400874 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5 b/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5 Binary files differnew file mode 100644 index 000000000..fbb911bff --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi.h5 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg new file mode 100644 index 000000000..27be32935 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_maximum.xg @@ -0,0 +1,34 @@ +"psi v time +0.0000000000000 6.2831853071796 +0.0125000000000 6.2746430577991 +0.0250000000000 6.2490511423835 +0.0375000000000 6.2064791316818 +0.0500000000000 6.1470427352297 +0.0625000000000 6.1059995615621 +0.0750000000000 6.0823508015521 +0.0875000000000 6.0421749067230 +0.1000000000000 5.9855810749628 +0.1125000000000 5.9127231153562 +0.1250000000000 5.8237990301668 +0.1375000000000 5.7190504767363 +0.1500000000000 5.5987621107645 +0.1625000000000 5.4972069587517 +0.1750000000000 5.4231800426911 +0.1875000000000 5.3344172069405 +0.2000000000000 5.2311596682320 +0.2125000000000 5.1136880283712 +0.2250000000000 4.9823215117033 +0.2375000000000 4.8471541168578 +0.2500000000000 4.7760344394342 +0.2625000000000 4.6919372838490 +0.2750000000000 4.5950911858351 +0.2875000000000 4.4857593225805 +0.3000000000000 4.3764423117654 +0.3125000000000 4.3393959614856 +0.3250000000000 4.2905585196070 +0.3375000000000 4.2300627107315 +0.3500000000000 4.1580729377426 +0.3625000000000 4.1642308303415 +0.3750000000000 4.1713735624227 +0.3875000000000 4.1671816776830 +0.4000000000000 4.1516665873958 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg new file mode 100644 index 000000000..fb6cf4909 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_minimum.xg @@ -0,0 +1,34 @@ +"psi v time +0.0000000000000 -6.2831853071796 +0.0125000000000 -6.2746430577991 +0.0250000000000 -6.2490511423835 +0.0375000000000 -6.2064791316818 +0.0500000000000 -6.1470427352296 +0.0625000000000 -6.1059995615621 +0.0750000000000 -6.0823508015522 +0.0875000000000 -6.0421749067230 +0.1000000000000 -5.9855810749628 +0.1125000000000 -5.9127231153562 +0.1250000000000 -5.8237990301668 +0.1375000000000 -5.7190504767363 +0.1500000000000 -5.5987621107645 +0.1625000000000 -5.4972069587517 +0.1750000000000 -5.4231800426911 +0.1875000000000 -5.3344172069405 +0.2000000000000 -5.2311596682320 +0.2125000000000 -5.1136880283712 +0.2250000000000 -4.9823215117033 +0.2375000000000 -4.8471541168578 +0.2500000000000 -4.7760344394342 +0.2625000000000 -4.6919372838490 +0.2750000000000 -4.5950911858351 +0.2875000000000 -4.4857593225805 +0.3000000000000 -4.3764423117654 +0.3125000000000 -4.3393959614856 +0.3250000000000 -4.2905585196070 +0.3375000000000 -4.2300627107315 +0.3500000000000 -4.1580729377426 +0.3625000000000 -4.1642308303415 +0.3750000000000 -4.1713735624227 +0.3875000000000 -4.1671816776830 +0.4000000000000 -4.1516665873958 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg new file mode 100644 index 000000000..8fd7f80b2 --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm1.xg @@ -0,0 +1,34 @@ +"psi v time +0.0000000000000 3.6215553016171 +0.0125000000000 3.6364763601998 +0.0250000000000 3.6415162291713 +0.0375000000000 3.6366612322730 +0.0500000000000 3.6219245799508 +0.0625000000000 3.5973463334095 +0.0750000000000 3.5629932957073 +0.0875000000000 3.5189588301869 +0.1000000000000 3.4653626067366 +0.1125000000000 3.4178909850438 +0.1250000000000 3.4031487535687 +0.1375000000000 3.3791593932900 +0.1500000000000 3.3459881060254 +0.1625000000000 3.3037250429285 +0.1750000000000 3.2524850594811 +0.1875000000000 3.1924074033578 +0.2000000000000 3.1283204712833 +0.2125000000000 3.1162479409102 +0.2250000000000 3.0957078538273 +0.2375000000000 3.0667560379254 +0.2500000000000 3.0294711776388 +0.2625000000000 2.9839546000991 +0.2750000000000 2.9543847137139 +0.2875000000000 2.9417629539386 +0.3000000000000 2.9211477552395 +0.3125000000000 2.8925951487277 +0.3250000000000 2.8561827332153 +0.3375000000000 2.8621799018707 +0.3500000000000 2.8633237516454 +0.3625000000000 2.8566872748419 +0.3750000000000 2.8422885187004 +0.3875000000000 2.8676161308430 +0.4000000000000 2.8922779097055 diff --git a/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg new file mode 100644 index 000000000..f6e6af93d --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/input_initial_data/psi_norm2.xg @@ -0,0 +1,34 @@ +"psi v time +0.0000000000000 4.1631485516862 +0.0125000000000 4.1541748755646 +0.0250000000000 4.1403181106482 +0.0375000000000 4.1216804330909 +0.0500000000000 4.0984006495679 +0.0625000000000 4.0706544048325 +0.0750000000000 4.0386544211818 +0.0875000000000 4.0026507506396 +0.1000000000000 3.9629310129817 +0.1125000000000 3.9198205828109 +0.1250000000000 3.8736826762988 +0.1375000000000 3.8249182725450 +0.1500000000000 3.7739657855260 +0.1625000000000 3.7213003803309 +0.1750000000000 3.6674328023249 +0.1875000000000 3.6129075612872 +0.2000000000000 3.5583002867509 +0.2125000000000 3.5042140494355 +0.2250000000000 3.4512744321941 +0.2375000000000 3.4001231394120 +0.2500000000000 3.3514099647860 +0.2625000000000 3.3057830027058 +0.2750000000000 3.2638770952932 +0.2875000000000 3.2263006583662 +0.3000000000000 3.1936212201833 +0.3125000000000 3.1663502209452 +0.3250000000000 3.1449278306735 +0.3375000000000 3.1297087101756 +0.3500000000000 3.1209497227563 +0.3625000000000 3.1188005684516 +0.3750000000000 3.1232981418444 +0.3875000000000 3.1343651203794 +0.4000000000000 3.1518129128318 diff --git a/Carpet/CarpetIOHDF5/test/output_initial_data.parfile b/Carpet/CarpetIOHDF5/test/output_initial_data.parfile new file mode 100644 index 000000000..2b69c050c --- /dev/null +++ b/Carpet/CarpetIOHDF5/test/output_initial_data.parfile @@ -0,0 +1,57 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOHDF5/test/output_initial_data.parfile,v 1.1 2004/08/23 13:44:41 tradke Exp $ + +ActiveThorns = "Carpet CarpetLib CarpetRegrid CarpetInterp CarpetReduce CarpetSlab Boundary CoordBase SymBase CartGrid3D Periodic LocalInterp NaNChecker Slab Time MoL IDScalarWaveMoL WaveToyMoL IOUtil IOBasic CarpetIOHDF5" + + +Cactus::cctk_itlast = 128 + +Driver::global_nx = 24 +Driver::global_ny = 5 +Driver::global_nz = 5 +Driver::ghost_size = 2 + +Carpet::max_refinement_levels = 3 +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 +Carpet::init_each_timelevel = "yes" + +CarpetRegrid::refinement_levels = 1 +CarpetRegrid::refined_regions = "manual-gridpoint-list" +CarpetRegrid::gridpoints = "[[ ([28,4,4]:[68,12,12]:[2,2,2]) ]]" +CarpetRegrid::outerbounds = "[[ [[0,0],[1,1],[1,1]] ]]" + +NaNChecker::check_every = 16 +NaNChecker::check_vars = "all" +NaNChecker::action_if_found = "terminate" + +Grid::domain = full +Grid::type = byrange +Grid::xmin = -0.1 +Grid::ymin = -0.15 +Grid::zmin = -0.15 +Grid::xmax = +1.05 +Grid::ymax = +0.15 +Grid::zmax = +0.15 + +Periodic::periodic = "yes" + +Time::dtfac = 0.25 + +MoL::ODE_Method = "ICN" + +IDScalarWaveMoL::wave_number[0] = 1.0 + +IO::out_dir = "input_initial_data" +IO::out_fileinfo = "none" +IO::parfile_write = "no" +IO::out_every = 1 +IO::out_yline_x = 0.5 +IO::out_zline_x = 0.5 + +IOBasic::outInfo_vars = "WaveToyMoL::scalarevolve" +IOBasic::outScalar_vars = "WaveToyMoL::scalarevolve" + +# HDF5 output only for initial data +IOHDF5::out3D_every = 513 +IOHDF5::out3D_vars = "WaveToyMoL::scalarevolve" +IOHDF5::out3D_dir = "input_initial_data" diff --git a/Carpet/CarpetIOScalar/COPYING b/Carpet/CarpetIOScalar/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetIOScalar/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetIOScalar/README b/Carpet/CarpetIOScalar/README new file mode 100644 index 000000000..e97f8eba3 --- /dev/null +++ b/Carpet/CarpetIOScalar/README @@ -0,0 +1,10 @@ +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/README,v 1.1 2004/06/11 17:41:51 schnetter Exp $ + +Cactus Code Thorn CarpetIOScalar +Thorn Author(s) : Erik Schnetter <schnetter@aei.mpg.de> +Thorn Maintainer(s) : Erik Schnetter <schnetter@aei.mpg.de> +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides scalar output for Carpet. diff --git a/Carpet/CarpetIOScalar/configuration.ccl b/Carpet/CarpetIOScalar/configuration.ccl new file mode 100644 index 000000000..eb3387475 --- /dev/null +++ b/Carpet/CarpetIOScalar/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetIOASCII +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/configuration.ccl,v 1.1 2004/06/11 17:41:51 schnetter Exp $ + +REQUIRES Carpet CarpetLib IOUtil + +REQUIRES THORNS: Carpet CarpetLib IOUtil diff --git a/Carpet/CarpetIOScalar/doc/documentation.tex b/Carpet/CarpetIOScalar/doc/documentation.tex new file mode 100644 index 000000000..a97b1dd84 --- /dev/null +++ b/Carpet/CarpetIOScalar/doc/documentation.tex @@ -0,0 +1,144 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/doc/documentation.tex,v 1.1 2004/06/11 17:41:51 schnetter Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevant thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date, etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be separated with a \\ or a comma. +% - You can define your own macros, but they must appear after +% the START CACTUS THORNGUIDE line, and must not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphicx package. +% More specifically, with the "\includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us to create a PDF version of the ThornGuide +% via pdflatex. +% - References should be included with the latex "\bibitem" command. +% - Use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - Do not use \appendix, instead include any appendices you need as +% standard sections. +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/doc/documentation.tex,v 1.1 2004/06/11 17:41:51 schnetter Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/latex/cactus} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter \textless schnetter@aei.mpg.de\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{} + +% the date your document was last changed, if your document is in CVS, +% please use: +% \date{$ $Date: 2004/06/11 17:41:51 $ $} +\date{February 10 2004} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +\section{Physical System} + +\section{Numerical Implementation} + +\section{Using This Thorn} + +\subsection{Obtaining This Thorn} + +\subsection{Basic Usage} + +\subsection{Special Behaviour} + +\subsection{Interaction With Other Thorns} + +\subsection{Examples} + +\subsection{Support and Feedback} + +\section{History} + +\subsection{Thorn Source Code} + +\subsection{Thorn Documentation} + +\subsection{Acknowledgements} + + +\begin{thebibliography}{9} + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/CarpetIOScalar/interface.ccl b/Carpet/CarpetIOScalar/interface.ccl new file mode 100644 index 000000000..12d361a7b --- /dev/null +++ b/Carpet/CarpetIOScalar/interface.ccl @@ -0,0 +1,8 @@ +# Interface definition for thorn CarpetIOScalar +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/interface.ccl,v 1.2 2004/06/21 16:07:41 schnetter Exp $ + +IMPLEMENTS: IOScalar + +CCTK_INT last_output_iteration TYPE=scalar +CCTK_REAL last_output_time TYPE=scalar +CCTK_INT this_iteration TYPE=scalar diff --git a/Carpet/CarpetIOScalar/param.ccl b/Carpet/CarpetIOScalar/param.ccl new file mode 100644 index 000000000..ca22695e6 --- /dev/null +++ b/Carpet/CarpetIOScalar/param.ccl @@ -0,0 +1,57 @@ +# Parameter definitions for thorn CarpetIOScalar +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/param.ccl,v 1.3 2004/06/14 10:49:41 tradke Exp $ + + + +shares: IO + +USES STRING out_dir + +USES KEYWORD out_criterion +USES CCTK_INT out_every +USES CCTK_REAL out_dt + +USES BOOLEAN strict_io_parameter_check + + +private: + + + +CCTK_STRING outScalar_dir "Name of scalar output directory, overrides out_dir" STEERABLE = ALWAYS +{ + "^$" :: "Empty: use IO::out_dir" + ".+" :: "Not empty: directory name" +} "" + +CCTK_STRING outScalar_vars "Variables to output in scalar form" STEERABLE = ALWAYS +{ + ".*" :: "A regex which matches everything" +} "" + +CCTK_STRING outScalar_reductions "List of reductions to output in scalar form" STEERABLE = ALWAYS +{ + ".*" :: "A regex which matches everything" +} "count minimum maximum sum average norm1 norm2 norm_inf" + + + +KEYWORD outScalar_criterion "Criterion to select scalar output intervals, overrides out_every" STEERABLE = ALWAYS +{ + "never" :: "Never output" + "iteration" :: "Output every so many iterations" + "time" :: "Output every that much coordinate time" +} "iteration" + +CCTK_INT outScalar_every "How often to do scalar output, overrides out_every" STEERABLE = ALWAYS +{ + -1:* :: "Values <= 0 disable scalar output" +} -1 + +REAL outScalar_dt "How often to do scalar output, overrides out_dt" STEERABLE = ALWAYS +{ + (0:* :: "In intervals of that much coordinate time" + 0 :: "As often as possible" + -1 :: "Disable output" + -2 :: "Default to IO::out_dt" +} -2 diff --git a/Carpet/CarpetIOScalar/schedule.ccl b/Carpet/CarpetIOScalar/schedule.ccl new file mode 100644 index 000000000..8e29bed1d --- /dev/null +++ b/Carpet/CarpetIOScalar/schedule.ccl @@ -0,0 +1,16 @@ +# Schedule definitions for thorn CarpetIOScalar +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/schedule.ccl,v 1.2 2004/06/21 16:07:41 schnetter Exp $ + +storage: last_output_iteration last_output_time this_iteration + +schedule CarpetIOScalarStartup at STARTUP after IOUtil_Startup +{ + LANG: C + OPTIONS: global +} "Startup routine" + +schedule CarpetIOScalarInit at BASEGRID +{ + LANG: C + OPTIONS: global +} "Initialisation routine" diff --git a/Carpet/CarpetIOScalar/src/ioscalar.cc b/Carpet/CarpetIOScalar/src/ioscalar.cc new file mode 100644 index 000000000..83b450bb5 --- /dev/null +++ b/Carpet/CarpetIOScalar/src/ioscalar.cc @@ -0,0 +1,487 @@ +#include <cassert> +#include <cstdlib> +#include <fstream> +#include <iomanip> +#include <list> +#include <sstream> +#include <string> +#include <vector> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "CactusBase/IOUtil/src/ioGH.h" + +#include "carpet.hh" + + + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/src/ioscalar.cc,v 1.6 2004/08/05 10:28:25 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetIOScalar_ioscalar_cc); +} + + + +// That's a hack +namespace Carpet { + void UnsupportedVarType (const int vindex); +} + + + +namespace CarpetIOScalar { + + using namespace std; + using namespace Carpet; + + + + // Definition of local types + struct info { + string reduction; + int handle; + }; + + + + // Registered functions + void* SetupGH (tFleshConfig* fc, int convLevel, cGH* cctkGH); + int OutputGH (const cGH* cctkGH); + int OutputVarAs (const cGH* cctkGH, const char* varname, const char* alias); + int TimeToOutput (const cGH* cctkGH, int vindex); + int TriggerOutput (const cGH* cctkGH, int vindex); + + // Internal functions + void SetFlag (int index, const char* optstring, void* arg); + + + + // Definition of static members + int GHExtension; + int IOMethod; + vector<bool> do_truncate; + vector<int> last_output; + + + + // Special output routines for complex numbers + +#ifdef CCTK_REAL4 + ostream& operator<< (ostream& os, const CCTK_COMPLEX8& val) + { + return os << CCTK_Cmplx8Real(val) << " " << CCTK_Cmplx8Imag(val); + } +#endif + +#ifdef CCTK_REAL8 + ostream& operator<< (ostream& os, const CCTK_COMPLEX16& val) + { + return os << CCTK_Cmplx16Real(val) << " " << CCTK_Cmplx16Imag(val); + } +#endif + +#ifdef CCTK_REAL16 + ostream& operator<< (ostream& os, const CCTK_COMPLEX32& val) + { + return os << CCTK_Cmplx32Real(val) << " " << CCTK_Cmplx32Imag(val); + } +#endif + + + + extern "C" void + CarpetIOScalarStartup () + { + CCTK_RegisterBanner ("AMR scalar I/O provided by CarpetIOScalar"); + + GHExtension = CCTK_RegisterGHExtension("CarpetIOScalar"); + CCTK_RegisterGHExtensionSetupGH (GHExtension, SetupGH); + + IOMethod = CCTK_RegisterIOMethod ("CarpetIOScalar"); + CCTK_RegisterIOMethodOutputGH (IOMethod, OutputGH); + CCTK_RegisterIOMethodOutputVarAs (IOMethod, OutputVarAs); + CCTK_RegisterIOMethodTimeToOutput (IOMethod, TimeToOutput); + CCTK_RegisterIOMethodTriggerOutput (IOMethod, TriggerOutput); + } + + + + extern "C" void + CarpetIOScalarInit (CCTK_ARGUMENTS) + { + DECLARE_CCTK_ARGUMENTS; + + *this_iteration = 0; + *last_output_iteration = 0; + *last_output_time = cctkGH->cctk_time; + } + + + + void* + SetupGH (tFleshConfig* const fc, int const convLevel, cGH* const cctkGH) + { + DECLARE_CCTK_PARAMETERS; + const void *dummy; + + dummy = &fc; + dummy = &convLevel; + dummy = &cctkGH; + dummy = &dummy; + + // Truncate all files if this is not a restart + do_truncate.resize (CCTK_NumVars(), true); + + // No iterations have yet been output + last_output.resize (CCTK_NumVars(), -1); + + // We register only once, ergo we get only one handle. We store + // that statically, so there is no need to pass anything to + // Cactus. + return NULL; + } + + + + int + OutputGH (const cGH * const cctkGH) + { + for (int vindex=0; vindex<CCTK_NumVars(); ++vindex) { + if (TimeToOutput(cctkGH, vindex)) { + TriggerOutput(cctkGH, vindex); + } + } + return 0; + } + + + + int + OutputVarAs (const cGH * const cctkGH, + const char* const varname, const char* const alias) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + assert (is_level_mode()); + + const int n = CCTK_VarIndex(varname); + if (n<0) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Variable \"%s\" does not exist", varname); + return -1; + } + assert (n>=0 && n<CCTK_NumVars()); + const int group = CCTK_GroupIndexFromVarI (n); + assert (group>=0 && group<(int)Carpet::arrdata.size()); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0 && n0<CCTK_NumVars()); + const int var = n - n0; + assert (var>=0 && var<CCTK_NumVarsInGroupI(group)); + const int num_tl = CCTK_NumTimeLevelsFromVarI(n); + assert (num_tl>=1); + + // Check for storage + if (! CCTK_QueryGroupStorageI(cctkGH, group)) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Cannot output variable \"%s\" because it has no storage", + varname); + return 0; + } + + assert (do_global_mode); + + const int vartype = CCTK_VarTypeI(n); + assert (vartype >= 0); + + // Get grid hierarchy extentsion from IOUtil + const ioGH * const iogh = (const ioGH *)CCTK_GHExtension (cctkGH, "IO"); + assert (iogh); + + // Create the output directory + const char* myoutdir = outScalar_dir; + if (CCTK_EQUALS(myoutdir, "")) { + myoutdir = out_dir; + } + if (CCTK_MyProc(cctkGH)==0) { + CCTK_CreateDirectory (0755, myoutdir); + } + + // Find the set of desired reductions + list<info> reductions; + string const redlist (outScalar_reductions); + string::const_iterator p = redlist.begin(); + while (p!=redlist.end()) { + while (p!=redlist.end() && isspace(*p)) ++p; + if (p==redlist.end()) break; + string::const_iterator const start = p; + while (p!=redlist.end() && !isspace(*p)) ++p; + string::const_iterator const end = p; + string const reduction (start, end); + int const handle = CCTK_ReductionHandle (reduction.c_str()); + if (handle < 0) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Reduction operator \"%s\" does not exist (maybe there is no reduction thorn active?)", + reduction.c_str()); + } else { + info i; + i.reduction = reduction; + i.handle = handle; + reductions.push_back (i); + } + } + + // Output in global mode + BEGIN_GLOBAL_MODE(cctkGH) { + + for (list<info>::const_iterator ireduction = reductions.begin(); + ireduction != reductions.end(); + ++ireduction) + { + string const reduction = ireduction->reduction; + + ofstream file; + if (CCTK_MyProc(cctkGH)==0) { + + // Invent a file name + ostringstream filenamebuf; + filenamebuf << myoutdir << "/" << alias << "." << reduction + << ".asc"; + // we need a persistent temporary here + string filenamestr = filenamebuf.str(); + const char* const filename = filenamestr.c_str(); + + // If this is the first time, then write a nice header + if (do_truncate.at(n) && ! iogh->recovered) { + file.open (filename, ios::out | ios::trunc); + file << "# " << varname << " (" << alias << ")" << endl; + file << "# iteration time data" << endl; + } else { + file.open (filename, ios::out | ios::app); + } + if (! file.good()) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Could not open output file \"%s\" for variable \"%s\"", + filename, varname); + } + + assert (file.is_open()); + + file << setprecision(15); + assert (file.good()); + + } // if on the root processor + + int const handle = ireduction->handle; + + union { +#define TYPECASE(N,T) T var_##T; +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE + } result; + + int const ierr + = CCTK_Reduce (cctkGH, 0, handle, 1, vartype, &result, 1, n); + assert (! ierr); + + if (CCTK_MyProc(cctkGH)==0) { + + file << cctk_iteration << " " << cctk_time << " "; + + switch (vartype) { +#define TYPECASE(N,T) \ + case N: \ + file << result.var_##T; \ + break; +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE + default: + UnsupportedVarType (n); + } + + file << endl; + assert (file.good()); + } + + if (CCTK_MyProc(cctkGH)==0) { + file.close(); + assert (file.good()); + } + + assert (! file.is_open()); + + } // for reductions + + } END_GLOBAL_MODE; + + // Don't truncate again + do_truncate.at(n) = false; + + return 0; + } + + + + int + TimeToOutput (const cGH * const cctkGH, int const vindex) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + assert (vindex>=0 && vindex<CCTK_NumVars()); + + + + if (! do_global_mode) return 0; + + + + // check whether to output at this iteration + bool output_this_iteration; + + const char* myoutcriterion = outScalar_criterion; + if (CCTK_EQUALS(myoutcriterion, "default")) { + myoutcriterion = out_criterion; + } + + if (CCTK_EQUALS (myoutcriterion, "never")) { + + // Never output + output_this_iteration = false; + + } else if (CCTK_EQUALS (myoutcriterion, "iteration")) { + + int myoutevery = outScalar_every; + if (myoutevery == -2) { + myoutevery = out_every; + } + if (myoutevery <= 0) { + // output is disabled + output_this_iteration = false; + } else if (cctk_iteration == *this_iteration) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_iteration >= *last_output_iteration + myoutevery) { + // it is time for the next output + output_this_iteration = true; + *last_output_iteration = cctk_iteration; + *this_iteration = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else if (CCTK_EQUALS (myoutcriterion, "time")) { + + CCTK_REAL myoutdt = outScalar_dt; + if (myoutdt == -2) { + myoutdt = out_dt; + } + if (myoutdt < 0) { + // output is disabled + output_this_iteration = false; + } else if (myoutdt == 0) { + // output all iterations + output_this_iteration = true; + } else if (cctk_iteration == *this_iteration) { + // we already decided to output this iteration + output_this_iteration = true; + } else if (cctk_time / cctk_delta_time + >= (*last_output_time + myoutdt) / cctk_delta_time - 1.0e-12) { + // it is time for the next output + output_this_iteration = true; + *last_output_time = cctk_time; + *this_iteration = cctk_iteration; + } else { + // we want no output at this iteration + output_this_iteration = false; + } + + } else { + + assert (0); + + } // select output criterion + + if (! output_this_iteration) return 0; + + + + // check which variables to output + static vector<bool> output_variables; + static int output_variables_iteration = -1; + + if (cctk_iteration > output_variables_iteration) { + output_variables.resize (CCTK_NumVars()); + + const char* const varlist = outScalar_vars; + if (CCTK_TraverseString (varlist, SetFlag, &output_variables, + CCTK_GROUP_OR_VAR) < 0) + { + CCTK_WARN (output_variables_iteration < 0 && strict_io_parameter_check ? + 0 : 1, + "error while parsing parameter 'IOScalar::outScalar_vars'"); + } + + output_variables_iteration = cctk_iteration; + } + + if (! output_variables.at(vindex)) return 0; + + + + if (last_output.at(vindex) == cctk_iteration) { + // Has already been output during this iteration + char* const varname = CCTK_FullName(vindex); + CCTK_VWarn (5, __LINE__, __FILE__, CCTK_THORNSTRING, + "Skipping output for variable \"%s\", because this variable " + "has already been output during the current iteration -- " + "probably via a trigger during the analysis stage", + varname); + free (varname); + return 0; + } + + assert (last_output.at(vindex) < cctk_iteration); + + // Should be output during this iteration + return 1; + } + + + + int + TriggerOutput (const cGH * const cctkGH, int const vindex) + { + DECLARE_CCTK_ARGUMENTS; + + assert (vindex>=0 && vindex<CCTK_NumVars()); + + char* const varname = CCTK_FullName(vindex); + const int retval = OutputVarAs (cctkGH, varname, CCTK_VarName(vindex)); + free (varname); + + last_output.at(vindex) = cctk_iteration; + + return retval; + } + + + + void + SetFlag (int const index, const char * const optstring, void * const arg) + { + const void *dummy; + + dummy = &optstring; + dummy = &dummy; + + vector<bool>& flags = *(vector<bool>*)arg; + flags.at(index) = true; + } + + + +} // namespace CarpetIOScalar diff --git a/Carpet/CarpetIOScalar/src/make.code.defn b/Carpet/CarpetIOScalar/src/make.code.defn new file mode 100644 index 000000000..f8b4594c6 --- /dev/null +++ b/Carpet/CarpetIOScalar/src/make.code.defn @@ -0,0 +1,8 @@ +# Main make.code.defn file for thorn CarpetIOScalar +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetIOScalar/src/make.code.defn,v 1.1 2004/06/11 17:41:51 schnetter Exp $ + +# Source files in this directory +SRCS = ioscalar.cc + +# Subdirectories containing source files +SUBDIRS = diff --git a/Carpet/CarpetInterp/COPYING b/Carpet/CarpetInterp/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetInterp/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetInterp/README b/Carpet/CarpetInterp/README new file mode 100644 index 000000000..845afc516 --- /dev/null +++ b/Carpet/CarpetInterp/README @@ -0,0 +1,10 @@ +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/README,v 1.2 2004/01/25 14:57:29 schnetter Exp $ + +Cactus Code Thorn CarpetInterp +Thorn Author(s) : Erik Schnetter <schnetter@uni-tuebingen.de> +Thorn Maintainer(s) : Erik Schnetter <schnetter@uni-tuebingen.de> +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides a parallel interpolator for Carpet. diff --git a/Carpet/CarpetInterp/configuration.ccl b/Carpet/CarpetInterp/configuration.ccl new file mode 100644 index 000000000..b96f6d5f0 --- /dev/null +++ b/Carpet/CarpetInterp/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetInterp +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/configuration.ccl,v 1.3 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib + +REQUIRES THORNS: Carpet CarpetLib diff --git a/Carpet/CarpetInterp/doc/documentation.tex b/Carpet/CarpetInterp/doc/documentation.tex new file mode 100644 index 000000000..b1a2a477a --- /dev/null +++ b/Carpet/CarpetInterp/doc/documentation.tex @@ -0,0 +1,143 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/doc/documentation.tex,v 1.1 2003/04/29 14:02:25 schnetter Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevent thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be sparated with a \\ or a comma +% - You can define your own macros, but they must appear after +% the START CACTUS THORNGUIDE line, and must not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphix package. +% More specifically, with the "includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us (later) to create a PDF version of the ThornGuide +% via pdflatex. | +% - References should be included with the latex "bibitem" command. +% - Use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - Do not use \appendix, instead include any appendices you need as +% standard sections. +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/doc/documentation.tex,v 1.1 2003/04/29 14:02:25 schnetter Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/ThornGuide/cactus} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter \textless schnetter@uni-tuebingen.de\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{CarpetInterp} + +% the date your document was last changed, if your document is in CVS, +% please use: +\date{$ $Date: 2003/04/29 14:02:25 $ $} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +\section{Physical System} + +\section{Numerical Implementation} + +\section{Using This Thorn} + +\subsection{Obtaining This Thorn} + +\subsection{Basic Usage} + +\subsection{Special Behaviour} + +\subsection{Interaction With Other Thorns} + +\subsection{Examples} + +\subsection{Support and Feedback} + +\section{History} + +\subsection{Thorn Source Code} + +\subsection{Thorn Documentation} + +\subsection{Acknowledgements} + + +\begin{thebibliography}{9} + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/CarpetInterp/interface.ccl b/Carpet/CarpetInterp/interface.ccl new file mode 100644 index 000000000..2141a0e8a --- /dev/null +++ b/Carpet/CarpetInterp/interface.ccl @@ -0,0 +1,52 @@ +# Interface definition for thorn CarpetInterp +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/interface.ccl,v 1.8 2004/06/08 21:09:25 schnetter Exp $ + +IMPLEMENTS: interp + +uses include header: carpet.hh + +uses include header: bbox.hh +uses include header: vect.hh + +uses include header: data.hh + + + +# Interpolation +CCTK_INT FUNCTION \ + SymmetryInterpolate \ + (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN N_dims, \ + CCTK_INT IN local_interp_handle, \ + CCTK_INT IN param_table_handle, \ + CCTK_INT IN coord_system_handle, \ + CCTK_INT IN N_interp_points, \ + CCTK_INT IN interp_coords_type, \ + CCTK_POINTER_TO_CONST ARRAY IN interp_coords, \ + CCTK_INT IN N_input_arrays, \ + CCTK_INT ARRAY IN input_array_indices, \ + CCTK_INT IN N_output_arrays, \ + CCTK_INT ARRAY IN output_array_types, \ + CCTK_POINTER ARRAY IN output_arrays) +USES FUNCTION SymmetryInterpolate + + + +CCTK_INT FUNCTION \ + DriverInterpolate \ + (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN N_dims, \ + CCTK_INT IN local_interp_handle, \ + CCTK_INT IN param_table_handle, \ + CCTK_INT IN coord_system_handle, \ + CCTK_INT IN N_interp_points, \ + CCTK_INT IN interp_coords_type, \ + CCTK_POINTER_TO_CONST ARRAY IN interp_coords, \ + CCTK_INT IN N_input_arrays, \ + CCTK_INT ARRAY IN input_array_indices, \ + CCTK_INT IN N_output_arrays, \ + CCTK_INT ARRAY IN output_array_types, \ + CCTK_POINTER ARRAY IN output_arrays) +PROVIDES FUNCTION DriverInterpolate \ + WITH Carpet_DriverInterpolate \ + LANGUAGE C diff --git a/Carpet/CarpetInterp/param.ccl b/Carpet/CarpetInterp/param.ccl new file mode 100644 index 000000000..7347f7f32 --- /dev/null +++ b/Carpet/CarpetInterp/param.ccl @@ -0,0 +1,3 @@ +# Parameter definitions for thorn CarpetInterp +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/param.ccl,v 1.2 2003/11/05 16:18:38 schnetter Exp $ + diff --git a/Carpet/CarpetInterp/schedule.ccl b/Carpet/CarpetInterp/schedule.ccl new file mode 100644 index 000000000..cf0891e37 --- /dev/null +++ b/Carpet/CarpetInterp/schedule.ccl @@ -0,0 +1,7 @@ +# Schedule definitions for thorn CarpetInterp +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/schedule.ccl,v 1.3 2003/11/05 16:18:38 schnetter Exp $ + +schedule CarpetInterpStartup at STARTUP +{ + LANG: C +} "Startup routine" diff --git a/Carpet/CarpetInterp/src/interp.cc b/Carpet/CarpetInterp/src/interp.cc new file mode 100644 index 000000000..8b48e9c54 --- /dev/null +++ b/Carpet/CarpetInterp/src/interp.cc @@ -0,0 +1,695 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.36 2004/09/13 14:36:13 schnetter Exp $ + +#include <assert.h> +#include <math.h> + +#include <algorithm> +#include <vector> + +#include <mpi.h> + +#include "cctk.h" + +#include "util_ErrorCodes.h" +#include "util_Table.h" + +#include "bbox.hh" +#include "data.hh" +#include "defs.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "interp.hh" + +extern "C" { + static char const * const rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.cc,v 1.36 2004/09/13 14:36:13 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetInterp_interp_cc); +} + + + +namespace CarpetInterp { + + using namespace Carpet; + + + + typedef vect<int,dim> ivect; + typedef vect<CCTK_REAL,dim> rvect; + + typedef bbox<int,dim> ibbox; + + + +#define ind_rc(m,rl,c) ind_rc_(m,rl,minrl,maxrl,c,maxncomps,vhh) + static inline int ind_rc_(int const m, + int const rl, int const minrl, int const maxrl, + int const c, int const maxncomps, + vector<gh<dim> *> const hh) + { + assert (m>=0 && m<maps); + assert (rl>=minrl && rl<maxrl); + assert (minrl>=0 && maxrl<=hh.at(m)->reflevels()); + assert (c>=0 && c<maxncomps); + assert (maxncomps>=0 && maxncomps<=hh.at(m)->components(rl)); + int const ind = (rl-minrl) * maxncomps + c; + assert (ind>=0 && ind < (maxrl-minrl) * maxncomps); + return ind; + } + +#define ind_prc(p,m,rl,c) \ + ind_prc_(p,nprocs,m,rl,minrl,maxrl,c,maxncomps,cgh,vhh) + static inline int ind_prc_(int const p, int const nprocs, + int const m, + int const rl, int const minrl, int const maxrl, + int const c, int const maxncomps, + cGH const * const cgh, + vector<gh<dim> *> const hh) + { + assert (p>=0 && p<nprocs); + assert (nprocs==CCTK_nProcs(cgh)); + assert (m>=0 && m<maps); + assert (rl>=minrl && rl<maxrl); + assert (minrl>=0 && maxrl<=hh.at(m)->reflevels()); + assert (c>=0 && c<maxncomps); + assert (maxncomps>=0 && maxncomps<=hh.at(m)->components(rl)); + int const ind = (p * (maxrl-minrl) + (rl-minrl)) * maxncomps + c; + assert (ind>=0 && ind < nprocs * (maxrl-minrl) * maxncomps); + return ind; + } + + + static int GetInterpNumTimelevels(const cGH * const cgh, + const int group) + { + assert (group>=0 && group<CCTK_NumGroups()); + + int ierr; + + cGroup gp; + ierr = CCTK_GroupData (group, &gp); + assert (!ierr); + + int interp_ntl = -1; + + const int length = Util_TableGetInt + (gp.tagstable, &interp_ntl, "InterpNumTimelevels"); + if (length == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + interp_ntl = -1; + } else if (length >= 0) { + // all is well - just check they're not asking too much + if (interp_ntl > CCTK_ActiveTimeLevelsGI(cgh, group)) { + char * const groupname = CCTK_GroupName (group); + CCTK_VWarn(0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The tags table entry \"InterpNumTimelevels\" " + "for group \"%s\" says that %d timelevels should " + "be used for time interpolation.\n However, only %d " + "are active.", + groupname, interp_ntl, + CCTK_ActiveTimeLevelsGI(cgh, group)); + } + } else { + assert(0); + } + + return interp_ntl; + + } + + + void CarpetInterpStartup () + { + CCTK_OverloadInterpGridArrays (InterpGridArrays); + } + + + + int InterpGridArrays (cGH const * const cgh, + int const N_dims, + int const local_interp_handle, + int const param_table_handle, + int const coord_system_handle, + int const N_interp_points, + int const interp_coords_type_code, + void const * const interp_coords [], + int const N_input_arrays, + CCTK_INT const input_array_variable_indices [], + int const N_output_arrays, + CCTK_INT const output_array_type_codes [], + void * const output_arrays []) + { + if (CCTK_IsFunctionAliased ("SymmetryInterpolate")) { + return SymmetryInterpolate + (cgh, N_dims, + local_interp_handle, param_table_handle, coord_system_handle, + N_interp_points, interp_coords_type_code, interp_coords, + N_input_arrays, input_array_variable_indices, + N_output_arrays, output_array_type_codes, output_arrays); + } else { + return Carpet_DriverInterpolate + (cgh, N_dims, + local_interp_handle, param_table_handle, coord_system_handle, + N_interp_points, interp_coords_type_code, interp_coords, + N_input_arrays, input_array_variable_indices, + N_output_arrays, output_array_type_codes, output_arrays); + } + } + + + + extern "C" CCTK_INT + Carpet_DriverInterpolate (CCTK_POINTER_TO_CONST const cgh_, + CCTK_INT const N_dims, + CCTK_INT const local_interp_handle, + CCTK_INT const param_table_handle, + CCTK_INT const coord_system_handle, + CCTK_INT const N_interp_points, + CCTK_INT const interp_coords_type_code, + CCTK_POINTER_TO_CONST const interp_coords [], + CCTK_INT const N_input_arrays, + CCTK_INT const input_array_variable_indices [], + CCTK_INT const N_output_arrays, + CCTK_INT const output_array_type_codes [], + CCTK_POINTER const output_arrays []) + { + cGH const * const cgh = static_cast<cGH const *> (cgh_); + int ierr; + + assert (cgh); + assert (N_dims == dim); + + + + if (is_meta_mode()) { + CCTK_WARN (0, "It is not possible to interpolate in meta mode"); + } + + bool const want_global_mode = is_global_mode(); + + + + // Get some information + MPI_Comm const comm = CarpetMPIComm (); + int const myproc = CCTK_MyProc (cgh); + int const nprocs = CCTK_nProcs (cgh); + assert (myproc>=0 && myproc<nprocs); + + // Multiple maps are not supported + // (because we don't know how to select a map) + assert (maps == 1); + const int m = 0; + + int const minrl = want_global_mode ? 0 : reflevel; + int const maxrl = want_global_mode ? vhh.at(m)->reflevels() : reflevel+1; + + // Multiple convergence levels are not supported + assert (mglevels == 1); + int const ml = 0; + + int maxncomps = 0; + for (int rl=minrl; rl<maxrl; ++rl) { + maxncomps = max(maxncomps, vhh.at(m)->components(rl)); + } + + + + // Find the time interpolation order + int partype; + void const * const parptr + = CCTK_ParameterGet ("prolongation_order_time", "Carpet", &partype); + assert (parptr); + assert (partype == PARAMETER_INTEGER); + int const prolongation_order_time = * (CCTK_INT const *) parptr; + + CCTK_REAL const current_time = cgh->cctk_time / cgh->cctk_delta_time; + + + + // Find out about the coordinates: origin and delta for the Carpet + // grid indices +#if 0 + const char * coord_system_name + = CCTK_CoordSystemName (coord_system_handle); + assert (coord_system_name); + rvect lower, upper, delta; + for (int d=0; d<dim; ++d) { + ierr = CCTK_CoordRange + (cgh, &lower[d], &upper[d], d+1, 0, coord_system_name); + assert (!ierr); + const ibbox & baseext = vhh.at(m)->baseextent; + delta[d] + = (upper[d] - lower[d]) / (baseext.upper()[d] - baseext.lower()[d]); + } +#else + rvect const lower = rvect::ref(cgh->cctk_origin_space); + rvect const delta = rvect::ref(cgh->cctk_delta_space) / maxreflevelfact; + rvect const upper = lower + delta * (vhh.at(m)->baseextent.upper() - vhh.at(m)->baseextent.lower()); +#endif + + assert (N_interp_points >= 0); + assert (interp_coords); + for (int d=0; d<dim; ++d) { + assert (N_interp_points==0 || interp_coords[d]); + } + + assert (N_output_arrays >= 0); + if (N_interp_points > 0) { + assert (output_arrays); + for (int j=0; j<N_output_arrays; ++j) { + assert (output_arrays[j]); + } + } + + + + // Assign interpolation points to components + vector<int> rlev (N_interp_points); // refinement level of point n + vector<int> home (N_interp_points); // component of point n + vector<int> homecnts ((maxrl-minrl) * maxncomps); // number of points in component c + + for (int n=0; n<N_interp_points; ++n) { + + // Find the grid point closest to the interpolation point + assert (interp_coords_type_code == CCTK_VARIABLE_REAL); + rvect pos; + for (int d=0; d<dim; ++d) { + pos[d] = static_cast<CCTK_REAL const *>(interp_coords[d])[n]; + } + + // Find the component that this grid point belongs to + rlev.at(n) = -1; + home.at(n) = -1; + if (all(pos>=lower && pos<=upper)) { + for (int rl=maxrl-1; rl>=minrl; --rl) { + + const int fact = maxreflevelfact / ipow(reffact, rl) * ipow(mgfact, mglevel); + ivect const ipos = ivect(floor((pos - lower) / (delta * fact) + 0.5)) * fact; + assert (all(ipos % vhh.at(m)->bases.at(rl).at(ml).stride() == 0)); + + // TODO: use something faster than a linear search + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + if (vhh.at(m)->extents.at(rl).at(c).at(ml).contains(ipos)) { + rlev.at(n) = rl; + home.at(n) = c; + goto found; + } + } + } + } + CCTK_VWarn (3, __LINE__, __FILE__, CCTK_THORNSTRING, + "Interpolation point #%d at [%g,%g,%g] is not on any grid patch", + n, pos[0], pos[1], pos[2]); + // Map the point (arbitrarily) to the first component of the + // coarsest grid + rlev.at(n) = minrl; + home.at(n) = 0; + found: + assert (rlev.at(n)>=minrl && rlev.at(n)<maxrl); + assert (home.at(n)>=0 && home.at(n)<vhh.at(m)->components(rlev.at(n))); + ++ homecnts.at(ind_rc(m, rlev.at(n), home.at(n))); + + } // for n + + // Communicate counts + vector<int> allhomecnts(nprocs * (maxrl-minrl) * maxncomps); + MPI_Allgather + (&homecnts .at(0), (maxrl-minrl) * maxncomps, MPI_INT, + &allhomecnts.at(0), (maxrl-minrl) * maxncomps, MPI_INT, comm); + + + + // Create coordinate patches + vector<data<CCTK_REAL,dim> > allcoords + (nprocs * (maxrl-minrl) * maxncomps); + for (int p=0; p<nprocs; ++p) { + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + ivect lo (0); + ivect up (1); + up[0] = allhomecnts.at(ind_prc(p,m,rl,c)); + up[1] = dim; + ivect str (1); + ibbox extent (lo, up-str, str); + allcoords.at(ind_prc(p,m,rl,c)).allocate (extent, p); + } + } + } + + // Fill in local coordinate patches + { + vector<int> tmpcnts ((maxrl-minrl) * maxncomps); + for (int n=0; n<N_interp_points; ++n) { + int const rl = rlev.at(n); + int const c = home.at(n); + assert (rl>=minrl && rl<maxrl); + assert (c>=0 && c<vhh.at(m)->components(rl)); + assert (tmpcnts.at(ind_rc(m,rl,c)) >= 0); + assert (tmpcnts.at(ind_rc(m,rl,c)) < homecnts.at(ind_rc(m,rl,c))); + assert (dim==3); + for (int d=0; d<dim; ++d) { + allcoords.at(ind_prc(myproc,m,rl,c))[ivect(tmpcnts.at(ind_rc(m,rl,c)),d,0)] + = static_cast<CCTK_REAL const *>(interp_coords[d])[n]; + } + ++ tmpcnts.at(c + (rl-minrl)*maxncomps); + } + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + assert (tmpcnts.at(ind_rc(m,rl,c)) == homecnts.at(ind_rc(m,rl,c))); + } + } + } + + // Transfer coordinate patches + for (comm_state<dim> state; !state.done(); state.step()) { + for (int p=0; p<nprocs; ++p) { + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + allcoords.at(ind_prc(p,m,rl,c)).change_processor + (state, vhh.at(m)->processors.at(rl).at(c)); + } + } + } + } + + + + // Create output patches + vector<data<CCTK_REAL,dim> > alloutputs + (nprocs * (maxrl-minrl) * maxncomps, -1); + for (int p=0; p<nprocs; ++p) { + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + ivect lo (0); + ivect up (1); + up[0] = allhomecnts.at(ind_prc(p,m,rl,c)); + up[1] = N_output_arrays; + ivect str (1); + ibbox extent (lo, up-str, str); + alloutputs.at(ind_prc(p,m,rl,c)).allocate + (extent, vhh.at(m)->processors.at(rl).at(c)); + } + } + } + + + + // + // Do the local interpolation + // + int overall_ierr = 0; + BEGIN_GLOBAL_MODE(cgh) { + for (int rl=minrl; rl<maxrl; ++rl) { + enter_level_mode (const_cast<cGH*>(cgh), rl); + + // Number of necessary time levels + CCTK_REAL const level_time = cgh->cctk_time / cgh->cctk_delta_time; + bool const need_time_interp + = (fabs(current_time - level_time) + > 1e-12 * (fabs(level_time) + fabs(current_time) + + fabs(cgh->cctk_delta_time))); + assert (! (! want_global_mode && need_time_interp)); + int const num_tl = need_time_interp ? prolongation_order_time + 1 : 1; + + BEGIN_MAP_LOOP(cgh, CCTK_GF) { + BEGIN_LOCAL_COMPONENT_LOOP(cgh, CCTK_GF) { + + // Find out about the local geometry + ivect lsh; + rvect coord_origin, coord_delta; + for (int d=0; d<dim; ++d) { + lsh[d] = cgh->cctk_lsh[d]; + coord_delta[d] = cgh->cctk_delta_space[d] / cgh->cctk_levfac[d]; + coord_origin[d] = cgh->cctk_origin_space[d] + (cgh->cctk_lbnd[d] + 1.0 * cgh->cctk_levoff[d] / cgh->cctk_levoffdenom[d]) * coord_delta[d]; + } + + + + // Find out about the grid functions + vector<CCTK_INT> input_array_type_codes(N_input_arrays); + vector<const void *> input_arrays(N_input_arrays); + for (int n=0; n<N_input_arrays; ++n) { + if (input_array_variable_indices[n] == -1) { + + // Ignore this entry + input_array_type_codes.at(n) = -1; + + } else { + + int const vi = input_array_variable_indices[n]; + assert (vi>=0 && vi<CCTK_NumVars()); + + int const gi = CCTK_GroupIndexFromVarI (vi); + assert (gi>=0 && gi<CCTK_NumGroups()); + + cGroup group; + ierr = CCTK_GroupData (gi, &group); + assert (!ierr); + assert (group.grouptype == CCTK_GF); + assert (group.dim == dim); + assert (group.disttype == CCTK_DISTRIB_DEFAULT); + assert (group.stagtype == 0); // not staggered + + int interp_ntls = GetInterpNumTimelevels(cgh, gi); + // If -ve then key wasn't set; use all timelevels. + if (interp_ntls < 0) interp_ntls = group.numtimelevels; + + // TODO: emit better warning + if ((num_tl > group.numtimelevels)&& + (interp_ntls > group.numtimelevels)) { + CCTK_VWarn(0, __LINE__,__FILE__,"CarpetInterp", + "Tried to interpolate variable '%s' " + "in time.\nIt has insufficient timelevels " + "(%d are required).", + CCTK_FullName(vi), + min(num_tl,interp_ntls)); + } + assert (group.numtimelevels >= min(num_tl,interp_ntls)); + + input_array_type_codes.at(n) = group.vartype; + + } + } // for input arrays + + + + // Work on the data from all processors + for (int p=0; p<nprocs; ++p) { + assert (allcoords.at(ind_prc(p,m,reflevel,component)).owns_storage()); + assert (allhomecnts.at(ind_prc(p,m,reflevel,component)) == allcoords.at(ind_prc(p,m,reflevel,component)).shape()[0]); + assert (allhomecnts.at(ind_prc(p,m,reflevel,component)) == alloutputs.at(ind_prc(p,m,reflevel,component)).shape()[0]); + + int const npoints = allhomecnts.at(ind_prc(p,m,reflevel,component)); + + // Do the processor-local interpolation + vector<const void *> tmp_interp_coords (dim); + for (int d=0; d<dim; ++d) { + tmp_interp_coords.at(d) = &allcoords.at(ind_prc(p,m,reflevel,component))[ivect(0,d,0)]; + } + + + + vector<vector<void *> > tmp_output_arrays (num_tl); + + for (int tl=0; tl<num_tl; ++tl) { + + for (int n=0; n<N_input_arrays; ++n) { + + int const vi = input_array_variable_indices[n]; + assert (vi>=0 && vi<CCTK_NumVars()); + + int const gi = CCTK_GroupIndexFromVarI (vi); + assert (gi>=0 && gi<CCTK_NumGroups()); + + int interp_ntls = GetInterpNumTimelevels(cgh, gi); + // If -ve then key wasn't set; use all timelevels. + if (interp_ntls < 0) interp_ntls = num_tl; + + if (input_array_variable_indices[n] == -1) { + input_arrays.at(n) = 0; + } else if (tl > interp_ntls-1) { + // Do the interpolation anyway, just from + // an earlier timelevel. + int const vi = input_array_variable_indices[n]; + assert (vi>=0 && vi<CCTK_NumVars()); + input_arrays.at(n) = + CCTK_VarDataPtrI (cgh, interp_ntls-1, vi); + } else { + int const vi = input_array_variable_indices[n]; + assert (vi>=0 && vi<CCTK_NumVars()); + input_arrays.at(n) = CCTK_VarDataPtrI (cgh, tl, vi); + } + } // for input arrays + + tmp_output_arrays.at(tl).resize (N_output_arrays); + for (int j=0; j<N_output_arrays; ++j) { + assert (output_array_type_codes[j] == CCTK_VARIABLE_REAL); + if (need_time_interp) { + tmp_output_arrays.at(tl).at(j) = new CCTK_REAL [npoints]; + } else { + tmp_output_arrays.at(tl).at(j) = &alloutputs.at(ind_prc(p,m,reflevel,component))[ivect(0,j,0)]; + } + } + + ierr = CCTK_InterpLocalUniform + (N_dims, local_interp_handle, param_table_handle, + &coord_origin[0], &coord_delta[0], + npoints, + interp_coords_type_code, &tmp_interp_coords[0], + N_input_arrays, &lsh[0], + &input_array_type_codes[0], &input_arrays[0], + N_output_arrays, + output_array_type_codes, &tmp_output_arrays.at(tl)[0]); + if (ierr) { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "The local interpolator returned the error code %d", ierr); + } + overall_ierr = min(overall_ierr, ierr); + + } // for tl + + // Interpolate in time, if necessary + if (need_time_interp) { + + for (int j=0; j<N_output_arrays; ++j) { + + // Find output variable indices + vector<CCTK_INT> operand_indices (N_output_arrays); + ierr = Util_TableGetIntArray + (param_table_handle, N_output_arrays, + &operand_indices.front(), "operand_indices"); + if (ierr == UTIL_ERROR_TABLE_NO_SUCH_KEY) { + assert (N_output_arrays == N_input_arrays); + for (int m=0; m<N_output_arrays; ++m) { + operand_indices.at(m) = m; + } + } else { + assert (ierr == N_output_arrays); + } + + // Find input array for this output array + int const n = operand_indices.at(j); + + int const vi = input_array_variable_indices[n]; + assert (vi>=0 && vi<CCTK_NumVars()); + + int const gi = CCTK_GroupIndexFromVarI (vi); + assert (gi>=0 && gi<CCTK_NumGroups()); + + int interp_ntls = GetInterpNumTimelevels(cgh, gi); + // If -ve then key wasn't set; use all timelevels. + if (interp_ntls < 0) interp_ntls = num_tl; + + // Get interpolation times + CCTK_REAL const time = current_time; + vector<CCTK_REAL> times(interp_ntls); + for (int tl=0; tl<interp_ntls; ++tl) { + times.at(tl) = vtt.at(m)->time (-tl, reflevel, mglevel); + } + + // Calculate interpolation weights + vector<CCTK_REAL> tfacs(interp_ntls); + switch (interp_ntls) { + case 1: + // no interpolation + // We have to assume that any GF with one timelevel + // is constant in time!!! + // assert (fabs((time - times.at(0)) / fabs(time + times.at(0) + cgh->cctk_delta_time)) < 1e-12); + tfacs.at(0) = 1.0; + break; + case 2: + // linear (2-point) interpolation + tfacs.at(0) = (time - times.at(1)) / (times.at(0) - times.at(1)); + tfacs.at(1) = (time - times.at(0)) / (times.at(1) - times.at(0)); + break; + case 3: + // quadratic (3-point) interpolation + tfacs.at(0) = (time - times.at(1)) * (time - times.at(2)) / ((times.at(0) - times.at(1)) * (times.at(0) - times.at(2))); + tfacs.at(1) = (time - times.at(0)) * (time - times.at(2)) / ((times.at(1) - times.at(0)) * (times.at(1) - times.at(2))); + tfacs.at(2) = (time - times.at(0)) * (time - times.at(1)) / ((times.at(2) - times.at(0)) * (times.at(2) - times.at(1))); + break; + default: + assert (0); + } + + // Interpolate + assert (output_array_type_codes[j] == CCTK_VARIABLE_REAL); + for (int k=0; k<npoints; ++k) { + CCTK_REAL & dest = alloutputs.at(ind_prc(p,m,reflevel,component))[ivect(k,j,0)]; + dest = 0; + for (int tl=0; tl<interp_ntls; ++tl) { + CCTK_REAL const src = ((CCTK_REAL const *)tmp_output_arrays.at(tl).at(j))[k]; + dest += tfacs[tl] * src; + } + } + } + + for (int tl=0; tl<num_tl; ++tl) { + for (int j=0; j<N_output_arrays; ++j) { + delete [] (CCTK_REAL *)tmp_output_arrays.at(tl).at(j); + } + } + + } // if need_time_interp + + } // for processors + + } END_LOCAL_COMPONENT_LOOP; + } END_MAP_LOOP; + + leave_level_mode (const_cast<cGH*>(cgh)); + } // for rl + + } END_GLOBAL_MODE; + + + + // Transfer output patches back + for (comm_state<dim> state; !state.done(); state.step()) { + for (int p=0; p<nprocs; ++p) { + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + alloutputs.at(ind_prc(p,m,rl,c)).change_processor (state, p); + } + } + } + } + + + + // Read out local output patches + { + vector<int> tmpcnts ((maxrl-minrl) * maxncomps); + for (int n=0; n<N_interp_points; ++n) { + int const rl = rlev.at(n); + int const c = home.at(n); + for (int j=0; j<N_output_arrays; ++j) { + assert (interp_coords_type_code == CCTK_VARIABLE_REAL); + assert (alloutputs.at(ind_prc(myproc,m,rl,c)).owns_storage()); + assert (output_arrays); + assert (output_arrays[j]); + static_cast<CCTK_REAL *>(output_arrays[j])[n] = alloutputs.at(ind_prc(myproc,m,rl,c))[ivect(tmpcnts.at(ind_rc(m,rl,c)),j,0)]; + } + ++ tmpcnts.at(ind_rc(m,rl,c)); + } + for (int rl=minrl; rl<maxrl; ++rl) { + for (int c=0; c<vhh.at(m)->components(rl); ++c) { + assert (tmpcnts.at(ind_rc(m,rl,c)) == homecnts.at(ind_rc(m,rl,c))); + } + } + } + + + + int global_overall_ierr; + MPI_Allreduce + (&overall_ierr, &global_overall_ierr, 1, MPI_INT, MPI_MIN, comm); + + + + // Done. + return global_overall_ierr; + } + +} // namespace CarpetInterp diff --git a/Carpet/CarpetInterp/src/interp.h b/Carpet/CarpetInterp/src/interp.h new file mode 100644 index 000000000..4600c6922 --- /dev/null +++ b/Carpet/CarpetInterp/src/interp.h @@ -0,0 +1,19 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.h,v 1.2 2003/11/05 16:18:38 schnetter Exp $ */ + +#ifndef CARPETINTERP_H +#define CARPETINTERP_H + +#ifdef __cplusplus +namespace CarpetInterp { + extern "C" { +#endif + + /* Scheduled functions */ + void CarpetInterpStartup (void); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetInterp */ +#endif + +#endif /* !defined(CARPETINTERP_H) */ diff --git a/Carpet/CarpetInterp/src/interp.hh b/Carpet/CarpetInterp/src/interp.hh new file mode 100644 index 000000000..db0d1360a --- /dev/null +++ b/Carpet/CarpetInterp/src/interp.hh @@ -0,0 +1,29 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/interp.hh,v 1.2 2004/05/21 18:12:23 schnetter Exp $ + +#ifndef CARPETINTERP_HH +#define CARPETINTERP_HH + +#include "cctk.h" + +#include "interp.h" + +namespace CarpetInterp { + + int + InterpGridArrays (cGH const * const cGH, + int const N_dims, + int const local_interp_handle, + int const param_table_handle, + int const coord_system_handle, + int const N_interp_points, + int const interp_coords_type_code, + void const * const interp_coords [], + int const N_input_arrays, + CCTK_INT const input_array_variable_indices [], + int const N_output_arrays, + CCTK_INT const output_array_type_codes [], + void * const output_arrays []); + +} // namespace CarpetInterp + +#endif // !defined(CARPETINTERP_HH) diff --git a/Carpet/CarpetInterp/src/make.code.defn b/Carpet/CarpetInterp/src/make.code.defn new file mode 100644 index 000000000..8511e0de3 --- /dev/null +++ b/Carpet/CarpetInterp/src/make.code.defn @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn CarpetInterp +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/src/make.code.defn,v 1.2 2003/04/30 12:37:31 schnetter Exp $ + +# Source files in this directory +SRCS = interp.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetInterp/test/waveinterp.par b/Carpet/CarpetInterp/test/waveinterp.par new file mode 100644 index 000000000..236ff3d04 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp.par @@ -0,0 +1,144 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetInterp/test/waveinterp.par,v 1.1 2004/08/05 11:22:32 schnetter Exp $ + +Cactus::cctk_run_title = "WaveToy Interpolation Test" +Cactus::cctk_full_warnings = yes + +Cactus::terminate = time +Cactus::cctk_final_time = 0.1 + + + +ActiveThorns = "IOUtil" + +IO::out_dir = $parfile + + + +ActiveThorns = "LocalInterp AEILocalInterp" + + + +ActiveThorns = "Carpet CarpetLib CarpetInterp CarpetReduce CarpetSlab" + +Carpet::domain_from_coordbase = yes +Carpet::max_refinement_levels = 20 + +driver::ghost_size = 2 +Carpet::buffer_width = 4 + +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 + +Carpet::convergence_level = 0 + +Carpet::init_3_timelevels = yes + +CarpetLib::save_memory_during_regridding = yes + + + +ActiveThorns = "NaNChecker" + + + +ActiveThorns = "Boundary CartGrid3D CoordBase SymBase" + +CoordBase::domainsize = minmax + +CoordBase::xmin = -1.0 +CoordBase::ymin = -1.0 +CoordBase::zmin = -1.0 +CoordBase::xmax = 1.0 +CoordBase::ymax = 1.0 +CoordBase::zmax = 1.0 +CoordBase::dx = 0.1 +CoordBase::dy = 0.1 +CoordBase::dz = 0.1 + +CartGrid3D::type = coordbase +CartGrid3D::avoid_origin = no + + + +ActiveThorns = "CarpetRegrid" + +CarpetRegrid::refinement_levels = 3 +CarpetRegrid::refined_regions = manual-coordinate-list +CarpetRegrid::smart_outer_boundaries = yes +CarpetRegrid::coordinates = " + [ [ ([-0.4,-0.4,-0.4]:[+0.4,+0.4,+0.4]:[0.0500,0.0500,0.0500]) ], + [ ([-0.2,-0.2,-0.2]:[+0.2,+0.2,+0.2]:[0.0250,0.0250,0.0250]) ], + [ ([-0.1,-0.1,-0.1]:[+0.1,+0.1,+0.1]:[0.0125,0.0125,0.0125]) ] ] +" +CarpetRegrid::keep_same_grid_structure = yes + + + +ActiveThorns = "Time" + +Time::dtfac = 0.25 + + + +ActiveThorns = "MoL" + +MoL::ODE_Method = RK3 + + + +ActiveThorns = "WaveMoL" + + + +ActiveThorns = "IDWaveMoL" + +IDWaveMoL::initial_data = plane +IDWaveMoL::slopet = 1.0 + + + +ActiveThorns = "InterpToArray" + +InterpToArray::narrays1d = 1 +InterpToArray::array1d_vars[0] = "WaveMoL::phi" +InterpToArray::array1d_npoints_i = 10 +InterpToArray::array1d_dx_i = 0.1 + + + +ActiveThorns = "IOBasic" + +IOBasic::outInfo_every = 1 +IOBasic::outInfo_reductions = "norm2" +IOBasic::outInfo_vars = " + WaveMoL::phi + WaveMoL::phit + WaveMoL::phix +" + + + +ActiveThorns = "CarpetIOScalar" + +IOScalar::outScalar_every = 1 +IOScalar::outScalar_vars = " + WaveMoL::scalarevolvemol_scalar + WaveMoL::scalarevolvemol_vector +" + + + +ActiveThorns = "CarpetIOASCII" + +IOASCII::out0D_every = 1 +IOASCII::out0D_vars = " + WaveMoL::scalarevolvemol_scalar + WaveMoL::scalarevolvemol_vector +" + +IOASCII::out1D_every = 1 +IOASCII::out1D_vars = " + WaveMoL::scalarevolvemol_scalar + WaveMoL::scalarevolvemol_vector + InterpToArray::arrays1d +" diff --git a/Carpet/CarpetInterp/test/waveinterp/arrays1d[0].x.asc b/Carpet/CarpetInterp/test/waveinterp/arrays1d[0].x.asc new file mode 100644 index 000000000..304036ac8 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/arrays1d[0].x.asc @@ -0,0 +1,257 @@ +# INTERPTOARRAY::arrays1d[0] x (arrays1d[0]) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 0 0 0 0 0 0 1 +0 0 0 0 0 1 0 0 0 1 0 0 1 +0 0 0 0 0 2 0 0 0 2 0 0 1 +0 0 0 0 0 3 0 0 0 3 0 0 1 +0 0 0 0 0 4 0 0 0 4 0 0 1 +0 0 0 0 0 5 0 0 0 5 0 0 1 +0 0 0 0 0 6 0 0 0 6 0 0 1 +0 0 0 0 0 7 0 0 0 7 0 0 1 +0 0 0 0 0 8 0 0 0 8 0 0 1 +0 0 0 0 0 9 0 0 0 9 0 0 1 + + +# iteration 131072 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 0 0 0 0 0 0 0.00625 0 0 0 1.00625 +131072 0 0 0 0 1 0 0 0.00625 1 0 0 1.00625 +131072 0 0 0 0 2 0 0 0.00625 2 0 0 1.00625 +131072 0 0 0 0 3 0 0 0.00625 3 0 0 1.00625 +131072 0 0 0 0 4 0 0 0.00625 4 0 0 1.00625 +131072 0 0 0 0 5 0 0 0.00625 5 0 0 1.00625 +131072 0 0 0 0 6 0 0 0.00625 6 0 0 1.00625 +131072 0 0 0 0 7 0 0 0.00625 7 0 0 1.00625 +131072 0 0 0 0 8 0 0 0.00625 8 0 0 1.00625 +131072 0 0 0 0 9 0 0 0.00625 9 0 0 1.00625 + + +# iteration 262144 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 0 0 0 0 0 0 0.0125 0 0 0 1.0125 +262144 0 0 0 0 1 0 0 0.0125 1 0 0 1.01250000000873 +262144 0 0 0 0 2 0 0 0.0125 2 0 0 1.0125 +262144 0 0 0 0 3 0 0 0.0125 3 0 0 1.0125 +262144 0 0 0 0 4 0 0 0.0125 4 0 0 1.0125 +262144 0 0 0 0 5 0 0 0.0125 5 0 0 1.0125 +262144 0 0 0 0 6 0 0 0.0125 6 0 0 1.0125 +262144 0 0 0 0 7 0 0 0.0125 7 0 0 1.0125 +262144 0 0 0 0 8 0 0 0.0125 8 0 0 1.0125 +262144 0 0 0 0 9 0 0 0.0125 9 0 0 1.0125 + + +# iteration 393216 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 0 0 0 0 0 0 0.01875 0 0 0 1.01875 +393216 0 0 0 0 1 0 0 0.01875 1 0 0 1.01875000002589 +393216 0 0 0 0 2 0 0 0.01875 2 0 0 1.01874999999937 +393216 0 0 0 0 3 0 0 0.01875 3 0 0 1.01875 +393216 0 0 0 0 4 0 0 0.01875 4 0 0 1.01875 +393216 0 0 0 0 5 0 0 0.01875 5 0 0 1.01875 +393216 0 0 0 0 6 0 0 0.01875 6 0 0 1.01875 +393216 0 0 0 0 7 0 0 0.01875 7 0 0 1.01875 +393216 0 0 0 0 8 0 0 0.01875 8 0 0 1.01875 +393216 0 0 0 0 9 0 0 0.01875 9 0 0 1.01875 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 0 0 0.025 0 0 0 1.02500000000002 +524288 0 0 0 0 1 0 0 0.025 1 0 0 1.02500000004247 +524288 0 0 0 0 2 0 0 0.025 2 0 0 1.02499999999832 +524288 0 0 0 0 3 0 0 0.025 3 0 0 1.025 +524288 0 0 0 0 4 0 0 0.025 4 0 0 1.025 +524288 0 0 0 0 5 0 0 0.025 5 0 0 1.025 +524288 0 0 0 0 6 0 0 0.025 6 0 0 1.025 +524288 0 0 0 0 7 0 0 0.025 7 0 0 1.025 +524288 0 0 0 0 8 0 0 0.025 8 0 0 1.025 +524288 0 0 0 0 9 0 0 0.025 9 0 0 1.025 + + +# iteration 655360 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 0 0 0 0 0 0 0.03125 0 0 0 1.0312500000001 +655360 0 0 0 0 1 0 0 0.03125 1 0 0 1.03125000005828 +655360 0 0 0 0 2 0 0 0.03125 2 0 0 1.03124999999702 +655360 0 0 0 0 3 0 0 0.03125 3 0 0 1.03125000000003 +655360 0 0 0 0 4 0 0 0.03125 4 0 0 1.03125 +655360 0 0 0 0 5 0 0 0.03125 5 0 0 1.03125 +655360 0 0 0 0 6 0 0 0.03125 6 0 0 1.03125 +655360 0 0 0 0 7 0 0 0.03125 7 0 0 1.03125 +655360 0 0 0 0 8 0 0 0.03125 8 0 0 1.03125 +655360 0 0 0 0 9 0 0 0.03125 9 0 0 1.03125 + + +# iteration 786432 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 0 0 0 0 0 0 0.0375 0 0 0 1.03750000000037 +786432 0 0 0 0 1 0 0 0.0375 1 0 0 1.0375000000732 +786432 0 0 0 0 2 0 0 0.0375 2 0 0 1.03749999999542 +786432 0 0 0 0 3 0 0 0.0375 3 0 0 1.03750000000009 +786432 0 0 0 0 4 0 0 0.0375 4 0 0 1.03749999999999 +786432 0 0 0 0 5 0 0 0.0375 5 0 0 1.0375 +786432 0 0 0 0 6 0 0 0.0375 6 0 0 1.0375 +786432 0 0 0 0 7 0 0 0.0375 7 0 0 1.0375 +786432 0 0 0 0 8 0 0 0.0375 8 0 0 1.0375 +786432 0 0 0 0 9 0 0 0.0375 9 0 0 1.0375 + + +# iteration 917504 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 0 0 0 0 0 0 0.04375 0 0 0 1.043750000001 +917504 0 0 0 0 1 0 0 0.04375 1 0 0 1.04375000008715 +917504 0 0 0 0 2 0 0 0.04375 2 0 0 1.04374999999437 +917504 0 0 0 0 3 0 0 0.04375 3 0 0 1.04375000000016 +917504 0 0 0 0 4 0 0 0.04375 4 0 0 1.04374999999999 +917504 0 0 0 0 5 0 0 0.04375 5 0 0 1.04375 +917504 0 0 0 0 6 0 0 0.04375 6 0 0 1.04375 +917504 0 0 0 0 7 0 0 0.04375 7 0 0 1.04375 +917504 0 0 0 0 8 0 0 0.04375 8 0 0 1.04375 +917504 0 0 0 0 9 0 0 0.04375 9 0 0 1.04375 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 0 0 0.05 0 0 0 1.05000000000227 +1048576 0 0 0 0 1 0 0 0.05 1 0 0 1.05000000010013 +1048576 0 0 0 0 2 0 0 0.05 2 0 0 1.04999999999358 +1048576 0 0 0 0 3 0 0 0.05 3 0 0 1.05000000000024 +1048576 0 0 0 0 4 0 0 0.05 4 0 0 1.04999999999998 +1048576 0 0 0 0 5 0 0 0.05 5 0 0 1.05 +1048576 0 0 0 0 6 0 0 0.05 6 0 0 1.05 +1048576 0 0 0 0 7 0 0 0.05 7 0 0 1.05 +1048576 0 0 0 0 8 0 0 0.05 8 0 0 1.05 +1048576 0 0 0 0 9 0 0 0.05 9 0 0 1.05 + + +# iteration 1179648 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 0 0 0 0 0 0 0.05625 0 0 0 1.05625000000452 +1179648 0 0 0 0 1 0 0 0.05625 1 0 0 1.05625000011224 +1179648 0 0 0 0 2 0 0 0.05625 2 0 0 1.05624999999326 +1179648 0 0 0 0 3 0 0 0.05625 3 0 0 1.0562500000004 +1179648 0 0 0 0 4 0 0 0.05625 4 0 0 1.05624999999997 +1179648 0 0 0 0 5 0 0 0.05625 5 0 0 1.05625 +1179648 0 0 0 0 6 0 0 0.05625 6 0 0 1.05625 +1179648 0 0 0 0 7 0 0 0.05625 7 0 0 1.05625 +1179648 0 0 0 0 8 0 0 0.05625 8 0 0 1.05625 +1179648 0 0 0 0 9 0 0 0.05625 9 0 0 1.05625 + + +# iteration 1310720 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 0 0 0 0 0 0 0.0625 0 0 0 1.0625000000082 +1310720 0 0 0 0 1 0 0 0.0625 1 0 0 1.06250000012362 +1310720 0 0 0 0 2 0 0 0.0625 2 0 0 1.06249999999333 +1310720 0 0 0 0 3 0 0 0.0625 3 0 0 1.06250000000062 +1310720 0 0 0 0 4 0 0 0.0625 4 0 0 1.06249999999994 +1310720 0 0 0 0 5 0 0 0.0625 5 0 0 1.0625 +1310720 0 0 0 0 6 0 0 0.0625 6 0 0 1.0625 +1310720 0 0 0 0 7 0 0 0.0625 7 0 0 1.0625 +1310720 0 0 0 0 8 0 0 0.0625 8 0 0 1.0625 +1310720 0 0 0 0 9 0 0 0.0625 9 0 0 1.0625 + + +# iteration 1441792 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 0 0 0 0 0 0 0.06875 0 0 0 1.0687500000138 +1441792 0 0 0 0 1 0 0 0.06875 1 0 0 1.06875000013445 +1441792 0 0 0 0 2 0 0 0.06875 2 0 0 1.068749999994 +1441792 0 0 0 0 3 0 0 0.06875 3 0 0 1.06875000000088 +1441792 0 0 0 0 4 0 0 0.06875 4 0 0 1.06874999999991 +1441792 0 0 0 0 5 0 0 0.06875 5 0 0 1.06875 +1441792 0 0 0 0 6 0 0 0.06875 6 0 0 1.06875 +1441792 0 0 0 0 7 0 0 0.06875 7 0 0 1.06875 +1441792 0 0 0 0 8 0 0 0.06875 8 0 0 1.06875 +1441792 0 0 0 0 9 0 0 0.06875 9 0 0 1.06875 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 0 0 0.075 0 0 0 1.07500000002188 +1572864 0 0 0 0 1 0 0 0.075 1 0 0 1.07500000014499 +1572864 0 0 0 0 2 0 0 0.075 2 0 0 1.07499999999519 +1572864 0 0 0 0 3 0 0 0.075 3 0 0 1.07500000000118 +1572864 0 0 0 0 4 0 0 0.075 4 0 0 1.07499999999987 +1572864 0 0 0 0 5 0 0 0.075 5 0 0 1.075 +1572864 0 0 0 0 6 0 0 0.075 6 0 0 1.075 +1572864 0 0 0 0 7 0 0 0.075 7 0 0 1.075 +1572864 0 0 0 0 8 0 0 0.075 8 0 0 1.075 +1572864 0 0 0 0 9 0 0 0.075 9 0 0 1.075 + + +# iteration 1703936 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 0 0 0 0 0 0 0.08125 0 0 0 1.08125000003301 +1703936 0 0 0 0 1 0 0 0.08125 1 0 0 1.08125000015544 +1703936 0 0 0 0 2 0 0 0.08125 2 0 0 1.08124999999712 +1703936 0 0 0 0 3 0 0 0.08125 3 0 0 1.0812500000015 +1703936 0 0 0 0 4 0 0 0.08125 4 0 0 1.08124999999982 +1703936 0 0 0 0 5 0 0 0.08125 5 0 0 1.08125000000001 +1703936 0 0 0 0 6 0 0 0.08125 6 0 0 1.08125 +1703936 0 0 0 0 7 0 0 0.08125 7 0 0 1.08125 +1703936 0 0 0 0 8 0 0 0.08125 8 0 0 1.08125 +1703936 0 0 0 0 9 0 0 0.08125 9 0 0 1.08125 + + +# iteration 1835008 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 0 0 0 0 0 0 0.0875 0 0 0 1.08750000004775 +1835008 0 0 0 0 1 0 0 0.0875 1 0 0 1.08750000016605 +1835008 0 0 0 0 2 0 0 0.0875 2 0 0 1.08749999999972 +1835008 0 0 0 0 3 0 0 0.0875 3 0 0 1.08750000000186 +1835008 0 0 0 0 4 0 0 0.0875 4 0 0 1.08749999999977 +1835008 0 0 0 0 5 0 0 0.0875 5 0 0 1.08750000000001 +1835008 0 0 0 0 6 0 0 0.0875 6 0 0 1.0875 +1835008 0 0 0 0 7 0 0 0.0875 7 0 0 1.0875 +1835008 0 0 0 0 8 0 0 0.0875 8 0 0 1.0875 +1835008 0 0 0 0 9 0 0 0.0875 9 0 0 1.0875 + + +# iteration 1966080 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 0 0 0 0 0 0 0.09375 0 0 0 1.09375000006661 +1966080 0 0 0 0 1 0 0 0.09375 1 0 0 1.09375000017699 +1966080 0 0 0 0 2 0 0 0.09375 2 0 0 1.09375000000317 +1966080 0 0 0 0 3 0 0 0.09375 3 0 0 1.09375000000225 +1966080 0 0 0 0 4 0 0 0.09375 4 0 0 1.09374999999971 +1966080 0 0 0 0 5 0 0 0.09375 5 0 0 1.09375000000002 +1966080 0 0 0 0 6 0 0 0.09375 6 0 0 1.09375 +1966080 0 0 0 0 7 0 0 0.09375 7 0 0 1.09375 +1966080 0 0 0 0 8 0 0 0.09375 8 0 0 1.09375 +1966080 0 0 0 0 9 0 0 0.09375 9 0 0 1.09375 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 0 0 0.1 0 0 0 1.10000000009002 +2097152 0 0 0 0 1 0 0 0.1 1 0 0 1.10000000018839 +2097152 0 0 0 0 2 0 0 0.1 2 0 0 1.10000000000743 +2097152 0 0 0 0 3 0 0 0.1 3 0 0 1.10000000000268 +2097152 0 0 0 0 4 0 0 0.1 4 0 0 1.09999999999964 +2097152 0 0 0 0 5 0 0 0.1 5 0 0 1.10000000000003 +2097152 0 0 0 0 6 0 0 0.1 6 0 0 1.1 +2097152 0 0 0 0 7 0 0 0.1 7 0 0 1.1 +2097152 0 0 0 0 8 0 0 0.1 8 0 0 1.1 +2097152 0 0 0 0 9 0 0 0.1 9 0 0 1.1 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phi..asc b/Carpet/CarpetInterp/test/waveinterp/phi..asc new file mode 100644 index 000000000..18e004ed4 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi..asc @@ -0,0 +1,157 @@ +# WAVEMOL::phi (phi) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1.00625 + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.01875 + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.0312500000001 + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.043750000001 + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.05625000000452 + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.0687500000138 + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.08125000003301 + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.09375000006661 + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 + diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.average.asc b/Carpet/CarpetInterp/test/waveinterp/phi.average.asc new file mode 100644 index 000000000..bb0d142fb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.average.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00624999999997 +262144 0.0125 1.01249999999981 +393216 0.01875 1.01875000000027 +524288 0.025 1.02499999999997 +655360 0.03125 1.0312500000001 +786432 0.0375 1.0375000000003 +917504 0.04375 1.04374999999973 +1048576 0.05 1.05000000000041 +1179648 0.05625 1.05624999999989 +1310720 0.0625 1.0625000000002 +1441792 0.06875 1.06875000000054 +1572864 0.075 1.07499999999995 +1703936 0.08125 1.08125000000053 +1835008 0.0875 1.08749999999996 +1966080 0.09375 1.09375000000035 +2097152 0.1 1.10000000000075 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.count.asc b/Carpet/CarpetInterp/test/waveinterp/phi.count.asc new file mode 100644 index 000000000..b0a049d30 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.count.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000 +393216 0.01875 8000 +524288 0.025 8000 +655360 0.03125 8000 +786432 0.0375 8000 +917504 0.04375 8000 +1048576 0.05 8000 +1179648 0.05625 8000 +1310720 0.0625 8000 +1441792 0.06875 8000 +1572864 0.075 8000 +1703936 0.08125 8000 +1835008 0.0875 8000 +1966080 0.09375 8000 +2097152 0.1 8000 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.maximum.asc b/Carpet/CarpetInterp/test/waveinterp/phi.maximum.asc new file mode 100644 index 000000000..05ff51f58 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.maximum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00625 +262144 0.0125 1.01250000002619 +393216 0.01875 1.0187500000769 +524288 0.025 1.02500000012428 +655360 0.03125 1.03125000016692 +786432 0.0375 1.03750000020354 +917504 0.04375 1.04375000023321 +1048576 0.05 1.05000000025536 +1179648 0.05625 1.05625000026976 +1310720 0.0625 1.06250000027656 +1441792 0.06875 1.06875000027621 +1572864 0.075 1.07500000026946 +1703936 0.08125 1.08125000025726 +1835008 0.0875 1.0875000002511 +1966080 0.09375 1.09375000024647 +2097152 0.1 1.10000000025568 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.minimum.asc b/Carpet/CarpetInterp/test/waveinterp/phi.minimum.asc new file mode 100644 index 000000000..a8804e6f4 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.minimum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00625 +262144 0.0125 1.01249999999836 +393216 0.01875 1.01874999999554 +524288 0.025 1.02499999999139 +655360 0.03125 1.03124999998806 +786432 0.0375 1.03749999998538 +917504 0.04375 1.04374999998195 +1048576 0.05 1.04999999998336 +1179648 0.05625 1.05624999998289 +1310720 0.0625 1.06249999998278 +1441792 0.06875 1.0687499999816 +1572864 0.075 1.07499999997966 +1703936 0.08125 1.08124999997853 +1835008 0.0875 1.08749999997795 +1966080 0.09375 1.0937499999781 +2097152 0.1 1.09999999997878 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.norm1.asc b/Carpet/CarpetInterp/test/waveinterp/phi.norm1.asc new file mode 100644 index 000000000..bb0d142fb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.norm1.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00624999999997 +262144 0.0125 1.01249999999981 +393216 0.01875 1.01875000000027 +524288 0.025 1.02499999999997 +655360 0.03125 1.0312500000001 +786432 0.0375 1.0375000000003 +917504 0.04375 1.04374999999973 +1048576 0.05 1.05000000000041 +1179648 0.05625 1.05624999999989 +1310720 0.0625 1.0625000000002 +1441792 0.06875 1.06875000000054 +1572864 0.075 1.07499999999995 +1703936 0.08125 1.08125000000053 +1835008 0.0875 1.08749999999996 +1966080 0.09375 1.09375000000035 +2097152 0.1 1.10000000000075 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.norm2.asc b/Carpet/CarpetInterp/test/waveinterp/phi.norm2.asc new file mode 100644 index 000000000..ff855db49 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.norm2.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00624999999999 +262144 0.0125 1.0124999999999 +393216 0.01875 1.01874999999995 +524288 0.025 1.02500000000011 +655360 0.03125 1.03125000000009 +786432 0.0375 1.03750000000014 +917504 0.04375 1.04375000000001 +1048576 0.05 1.05000000000015 +1179648 0.05625 1.0562500000002 +1310720 0.0625 1.06250000000019 +1441792 0.06875 1.06875000000013 +1572864 0.075 1.0750000000003 +1703936 0.08125 1.08125000000028 +1835008 0.0875 1.08750000000024 +1966080 0.09375 1.09375000000033 +2097152 0.1 1.1000000000003 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.norm_inf.asc b/Carpet/CarpetInterp/test/waveinterp/phi.norm_inf.asc new file mode 100644 index 000000000..05ff51f58 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.norm_inf.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 1 +131072 0.00625 1.00625 +262144 0.0125 1.01250000002619 +393216 0.01875 1.0187500000769 +524288 0.025 1.02500000012428 +655360 0.03125 1.03125000016692 +786432 0.0375 1.03750000020354 +917504 0.04375 1.04375000023321 +1048576 0.05 1.05000000025536 +1179648 0.05625 1.05625000026976 +1310720 0.0625 1.06250000027656 +1441792 0.06875 1.06875000027621 +1572864 0.075 1.07500000026946 +1703936 0.08125 1.08125000025726 +1835008 0.0875 1.0875000002511 +1966080 0.09375 1.09375000024647 +2097152 0.1 1.10000000025568 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.sum.asc b/Carpet/CarpetInterp/test/waveinterp/phi.sum.asc new file mode 100644 index 000000000..040f427ea --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.sum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phi (phi) +# iteration time data +0 0 8000 +131072 0.00625 8049.99999999976 +262144 0.0125 8099.99999999852 +393216 0.01875 8150.00000000217 +524288 0.025 8199.99999999975 +655360 0.03125 8250.00000000083 +786432 0.0375 8300.00000000237 +917504 0.04375 8349.99999999786 +1048576 0.05 8400.0000000033 +1179648 0.05625 8449.99999999914 +1310720 0.0625 8500.00000000161 +1441792 0.06875 8550.00000000436 +1572864 0.075 8599.9999999996 +1703936 0.08125 8650.00000000424 +1835008 0.0875 8699.99999999966 +1966080 0.09375 8750.0000000028 +2097152 0.1 8800.00000000602 diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.x.asc b/Carpet/CarpetInterp/test/waveinterp/phi.x.asc new file mode 100644 index 000000000..a19b7f967 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.x.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phi x (phi) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 5242880 5242880 0 -1 0 0 1 +0 0 0 0 0 524288 5242880 5242880 0 -0.9 0 0 1 +0 0 0 0 0 1048576 5242880 5242880 0 -0.8 0 0 1 +0 0 0 0 0 1572864 5242880 5242880 0 -0.7 0 0 1 +0 0 0 0 0 2097152 5242880 5242880 0 -0.6 0 0 1 +0 0 0 0 0 2621440 5242880 5242880 0 -0.5 0 0 1 +0 0 0 0 0 3145728 5242880 5242880 0 -0.4 0 0 1 +0 0 0 0 0 3670016 5242880 5242880 0 -0.3 0 0 1 +0 0 0 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 0 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 0 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 0 0 0 6815744 5242880 5242880 0 0.3 0 0 1 +0 0 0 0 0 7340032 5242880 5242880 0 0.4 0 0 1 +0 0 0 0 0 7864320 5242880 5242880 0 0.5 0 0 1 +0 0 0 0 0 8388608 5242880 5242880 0 0.6 0 0 1 +0 0 0 0 0 8912896 5242880 5242880 0 0.7 0 0 1 +0 0 0 0 0 9437184 5242880 5242880 0 0.8 0 0 1 +0 0 0 0 0 9961472 5242880 5242880 0 0.9 0 0 1 +0 0 0 0 0 10485760 5242880 5242880 0 1 0 0 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 2621440 5242880 5242880 0 -0.5 0 0 1 +0 0 1 0 0 2883584 5242880 5242880 0 -0.45 0 0 1 +0 0 1 0 0 3145728 5242880 5242880 0 -0.4 0 0 1 +0 0 1 0 0 3407872 5242880 5242880 0 -0.35 0 0 1 +0 0 1 0 0 3670016 5242880 5242880 0 -0.3 0 0 1 +0 0 1 0 0 3932160 5242880 5242880 0 -0.25 0 0 1 +0 0 1 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 1 0 0 4456448 5242880 5242880 0 -0.15 0 0 1 +0 0 1 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 1 0 0 4980736 5242880 5242880 0 -0.05 0 0 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5505024 5242880 5242880 0 0.05 0 0 1 +0 0 1 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 1 0 0 6029312 5242880 5242880 0 0.15 0 0 1 +0 0 1 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 1 0 0 6553600 5242880 5242880 0 0.25 0 0 1 +0 0 1 0 0 6815744 5242880 5242880 0 0.3 0 0 1 +0 0 1 0 0 7077888 5242880 5242880 0 0.35 0 0 1 +0 0 1 0 0 7340032 5242880 5242880 0 0.4 0 0 1 +0 0 1 0 0 7602176 5242880 5242880 0 0.45 0 0 1 +0 0 1 0 0 7864320 5242880 5242880 0 0.5 0 0 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 3932160 5242880 5242880 0 -0.25 0 0 1 +0 0 2 0 0 4063232 5242880 5242880 0 -0.225 0 0 1 +0 0 2 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 2 0 0 4325376 5242880 5242880 0 -0.175 0 0 1 +0 0 2 0 0 4456448 5242880 5242880 0 -0.15 0 0 1 +0 0 2 0 0 4587520 5242880 5242880 0 -0.125 0 0 1 +0 0 2 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 2 0 0 4849664 5242880 5242880 0 -0.075 0 0 1 +0 0 2 0 0 4980736 5242880 5242880 0 -0.05 0 0 1 +0 0 2 0 0 5111808 5242880 5242880 0 -0.025 0 0 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5373952 5242880 5242880 0 0.025 0 0 1 +0 0 2 0 0 5505024 5242880 5242880 0 0.05 0 0 1 +0 0 2 0 0 5636096 5242880 5242880 0 0.075 0 0 1 +0 0 2 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 2 0 0 5898240 5242880 5242880 0 0.125 0 0 1 +0 0 2 0 0 6029312 5242880 5242880 0 0.15 0 0 1 +0 0 2 0 0 6160384 5242880 5242880 0 0.175 0 0 1 +0 0 2 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 2 0 0 6422528 5242880 5242880 0 0.225 0 0 1 +0 0 2 0 0 6553600 5242880 5242880 0 0.25 0 0 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 3932160 5242880 5242880 0.00625 -0.25 0 0 1.00625 +131072 0 2 0 0 4063232 5242880 5242880 0.00625 -0.225 0 0 1.00625 +131072 0 2 0 0 4194304 5242880 5242880 0.00625 -0.2 0 0 1.00625 +131072 0 2 0 0 4325376 5242880 5242880 0.00625 -0.175 0 0 1.00625 +131072 0 2 0 0 4456448 5242880 5242880 0.00625 -0.15 0 0 1.00625 +131072 0 2 0 0 4587520 5242880 5242880 0.00625 -0.125 0 0 1.00625 +131072 0 2 0 0 4718592 5242880 5242880 0.00625 -0.1 0 0 1.00625 +131072 0 2 0 0 4849664 5242880 5242880 0.00625 -0.075 0 0 1.00625 +131072 0 2 0 0 4980736 5242880 5242880 0.00625 -0.05 0 0 1.00625 +131072 0 2 0 0 5111808 5242880 5242880 0.00625 -0.025 0 0 1.00625 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1.00625 +131072 0 2 0 0 5373952 5242880 5242880 0.00625 0.025 0 0 1.00625 +131072 0 2 0 0 5505024 5242880 5242880 0.00625 0.05 0 0 1.00625 +131072 0 2 0 0 5636096 5242880 5242880 0.00625 0.075 0 0 1.00625 +131072 0 2 0 0 5767168 5242880 5242880 0.00625 0.1 0 0 1.00625 +131072 0 2 0 0 5898240 5242880 5242880 0.00625 0.125 0 0 1.00625 +131072 0 2 0 0 6029312 5242880 5242880 0.00625 0.15 0 0 1.00625 +131072 0 2 0 0 6160384 5242880 5242880 0.00625 0.175 0 0 1.00625 +131072 0 2 0 0 6291456 5242880 5242880 0.00625 0.2 0 0 1.00625 +131072 0 2 0 0 6422528 5242880 5242880 0.00625 0.225 0 0 1.00625 +131072 0 2 0 0 6553600 5242880 5242880 0.00625 0.25 0 0 1.00625 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 2621440 5242880 5242880 0.0125 -0.5 0 0 1.0125 +262144 0 1 0 0 2883584 5242880 5242880 0.0125 -0.45 0 0 1.0125 +262144 0 1 0 0 3145728 5242880 5242880 0.0125 -0.4 0 0 1.0125 +262144 0 1 0 0 3407872 5242880 5242880 0.0125 -0.35 0 0 1.0125 +262144 0 1 0 0 3670016 5242880 5242880 0.0125 -0.3 0 0 1.0125 +262144 0 1 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 1.0125 +262144 0 1 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 1.0125 +262144 0 1 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 1.0125 +262144 0 1 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 1.01250000000873 +262144 0 1 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 1.0125 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 1 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 1.0125 +262144 0 1 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 1.01250000000873 +262144 0 1 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 1.0125 +262144 0 1 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 1.0125 +262144 0 1 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 1.0125 +262144 0 1 0 0 6815744 5242880 5242880 0.0125 0.3 0 0 1.0125 +262144 0 1 0 0 7077888 5242880 5242880 0.0125 0.35 0 0 1.0125 +262144 0 1 0 0 7340032 5242880 5242880 0.0125 0.4 0 0 1.0125 +262144 0 1 0 0 7602176 5242880 5242880 0.0125 0.45 0 0 1.0125 +262144 0 1 0 0 7864320 5242880 5242880 0.0125 0.5 0 0 1.0125 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 1.0125 +262144 0 2 0 0 4063232 5242880 5242880 0.0125 -0.225 0 0 1.0125 +262144 0 2 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 1.0125 +262144 0 2 0 0 4325376 5242880 5242880 0.0125 -0.175 0 0 1.01249999999945 +262144 0 2 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 1.0125 +262144 0 2 0 0 4587520 5242880 5242880 0.0125 -0.125 0 0 1.01250000000491 +262144 0 2 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 1.01250000000873 +262144 0 2 0 0 4849664 5242880 5242880 0.0125 -0.075 0 0 1.0125 +262144 0 2 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 1.0125 +262144 0 2 0 0 5111808 5242880 5242880 0.0125 -0.025 0 0 1.0125 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 2 0 0 5373952 5242880 5242880 0.0125 0.025 0 0 1.0125 +262144 0 2 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 1.0125 +262144 0 2 0 0 5636096 5242880 5242880 0.0125 0.075 0 0 1.0125 +262144 0 2 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 1.01250000000873 +262144 0 2 0 0 5898240 5242880 5242880 0.0125 0.125 0 0 1.01250000000491 +262144 0 2 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 1.0125 +262144 0 2 0 0 6160384 5242880 5242880 0.0125 0.175 0 0 1.01249999999945 +262144 0 2 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 1.0125 +262144 0 2 0 0 6422528 5242880 5242880 0.0125 0.225 0 0 1.0125 +262144 0 2 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 1.0125 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 3932160 5242880 5242880 0.01875 -0.25 0 0 1.01875 +393216 0 2 0 0 4063232 5242880 5242880 0.01875 -0.225 0 0 1.01874999999964 +393216 0 2 0 0 4194304 5242880 5242880 0.01875 -0.2 0 0 1.01874999999937 +393216 0 2 0 0 4325376 5242880 5242880 0.01875 -0.175 0 0 1.01874999999822 +393216 0 2 0 0 4456448 5242880 5242880 0.01875 -0.15 0 0 1.01875000000001 +393216 0 2 0 0 4587520 5242880 5242880 0.01875 -0.125 0 0 1.01875000001291 +393216 0 2 0 0 4718592 5242880 5242880 0.01875 -0.1 0 0 1.01875000002589 +393216 0 2 0 0 4849664 5242880 5242880 0.01875 -0.075 0 0 1.01875 +393216 0 2 0 0 4980736 5242880 5242880 0.01875 -0.05 0 0 1.01875000000016 +393216 0 2 0 0 5111808 5242880 5242880 0.01875 -0.025 0 0 1.01875 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.01875 +393216 0 2 0 0 5373952 5242880 5242880 0.01875 0.025 0 0 1.01875 +393216 0 2 0 0 5505024 5242880 5242880 0.01875 0.05 0 0 1.01875000000016 +393216 0 2 0 0 5636096 5242880 5242880 0.01875 0.075 0 0 1.01875 +393216 0 2 0 0 5767168 5242880 5242880 0.01875 0.1 0 0 1.01875000002589 +393216 0 2 0 0 5898240 5242880 5242880 0.01875 0.125 0 0 1.01875000001291 +393216 0 2 0 0 6029312 5242880 5242880 0.01875 0.15 0 0 1.01875000000001 +393216 0 2 0 0 6160384 5242880 5242880 0.01875 0.175 0 0 1.01874999999822 +393216 0 2 0 0 6291456 5242880 5242880 0.01875 0.2 0 0 1.01874999999937 +393216 0 2 0 0 6422528 5242880 5242880 0.01875 0.225 0 0 1.01874999999964 +393216 0 2 0 0 6553600 5242880 5242880 0.01875 0.25 0 0 1.01875 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 5242880 5242880 0.025 -1 0 0 1.025 +524288 0 0 0 0 524288 5242880 5242880 0.025 -0.9 0 0 1.025 +524288 0 0 0 0 1048576 5242880 5242880 0.025 -0.8 0 0 1.025 +524288 0 0 0 0 1572864 5242880 5242880 0.025 -0.7 0 0 1.025 +524288 0 0 0 0 2097152 5242880 5242880 0.025 -0.6 0 0 1.025 +524288 0 0 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 1.025 +524288 0 0 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 1.025 +524288 0 0 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 1.025 +524288 0 0 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 1.02499999999832 +524288 0 0 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.02500000004247 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 0 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.02500000004247 +524288 0 0 0 0 6291456 5242880 5242880 0.025 0.2 0 0 1.02499999999832 +524288 0 0 0 0 6815744 5242880 5242880 0.025 0.3 0 0 1.025 +524288 0 0 0 0 7340032 5242880 5242880 0.025 0.4 0 0 1.025 +524288 0 0 0 0 7864320 5242880 5242880 0.025 0.5 0 0 1.025 +524288 0 0 0 0 8388608 5242880 5242880 0.025 0.6 0 0 1.025 +524288 0 0 0 0 8912896 5242880 5242880 0.025 0.7 0 0 1.025 +524288 0 0 0 0 9437184 5242880 5242880 0.025 0.8 0 0 1.025 +524288 0 0 0 0 9961472 5242880 5242880 0.025 0.9 0 0 1.025 +524288 0 0 0 0 10485760 5242880 5242880 0.025 1 0 0 1.025 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 1.025 +524288 0 1 0 0 2883584 5242880 5242880 0.025 -0.45 0 0 1.025 +524288 0 1 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 1.025 +524288 0 1 0 0 3407872 5242880 5242880 0.025 -0.35 0 0 1.02500000000011 +524288 0 1 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 1.025 +524288 0 1 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 1.0249999999964 +524288 0 1 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 1.02499999999832 +524288 0 1 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 1.02500000000003 +524288 0 1 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.02500000004247 +524288 0 1 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 1.02500000000073 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 1 0 0 5505024 5242880 5242880 0.025 0.05 0 0 1.02500000000073 +524288 0 1 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.02500000004247 +524288 0 1 0 0 6029312 5242880 5242880 0.025 0.15 0 0 1.02500000000003 +524288 0 1 0 0 6291456 5242880 5242880 0.025 0.2 0 0 1.02499999999832 +524288 0 1 0 0 6553600 5242880 5242880 0.025 0.25 0 0 1.0249999999964 +524288 0 1 0 0 6815744 5242880 5242880 0.025 0.3 0 0 1.025 +524288 0 1 0 0 7077888 5242880 5242880 0.025 0.35 0 0 1.02500000000011 +524288 0 1 0 0 7340032 5242880 5242880 0.025 0.4 0 0 1.025 +524288 0 1 0 0 7602176 5242880 5242880 0.025 0.45 0 0 1.025 +524288 0 1 0 0 7864320 5242880 5242880 0.025 0.5 0 0 1.025 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 1.0249999999964 +524288 0 2 0 0 4063232 5242880 5242880 0.025 -0.225 0 0 1.02499999999703 +524288 0 2 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 1.02499999999832 +524288 0 2 0 0 4325376 5242880 5242880 0.025 -0.175 0 0 1.02499999999664 +524288 0 2 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 1.02500000000003 +524288 0 2 0 0 4587520 5242880 5242880 0.025 -0.125 0 0 1.02500000002396 +524288 0 2 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.02500000004247 +524288 0 2 0 0 4849664 5242880 5242880 0.025 -0.075 0 0 1.02500000000014 +524288 0 2 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 1.02500000000073 +524288 0 2 0 0 5111808 5242880 5242880 0.025 -0.025 0 0 1.02500000000001 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 2 0 0 5373952 5242880 5242880 0.025 0.025 0 0 1.02500000000001 +524288 0 2 0 0 5505024 5242880 5242880 0.025 0.05 0 0 1.02500000000073 +524288 0 2 0 0 5636096 5242880 5242880 0.025 0.075 0 0 1.02500000000014 +524288 0 2 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.02500000004247 +524288 0 2 0 0 5898240 5242880 5242880 0.025 0.125 0 0 1.02500000002396 +524288 0 2 0 0 6029312 5242880 5242880 0.025 0.15 0 0 1.02500000000003 +524288 0 2 0 0 6160384 5242880 5242880 0.025 0.175 0 0 1.02499999999664 +524288 0 2 0 0 6291456 5242880 5242880 0.025 0.2 0 0 1.02499999999832 +524288 0 2 0 0 6422528 5242880 5242880 0.025 0.225 0 0 1.02499999999703 +524288 0 2 0 0 6553600 5242880 5242880 0.025 0.25 0 0 1.0249999999964 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 3932160 5242880 5242880 0.03125 -0.25 0 0 1.0312499999947 +655360 0 2 0 0 4063232 5242880 5242880 0.03125 -0.225 0 0 1.03124999999534 +655360 0 2 0 0 4194304 5242880 5242880 0.03125 -0.2 0 0 1.03124999999702 +655360 0 2 0 0 4325376 5242880 5242880 0.03125 -0.175 0 0 1.03124999999494 +655360 0 2 0 0 4456448 5242880 5242880 0.03125 -0.15 0 0 1.03124999999993 +655360 0 2 0 0 4587520 5242880 5242880 0.03125 -0.125 0 0 1.03125000003312 +655360 0 2 0 0 4718592 5242880 5242880 0.03125 -0.1 0 0 1.03125000005828 +655360 0 2 0 0 4849664 5242880 5242880 0.03125 -0.075 0 0 1.03125000000063 +655360 0 2 0 0 4980736 5242880 5242880 0.03125 -0.05 0 0 1.03125000000198 +655360 0 2 0 0 5111808 5242880 5242880 0.03125 -0.025 0 0 1.03125000000007 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.0312500000001 +655360 0 2 0 0 5373952 5242880 5242880 0.03125 0.025 0 0 1.03125000000007 +655360 0 2 0 0 5505024 5242880 5242880 0.03125 0.05 0 0 1.03125000000198 +655360 0 2 0 0 5636096 5242880 5242880 0.03125 0.075 0 0 1.03125000000063 +655360 0 2 0 0 5767168 5242880 5242880 0.03125 0.1 0 0 1.03125000005828 +655360 0 2 0 0 5898240 5242880 5242880 0.03125 0.125 0 0 1.03125000003312 +655360 0 2 0 0 6029312 5242880 5242880 0.03125 0.15 0 0 1.03124999999993 +655360 0 2 0 0 6160384 5242880 5242880 0.03125 0.175 0 0 1.03124999999494 +655360 0 2 0 0 6291456 5242880 5242880 0.03125 0.2 0 0 1.03124999999702 +655360 0 2 0 0 6422528 5242880 5242880 0.03125 0.225 0 0 1.03124999999534 +655360 0 2 0 0 6553600 5242880 5242880 0.03125 0.25 0 0 1.0312499999947 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 2621440 5242880 5242880 0.0375 -0.5 0 0 1.0375 +786432 0 1 0 0 2883584 5242880 5242880 0.0375 -0.45 0 0 1.03749999999999 +786432 0 1 0 0 3145728 5242880 5242880 0.0375 -0.4 0 0 1.03749999999999 +786432 0 1 0 0 3407872 5242880 5242880 0.0375 -0.35 0 0 1.03750000000033 +786432 0 1 0 0 3670016 5242880 5242880 0.0375 -0.3 0 0 1.03750000000009 +786432 0 1 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 1.03749999999307 +786432 0 1 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 1.03749999999542 +786432 0 1 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 1.03749999999975 +786432 0 1 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 1.0375000000732 +786432 0 1 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 1.03750000000421 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 1 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 1.03750000000421 +786432 0 1 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 1.0375000000732 +786432 0 1 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 1.03749999999975 +786432 0 1 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 1.03749999999542 +786432 0 1 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 1.03749999999307 +786432 0 1 0 0 6815744 5242880 5242880 0.0375 0.3 0 0 1.03750000000009 +786432 0 1 0 0 7077888 5242880 5242880 0.0375 0.35 0 0 1.03750000000033 +786432 0 1 0 0 7340032 5242880 5242880 0.0375 0.4 0 0 1.03749999999999 +786432 0 1 0 0 7602176 5242880 5242880 0.0375 0.45 0 0 1.03749999999999 +786432 0 1 0 0 7864320 5242880 5242880 0.0375 0.5 0 0 1.0375 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 1.03749999999307 +786432 0 2 0 0 4063232 5242880 5242880 0.0375 -0.225 0 0 1.03749999999353 +786432 0 2 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 1.03749999999542 +786432 0 2 0 0 4325376 5242880 5242880 0.0375 -0.175 0 0 1.03749999999314 +786432 0 2 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 1.03749999999975 +786432 0 2 0 0 4587520 5242880 5242880 0.0375 -0.125 0 0 1.03750000004106 +786432 0 2 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 1.0375000000732 +786432 0 2 0 0 4849664 5242880 5242880 0.0375 -0.075 0 0 1.03750000000169 +786432 0 2 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 1.03750000000421 +786432 0 2 0 0 5111808 5242880 5242880 0.0375 -0.025 0 0 1.03750000000026 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 2 0 0 5373952 5242880 5242880 0.0375 0.025 0 0 1.03750000000026 +786432 0 2 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 1.03750000000421 +786432 0 2 0 0 5636096 5242880 5242880 0.0375 0.075 0 0 1.03750000000169 +786432 0 2 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 1.0375000000732 +786432 0 2 0 0 5898240 5242880 5242880 0.0375 0.125 0 0 1.03750000004106 +786432 0 2 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 1.03749999999975 +786432 0 2 0 0 6160384 5242880 5242880 0.0375 0.175 0 0 1.03749999999314 +786432 0 2 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 1.03749999999542 +786432 0 2 0 0 6422528 5242880 5242880 0.0375 0.225 0 0 1.03749999999353 +786432 0 2 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 1.03749999999307 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 3932160 5242880 5242880 0.04375 -0.25 0 0 1.04374999999102 +917504 0 2 0 0 4063232 5242880 5242880 0.04375 -0.225 0 0 1.04374999999181 +917504 0 2 0 0 4194304 5242880 5242880 0.04375 -0.2 0 0 1.04374999999437 +917504 0 2 0 0 4325376 5242880 5242880 0.04375 -0.175 0 0 1.04374999999151 +917504 0 2 0 0 4456448 5242880 5242880 0.04375 -0.15 0 0 1.04374999999929 +917504 0 2 0 0 4587520 5242880 5242880 0.04375 -0.125 0 0 1.04375000004884 +917504 0 2 0 0 4718592 5242880 5242880 0.04375 -0.1 0 0 1.04375000008715 +917504 0 2 0 0 4849664 5242880 5242880 0.04375 -0.075 0 0 1.04375000000356 +917504 0 2 0 0 4980736 5242880 5242880 0.04375 -0.05 0 0 1.04375000000769 +917504 0 2 0 0 5111808 5242880 5242880 0.04375 -0.025 0 0 1.04375000000072 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.043750000001 +917504 0 2 0 0 5373952 5242880 5242880 0.04375 0.025 0 0 1.04375000000072 +917504 0 2 0 0 5505024 5242880 5242880 0.04375 0.05 0 0 1.04375000000769 +917504 0 2 0 0 5636096 5242880 5242880 0.04375 0.075 0 0 1.04375000000356 +917504 0 2 0 0 5767168 5242880 5242880 0.04375 0.1 0 0 1.04375000008715 +917504 0 2 0 0 5898240 5242880 5242880 0.04375 0.125 0 0 1.04375000004884 +917504 0 2 0 0 6029312 5242880 5242880 0.04375 0.15 0 0 1.04374999999929 +917504 0 2 0 0 6160384 5242880 5242880 0.04375 0.175 0 0 1.04374999999151 +917504 0 2 0 0 6291456 5242880 5242880 0.04375 0.2 0 0 1.04374999999437 +917504 0 2 0 0 6422528 5242880 5242880 0.04375 0.225 0 0 1.04374999999181 +917504 0 2 0 0 6553600 5242880 5242880 0.04375 0.25 0 0 1.04374999999102 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 5242880 5242880 0.05 -1 0 0 1.05 +1048576 0 0 0 0 524288 5242880 5242880 0.05 -0.9 0 0 1.05 +1048576 0 0 0 0 1048576 5242880 5242880 0.05 -0.8 0 0 1.05 +1048576 0 0 0 0 1572864 5242880 5242880 0.05 -0.7 0 0 1.05 +1048576 0 0 0 0 2097152 5242880 5242880 0.05 -0.6 0 0 1.05 +1048576 0 0 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 1.05 +1048576 0 0 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 1.04999999999998 +1048576 0 0 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 1.05000000000024 +1048576 0 0 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.04999999999358 +1048576 0 0 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.05000000010013 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 0 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.05000000010013 +1048576 0 0 0 0 6291456 5242880 5242880 0.05 0.2 0 0 1.04999999999358 +1048576 0 0 0 0 6815744 5242880 5242880 0.05 0.3 0 0 1.05000000000024 +1048576 0 0 0 0 7340032 5242880 5242880 0.05 0.4 0 0 1.04999999999998 +1048576 0 0 0 0 7864320 5242880 5242880 0.05 0.5 0 0 1.05 +1048576 0 0 0 0 8388608 5242880 5242880 0.05 0.6 0 0 1.05 +1048576 0 0 0 0 8912896 5242880 5242880 0.05 0.7 0 0 1.05 +1048576 0 0 0 0 9437184 5242880 5242880 0.05 0.8 0 0 1.05 +1048576 0 0 0 0 9961472 5242880 5242880 0.05 0.9 0 0 1.05 +1048576 0 0 0 0 10485760 5242880 5242880 0.05 1 0 0 1.05 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 1.05 +1048576 0 1 0 0 2883584 5242880 5242880 0.05 -0.45 0 0 1.04999999999998 +1048576 0 1 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 1.04999999999998 +1048576 0 1 0 0 3407872 5242880 5242880 0.05 -0.35 0 0 1.05000000000053 +1048576 0 1 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 1.05000000000024 +1048576 0 1 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 1.04999999999027 +1048576 0 1 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.04999999999358 +1048576 0 1 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 1.04999999999861 +1048576 0 1 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.05000000010013 +1048576 0 1 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 1.05000000001273 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 1 0 0 5505024 5242880 5242880 0.05 0.05 0 0 1.05000000001273 +1048576 0 1 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.05000000010013 +1048576 0 1 0 0 6029312 5242880 5242880 0.05 0.15 0 0 1.04999999999861 +1048576 0 1 0 0 6291456 5242880 5242880 0.05 0.2 0 0 1.04999999999358 +1048576 0 1 0 0 6553600 5242880 5242880 0.05 0.25 0 0 1.04999999999027 +1048576 0 1 0 0 6815744 5242880 5242880 0.05 0.3 0 0 1.05000000000024 +1048576 0 1 0 0 7077888 5242880 5242880 0.05 0.35 0 0 1.05000000000053 +1048576 0 1 0 0 7340032 5242880 5242880 0.05 0.4 0 0 1.04999999999998 +1048576 0 1 0 0 7602176 5242880 5242880 0.05 0.45 0 0 1.04999999999998 +1048576 0 1 0 0 7864320 5242880 5242880 0.05 0.5 0 0 1.05 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 1.04999999999027 +1048576 0 2 0 0 4063232 5242880 5242880 0.05 -0.225 0 0 1.04999999999099 +1048576 0 2 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.04999999999358 +1048576 0 2 0 0 4325376 5242880 5242880 0.05 -0.175 0 0 1.04999999998996 +1048576 0 2 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 1.04999999999861 +1048576 0 2 0 0 4587520 5242880 5242880 0.05 -0.125 0 0 1.05000000005515 +1048576 0 2 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.05000000010013 +1048576 0 2 0 0 4849664 5242880 5242880 0.05 -0.075 0 0 1.0500000000065 +1048576 0 2 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 1.05000000001273 +1048576 0 2 0 0 5111808 5242880 5242880 0.05 -0.025 0 0 1.05000000000165 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 2 0 0 5373952 5242880 5242880 0.05 0.025 0 0 1.05000000000165 +1048576 0 2 0 0 5505024 5242880 5242880 0.05 0.05 0 0 1.05000000001273 +1048576 0 2 0 0 5636096 5242880 5242880 0.05 0.075 0 0 1.0500000000065 +1048576 0 2 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.05000000010013 +1048576 0 2 0 0 5898240 5242880 5242880 0.05 0.125 0 0 1.05000000005515 +1048576 0 2 0 0 6029312 5242880 5242880 0.05 0.15 0 0 1.04999999999861 +1048576 0 2 0 0 6160384 5242880 5242880 0.05 0.175 0 0 1.04999999998996 +1048576 0 2 0 0 6291456 5242880 5242880 0.05 0.2 0 0 1.04999999999358 +1048576 0 2 0 0 6422528 5242880 5242880 0.05 0.225 0 0 1.04999999999099 +1048576 0 2 0 0 6553600 5242880 5242880 0.05 0.25 0 0 1.04999999999027 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 3932160 5242880 5242880 0.05625 -0.25 0 0 1.05624999998901 +1179648 0 2 0 0 4063232 5242880 5242880 0.05625 -0.225 0 0 1.05624999999015 +1179648 0 2 0 0 4194304 5242880 5242880 0.05625 -0.2 0 0 1.05624999999326 +1179648 0 2 0 0 4325376 5242880 5242880 0.05625 -0.175 0 0 1.05624999998853 +1179648 0 2 0 0 4456448 5242880 5242880 0.05625 -0.15 0 0 1.05624999999763 +1179648 0 2 0 0 4587520 5242880 5242880 0.05625 -0.125 0 0 1.05625000006123 +1179648 0 2 0 0 4718592 5242880 5242880 0.05625 -0.1 0 0 1.05625000011224 +1179648 0 2 0 0 4849664 5242880 5242880 0.05625 -0.075 0 0 1.05625000001079 +1179648 0 2 0 0 4980736 5242880 5242880 0.05625 -0.05 0 0 1.05625000001963 +1179648 0 2 0 0 5111808 5242880 5242880 0.05625 -0.025 0 0 1.05625000000332 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.05625000000452 +1179648 0 2 0 0 5373952 5242880 5242880 0.05625 0.025 0 0 1.05625000000332 +1179648 0 2 0 0 5505024 5242880 5242880 0.05625 0.05 0 0 1.05625000001963 +1179648 0 2 0 0 5636096 5242880 5242880 0.05625 0.075 0 0 1.05625000001079 +1179648 0 2 0 0 5767168 5242880 5242880 0.05625 0.1 0 0 1.05625000011224 +1179648 0 2 0 0 5898240 5242880 5242880 0.05625 0.125 0 0 1.05625000006123 +1179648 0 2 0 0 6029312 5242880 5242880 0.05625 0.15 0 0 1.05624999999763 +1179648 0 2 0 0 6160384 5242880 5242880 0.05625 0.175 0 0 1.05624999998853 +1179648 0 2 0 0 6291456 5242880 5242880 0.05625 0.2 0 0 1.05624999999326 +1179648 0 2 0 0 6422528 5242880 5242880 0.05625 0.225 0 0 1.05624999999015 +1179648 0 2 0 0 6553600 5242880 5242880 0.05625 0.25 0 0 1.05624999998901 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 2621440 5242880 5242880 0.0625 -0.5 0 0 1.0625 +1310720 0 1 0 0 2883584 5242880 5242880 0.0625 -0.45 0 0 1.06249999999993 +1310720 0 1 0 0 3145728 5242880 5242880 0.0625 -0.4 0 0 1.06249999999994 +1310720 0 1 0 0 3407872 5242880 5242880 0.0625 -0.35 0 0 1.06250000000083 +1310720 0 1 0 0 3670016 5242880 5242880 0.0625 -0.3 0 0 1.06250000000062 +1310720 0 1 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 1.06249999998785 +1310720 0 1 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.06249999999333 +1310720 0 1 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 1.06249999999637 +1310720 0 1 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 1.06250000012362 +1310720 0 1 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 1.06250000002869 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 1 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 1.06250000002869 +1310720 0 1 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 1.06250000012362 +1310720 0 1 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 1.06249999999637 +1310720 0 1 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 1.06249999999333 +1310720 0 1 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 1.06249999998785 +1310720 0 1 0 0 6815744 5242880 5242880 0.0625 0.3 0 0 1.06250000000062 +1310720 0 1 0 0 7077888 5242880 5242880 0.0625 0.35 0 0 1.06250000000083 +1310720 0 1 0 0 7340032 5242880 5242880 0.0625 0.4 0 0 1.06249999999994 +1310720 0 1 0 0 7602176 5242880 5242880 0.0625 0.45 0 0 1.06249999999993 +1310720 0 1 0 0 7864320 5242880 5242880 0.0625 0.5 0 0 1.0625 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 1.06249999998785 +1310720 0 2 0 0 4063232 5242880 5242880 0.0625 -0.225 0 0 1.0624999999896 +1310720 0 2 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.06249999999333 +1310720 0 2 0 0 4325376 5242880 5242880 0.0625 -0.175 0 0 1.06249999998724 +1310720 0 2 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 1.06249999999637 +1310720 0 2 0 0 4587520 5242880 5242880 0.0625 -0.125 0 0 1.06250000006612 +1310720 0 2 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 1.06250000012362 +1310720 0 2 0 0 4849664 5242880 5242880 0.0625 -0.075 0 0 1.06250000001668 +1310720 0 2 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 1.06250000002869 +1310720 0 2 0 0 5111808 5242880 5242880 0.0625 -0.025 0 0 1.06250000000608 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 2 0 0 5373952 5242880 5242880 0.0625 0.025 0 0 1.06250000000608 +1310720 0 2 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 1.06250000002869 +1310720 0 2 0 0 5636096 5242880 5242880 0.0625 0.075 0 0 1.06250000001668 +1310720 0 2 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 1.06250000012362 +1310720 0 2 0 0 5898240 5242880 5242880 0.0625 0.125 0 0 1.06250000006612 +1310720 0 2 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 1.06249999999637 +1310720 0 2 0 0 6160384 5242880 5242880 0.0625 0.175 0 0 1.06249999998724 +1310720 0 2 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 1.06249999999333 +1310720 0 2 0 0 6422528 5242880 5242880 0.0625 0.225 0 0 1.0624999999896 +1310720 0 2 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 1.06249999998785 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 3932160 5242880 5242880 0.06875 -0.25 0 0 1.06874999998681 +1441792 0 2 0 0 4063232 5242880 5242880 0.06875 -0.225 0 0 1.06874999998947 +1441792 0 2 0 0 4194304 5242880 5242880 0.06875 -0.2 0 0 1.068749999994 +1441792 0 2 0 0 4325376 5242880 5242880 0.06875 -0.175 0 0 1.06874999998618 +1441792 0 2 0 0 4456448 5242880 5242880 0.06875 -0.15 0 0 1.06874999999489 +1441792 0 2 0 0 4587520 5242880 5242880 0.06875 -0.125 0 0 1.06875000007061 +1441792 0 2 0 0 4718592 5242880 5242880 0.06875 -0.1 0 0 1.06875000013445 +1441792 0 2 0 0 4849664 5242880 5242880 0.06875 -0.075 0 0 1.06875000002444 +1441792 0 2 0 0 4980736 5242880 5242880 0.06875 -0.05 0 0 1.06875000004019 +1441792 0 2 0 0 5111808 5242880 5242880 0.06875 -0.025 0 0 1.0687500000103 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.0687500000138 +1441792 0 2 0 0 5373952 5242880 5242880 0.06875 0.025 0 0 1.0687500000103 +1441792 0 2 0 0 5505024 5242880 5242880 0.06875 0.05 0 0 1.06875000004019 +1441792 0 2 0 0 5636096 5242880 5242880 0.06875 0.075 0 0 1.06875000002444 +1441792 0 2 0 0 5767168 5242880 5242880 0.06875 0.1 0 0 1.06875000013445 +1441792 0 2 0 0 5898240 5242880 5242880 0.06875 0.125 0 0 1.06875000007061 +1441792 0 2 0 0 6029312 5242880 5242880 0.06875 0.15 0 0 1.06874999999489 +1441792 0 2 0 0 6160384 5242880 5242880 0.06875 0.175 0 0 1.06874999998618 +1441792 0 2 0 0 6291456 5242880 5242880 0.06875 0.2 0 0 1.068749999994 +1441792 0 2 0 0 6422528 5242880 5242880 0.06875 0.225 0 0 1.06874999998947 +1441792 0 2 0 0 6553600 5242880 5242880 0.06875 0.25 0 0 1.06874999998681 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 5242880 5242880 0.075 -1 0 0 1.075 +1572864 0 0 0 0 524288 5242880 5242880 0.075 -0.9 0 0 1.075 +1572864 0 0 0 0 1048576 5242880 5242880 0.075 -0.8 0 0 1.075 +1572864 0 0 0 0 1572864 5242880 5242880 0.075 -0.7 0 0 1.075 +1572864 0 0 0 0 2097152 5242880 5242880 0.075 -0.6 0 0 1.075 +1572864 0 0 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 1.075 +1572864 0 0 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 1.07499999999987 +1572864 0 0 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 1.07500000000118 +1572864 0 0 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.07499999999519 +1572864 0 0 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.07500000014499 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 0 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.07500000014499 +1572864 0 0 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.07499999999519 +1572864 0 0 0 0 6815744 5242880 5242880 0.075 0.3 0 0 1.07500000000118 +1572864 0 0 0 0 7340032 5242880 5242880 0.075 0.4 0 0 1.07499999999987 +1572864 0 0 0 0 7864320 5242880 5242880 0.075 0.5 0 0 1.075 +1572864 0 0 0 0 8388608 5242880 5242880 0.075 0.6 0 0 1.075 +1572864 0 0 0 0 8912896 5242880 5242880 0.075 0.7 0 0 1.075 +1572864 0 0 0 0 9437184 5242880 5242880 0.075 0.8 0 0 1.075 +1572864 0 0 0 0 9961472 5242880 5242880 0.075 0.9 0 0 1.075 +1572864 0 0 0 0 10485760 5242880 5242880 0.075 1 0 0 1.075 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 1.075 +1572864 0 1 0 0 2883584 5242880 5242880 0.075 -0.45 0 0 1.07499999999986 +1572864 0 1 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 1.07499999999987 +1572864 0 1 0 0 3407872 5242880 5242880 0.075 -0.35 0 0 1.07500000000089 +1572864 0 1 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 1.07500000000118 +1572864 0 1 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 1.0749999999889 +1572864 0 1 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.07499999999519 +1572864 0 1 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 1.07499999999316 +1572864 0 1 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.07500000014499 +1572864 0 1 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 1.0750000000544 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 1 0 0 5505024 5242880 5242880 0.075 0.05 0 0 1.0750000000544 +1572864 0 1 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.07500000014499 +1572864 0 1 0 0 6029312 5242880 5242880 0.075 0.15 0 0 1.07499999999316 +1572864 0 1 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.07499999999519 +1572864 0 1 0 0 6553600 5242880 5242880 0.075 0.25 0 0 1.0749999999889 +1572864 0 1 0 0 6815744 5242880 5242880 0.075 0.3 0 0 1.07500000000118 +1572864 0 1 0 0 7077888 5242880 5242880 0.075 0.35 0 0 1.07500000000089 +1572864 0 1 0 0 7340032 5242880 5242880 0.075 0.4 0 0 1.07499999999987 +1572864 0 1 0 0 7602176 5242880 5242880 0.075 0.45 0 0 1.07499999999986 +1572864 0 1 0 0 7864320 5242880 5242880 0.075 0.5 0 0 1.075 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 1.0749999999889 +1572864 0 2 0 0 4063232 5242880 5242880 0.075 -0.225 0 0 1.07499999999141 +1572864 0 2 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.07499999999519 +1572864 0 2 0 0 4325376 5242880 5242880 0.075 -0.175 0 0 1.07499999998508 +1572864 0 2 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 1.07499999999316 +1572864 0 2 0 0 4587520 5242880 5242880 0.075 -0.125 0 0 1.0750000000746 +1572864 0 2 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.07500000014499 +1572864 0 2 0 0 4849664 5242880 5242880 0.075 -0.075 0 0 1.07500000003426 +1572864 0 2 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 1.0750000000544 +1572864 0 2 0 0 5111808 5242880 5242880 0.075 -0.025 0 0 1.07500000001642 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 2 0 0 5373952 5242880 5242880 0.075 0.025 0 0 1.07500000001642 +1572864 0 2 0 0 5505024 5242880 5242880 0.075 0.05 0 0 1.0750000000544 +1572864 0 2 0 0 5636096 5242880 5242880 0.075 0.075 0 0 1.07500000003426 +1572864 0 2 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.07500000014499 +1572864 0 2 0 0 5898240 5242880 5242880 0.075 0.125 0 0 1.0750000000746 +1572864 0 2 0 0 6029312 5242880 5242880 0.075 0.15 0 0 1.07499999999316 +1572864 0 2 0 0 6160384 5242880 5242880 0.075 0.175 0 0 1.07499999998508 +1572864 0 2 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.07499999999519 +1572864 0 2 0 0 6422528 5242880 5242880 0.075 0.225 0 0 1.07499999999141 +1572864 0 2 0 0 6553600 5242880 5242880 0.075 0.25 0 0 1.0749999999889 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 3932160 5242880 5242880 0.08125 -0.25 0 0 1.08124999998915 +1703936 0 2 0 0 4063232 5242880 5242880 0.08125 -0.225 0 0 1.08124999999272 +1703936 0 2 0 0 4194304 5242880 5242880 0.08125 -0.2 0 0 1.08124999999712 +1703936 0 2 0 0 4325376 5242880 5242880 0.08125 -0.175 0 0 1.08124999998455 +1703936 0 2 0 0 4456448 5242880 5242880 0.08125 -0.15 0 0 1.08124999999139 +1703936 0 2 0 0 4587520 5242880 5242880 0.08125 -0.125 0 0 1.08125000007798 +1703936 0 2 0 0 4718592 5242880 5242880 0.08125 -0.1 0 0 1.08125000015544 +1703936 0 2 0 0 4849664 5242880 5242880 0.08125 -0.075 0 0 1.08125000004629 +1703936 0 2 0 0 4980736 5242880 5242880 0.08125 -0.05 0 0 1.08125000007153 +1703936 0 2 0 0 5111808 5242880 5242880 0.08125 -0.025 0 0 1.08125000002489 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.08125000003301 +1703936 0 2 0 0 5373952 5242880 5242880 0.08125 0.025 0 0 1.08125000002489 +1703936 0 2 0 0 5505024 5242880 5242880 0.08125 0.05 0 0 1.08125000007153 +1703936 0 2 0 0 5636096 5242880 5242880 0.08125 0.075 0 0 1.08125000004629 +1703936 0 2 0 0 5767168 5242880 5242880 0.08125 0.1 0 0 1.08125000015544 +1703936 0 2 0 0 5898240 5242880 5242880 0.08125 0.125 0 0 1.08125000007798 +1703936 0 2 0 0 6029312 5242880 5242880 0.08125 0.15 0 0 1.08124999999139 +1703936 0 2 0 0 6160384 5242880 5242880 0.08125 0.175 0 0 1.08124999998455 +1703936 0 2 0 0 6291456 5242880 5242880 0.08125 0.2 0 0 1.08124999999712 +1703936 0 2 0 0 6422528 5242880 5242880 0.08125 0.225 0 0 1.08124999999272 +1703936 0 2 0 0 6553600 5242880 5242880 0.08125 0.25 0 0 1.08124999998915 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 2621440 5242880 5242880 0.0875 -0.5 0 0 1.08750000000001 +1835008 0 1 0 0 2883584 5242880 5242880 0.0875 -0.45 0 0 1.08749999999976 +1835008 0 1 0 0 3145728 5242880 5242880 0.0875 -0.4 0 0 1.08749999999977 +1835008 0 1 0 0 3407872 5242880 5242880 0.0875 -0.35 0 0 1.08750000000108 +1835008 0 1 0 0 3670016 5242880 5242880 0.0875 -0.3 0 0 1.08750000000186 +1835008 0 1 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.0874999999892 +1835008 0 1 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 1.08749999999972 +1835008 0 1 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 1.08749999998951 +1835008 0 1 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 1.08750000016605 +1835008 0 1 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 1.08750000009175 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 1 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 1.08750000009175 +1835008 0 1 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 1.08750000016605 +1835008 0 1 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 1.08749999998951 +1835008 0 1 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 1.08749999999972 +1835008 0 1 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 1.0874999999892 +1835008 0 1 0 0 6815744 5242880 5242880 0.0875 0.3 0 0 1.08750000000186 +1835008 0 1 0 0 7077888 5242880 5242880 0.0875 0.35 0 0 1.08750000000108 +1835008 0 1 0 0 7340032 5242880 5242880 0.0875 0.4 0 0 1.08749999999977 +1835008 0 1 0 0 7602176 5242880 5242880 0.0875 0.45 0 0 1.08749999999976 +1835008 0 1 0 0 7864320 5242880 5242880 0.0875 0.5 0 0 1.08750000000001 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.0874999999892 +1835008 0 2 0 0 4063232 5242880 5242880 0.0875 -0.225 0 0 1.08749999999431 +1835008 0 2 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 1.08749999999972 +1835008 0 2 0 0 4325376 5242880 5242880 0.0875 -0.175 0 0 1.08749999998424 +1835008 0 2 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 1.08749999998951 +1835008 0 2 0 0 4587520 5242880 5242880 0.0875 -0.125 0 0 1.08750000008179 +1835008 0 2 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 1.08750000016605 +1835008 0 2 0 0 4849664 5242880 5242880 0.0875 -0.075 0 0 1.08750000006059 +1835008 0 2 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 1.08750000009175 +1835008 0 2 0 0 5111808 5242880 5242880 0.0875 -0.025 0 0 1.08750000003613 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 2 0 0 5373952 5242880 5242880 0.0875 0.025 0 0 1.08750000003613 +1835008 0 2 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 1.08750000009175 +1835008 0 2 0 0 5636096 5242880 5242880 0.0875 0.075 0 0 1.08750000006059 +1835008 0 2 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 1.08750000016605 +1835008 0 2 0 0 5898240 5242880 5242880 0.0875 0.125 0 0 1.08750000008179 +1835008 0 2 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 1.08749999998951 +1835008 0 2 0 0 6160384 5242880 5242880 0.0875 0.175 0 0 1.08749999998424 +1835008 0 2 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 1.08749999999972 +1835008 0 2 0 0 6422528 5242880 5242880 0.0875 0.225 0 0 1.08749999999431 +1835008 0 2 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 1.0874999999892 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 3932160 5242880 5242880 0.09375 -0.25 0 0 1.0937499999896 +1966080 0 2 0 0 4063232 5242880 5242880 0.09375 -0.225 0 0 1.09374999999655 +1966080 0 2 0 0 4194304 5242880 5242880 0.09375 -0.2 0 0 1.09375000000317 +1966080 0 2 0 0 4325376 5242880 5242880 0.09375 -0.175 0 0 1.09374999998465 +1966080 0 2 0 0 4456448 5242880 5242880 0.09375 -0.15 0 0 1.0937499999879 +1966080 0 2 0 0 4587520 5242880 5242880 0.09375 -0.125 0 0 1.09375000008476 +1966080 0 2 0 0 4718592 5242880 5242880 0.09375 -0.1 0 0 1.09375000017699 +1966080 0 2 0 0 4849664 5242880 5242880 0.09375 -0.075 0 0 1.09375000007712 +1966080 0 2 0 0 4980736 5242880 5242880 0.09375 -0.05 0 0 1.09375000011513 +1966080 0 2 0 0 5111808 5242880 5242880 0.09375 -0.025 0 0 1.09375000005053 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.09375000006661 +1966080 0 2 0 0 5373952 5242880 5242880 0.09375 0.025 0 0 1.09375000005053 +1966080 0 2 0 0 5505024 5242880 5242880 0.09375 0.05 0 0 1.09375000011513 +1966080 0 2 0 0 5636096 5242880 5242880 0.09375 0.075 0 0 1.09375000007712 +1966080 0 2 0 0 5767168 5242880 5242880 0.09375 0.1 0 0 1.09375000017699 +1966080 0 2 0 0 5898240 5242880 5242880 0.09375 0.125 0 0 1.09375000008476 +1966080 0 2 0 0 6029312 5242880 5242880 0.09375 0.15 0 0 1.0937499999879 +1966080 0 2 0 0 6160384 5242880 5242880 0.09375 0.175 0 0 1.09374999998465 +1966080 0 2 0 0 6291456 5242880 5242880 0.09375 0.2 0 0 1.09375000000317 +1966080 0 2 0 0 6422528 5242880 5242880 0.09375 0.225 0 0 1.09374999999655 +1966080 0 2 0 0 6553600 5242880 5242880 0.09375 0.25 0 0 1.0937499999896 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 5242880 5242880 0.1 -1 0 0 1.1 +2097152 0 0 0 0 524288 5242880 5242880 0.1 -0.9 0 0 1.1 +2097152 0 0 0 0 1048576 5242880 5242880 0.1 -0.8 0 0 1.1 +2097152 0 0 0 0 1572864 5242880 5242880 0.1 -0.7 0 0 1.1 +2097152 0 0 0 0 2097152 5242880 5242880 0.1 -0.6 0 0 1.1 +2097152 0 0 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 1.10000000000003 +2097152 0 0 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 1.09999999999964 +2097152 0 0 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 1.10000000000268 +2097152 0 0 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.10000000000743 +2097152 0 0 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.10000000018839 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 0 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.10000000018839 +2097152 0 0 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.10000000000743 +2097152 0 0 0 0 6815744 5242880 5242880 0.1 0.3 0 0 1.10000000000268 +2097152 0 0 0 0 7340032 5242880 5242880 0.1 0.4 0 0 1.09999999999964 +2097152 0 0 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.10000000000003 +2097152 0 0 0 0 8388608 5242880 5242880 0.1 0.6 0 0 1.1 +2097152 0 0 0 0 8912896 5242880 5242880 0.1 0.7 0 0 1.1 +2097152 0 0 0 0 9437184 5242880 5242880 0.1 0.8 0 0 1.1 +2097152 0 0 0 0 9961472 5242880 5242880 0.1 0.9 0 0 1.1 +2097152 0 0 0 0 10485760 5242880 5242880 0.1 1 0 0 1.1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 1.10000000000003 +2097152 0 1 0 0 2883584 5242880 5242880 0.1 -0.45 0 0 1.09999999999964 +2097152 0 1 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 1.09999999999964 +2097152 0 1 0 0 3407872 5242880 5242880 0.1 -0.35 0 0 1.10000000000084 +2097152 0 1 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 1.10000000000268 +2097152 0 1 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 1.09999999999394 +2097152 0 1 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.10000000000743 +2097152 0 1 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 1.09999999998642 +2097152 0 1 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.10000000018839 +2097152 0 1 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 1.10000000014165 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 1 0 0 5505024 5242880 5242880 0.1 0.05 0 0 1.10000000014165 +2097152 0 1 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.10000000018839 +2097152 0 1 0 0 6029312 5242880 5242880 0.1 0.15 0 0 1.09999999998642 +2097152 0 1 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.10000000000743 +2097152 0 1 0 0 6553600 5242880 5242880 0.1 0.25 0 0 1.09999999999394 +2097152 0 1 0 0 6815744 5242880 5242880 0.1 0.3 0 0 1.10000000000268 +2097152 0 1 0 0 7077888 5242880 5242880 0.1 0.35 0 0 1.10000000000084 +2097152 0 1 0 0 7340032 5242880 5242880 0.1 0.4 0 0 1.09999999999964 +2097152 0 1 0 0 7602176 5242880 5242880 0.1 0.45 0 0 1.09999999999964 +2097152 0 1 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.10000000000003 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 1.09999999999394 +2097152 0 2 0 0 4063232 5242880 5242880 0.1 -0.225 0 0 1.10000000000145 +2097152 0 2 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.10000000000743 +2097152 0 2 0 0 4325376 5242880 5242880 0.1 -0.175 0 0 1.09999999998514 +2097152 0 2 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 1.09999999998642 +2097152 0 2 0 0 4587520 5242880 5242880 0.1 -0.125 0 0 1.10000000008901 +2097152 0 2 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.10000000018839 +2097152 0 2 0 0 4849664 5242880 5242880 0.1 -0.075 0 0 1.10000000009574 +2097152 0 2 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 1.10000000014165 +2097152 0 2 0 0 5111808 5242880 5242880 0.1 -0.025 0 0 1.1000000000684 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 2 0 0 5373952 5242880 5242880 0.1 0.025 0 0 1.1000000000684 +2097152 0 2 0 0 5505024 5242880 5242880 0.1 0.05 0 0 1.10000000014165 +2097152 0 2 0 0 5636096 5242880 5242880 0.1 0.075 0 0 1.10000000009574 +2097152 0 2 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.10000000018839 +2097152 0 2 0 0 5898240 5242880 5242880 0.1 0.125 0 0 1.10000000008901 +2097152 0 2 0 0 6029312 5242880 5242880 0.1 0.15 0 0 1.09999999998642 +2097152 0 2 0 0 6160384 5242880 5242880 0.1 0.175 0 0 1.09999999998514 +2097152 0 2 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.10000000000743 +2097152 0 2 0 0 6422528 5242880 5242880 0.1 0.225 0 0 1.10000000000145 +2097152 0 2 0 0 6553600 5242880 5242880 0.1 0.25 0 0 1.09999999999394 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.y.asc b/Carpet/CarpetInterp/test/waveinterp/phi.y.asc new file mode 100644 index 000000000..32ed70f3b --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.y.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phi y (phi) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 0 5242880 0 0 -1 0 1 +0 0 0 0 0 5242880 524288 5242880 0 0 -0.9 0 1 +0 0 0 0 0 5242880 1048576 5242880 0 0 -0.8 0 1 +0 0 0 0 0 5242880 1572864 5242880 0 0 -0.7 0 1 +0 0 0 0 0 5242880 2097152 5242880 0 0 -0.6 0 1 +0 0 0 0 0 5242880 2621440 5242880 0 0 -0.5 0 1 +0 0 0 0 0 5242880 3145728 5242880 0 0 -0.4 0 1 +0 0 0 0 0 5242880 3670016 5242880 0 0 -0.3 0 1 +0 0 0 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 0 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 0 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 0 0 0 5242880 6815744 5242880 0 0 0.3 0 1 +0 0 0 0 0 5242880 7340032 5242880 0 0 0.4 0 1 +0 0 0 0 0 5242880 7864320 5242880 0 0 0.5 0 1 +0 0 0 0 0 5242880 8388608 5242880 0 0 0.6 0 1 +0 0 0 0 0 5242880 8912896 5242880 0 0 0.7 0 1 +0 0 0 0 0 5242880 9437184 5242880 0 0 0.8 0 1 +0 0 0 0 0 5242880 9961472 5242880 0 0 0.9 0 1 +0 0 0 0 0 5242880 10485760 5242880 0 0 1 0 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 2621440 5242880 0 0 -0.5 0 1 +0 0 1 0 0 5242880 2883584 5242880 0 0 -0.45 0 1 +0 0 1 0 0 5242880 3145728 5242880 0 0 -0.4 0 1 +0 0 1 0 0 5242880 3407872 5242880 0 0 -0.35 0 1 +0 0 1 0 0 5242880 3670016 5242880 0 0 -0.3 0 1 +0 0 1 0 0 5242880 3932160 5242880 0 0 -0.25 0 1 +0 0 1 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 1 0 0 5242880 4456448 5242880 0 0 -0.15 0 1 +0 0 1 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 1 0 0 5242880 4980736 5242880 0 0 -0.05 0 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5242880 5505024 5242880 0 0 0.05 0 1 +0 0 1 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 1 0 0 5242880 6029312 5242880 0 0 0.15 0 1 +0 0 1 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 1 0 0 5242880 6553600 5242880 0 0 0.25 0 1 +0 0 1 0 0 5242880 6815744 5242880 0 0 0.3 0 1 +0 0 1 0 0 5242880 7077888 5242880 0 0 0.35 0 1 +0 0 1 0 0 5242880 7340032 5242880 0 0 0.4 0 1 +0 0 1 0 0 5242880 7602176 5242880 0 0 0.45 0 1 +0 0 1 0 0 5242880 7864320 5242880 0 0 0.5 0 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 3932160 5242880 0 0 -0.25 0 1 +0 0 2 0 0 5242880 4063232 5242880 0 0 -0.225 0 1 +0 0 2 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 2 0 0 5242880 4325376 5242880 0 0 -0.175 0 1 +0 0 2 0 0 5242880 4456448 5242880 0 0 -0.15 0 1 +0 0 2 0 0 5242880 4587520 5242880 0 0 -0.125 0 1 +0 0 2 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 2 0 0 5242880 4849664 5242880 0 0 -0.075 0 1 +0 0 2 0 0 5242880 4980736 5242880 0 0 -0.05 0 1 +0 0 2 0 0 5242880 5111808 5242880 0 0 -0.025 0 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5242880 5373952 5242880 0 0 0.025 0 1 +0 0 2 0 0 5242880 5505024 5242880 0 0 0.05 0 1 +0 0 2 0 0 5242880 5636096 5242880 0 0 0.075 0 1 +0 0 2 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 2 0 0 5242880 5898240 5242880 0 0 0.125 0 1 +0 0 2 0 0 5242880 6029312 5242880 0 0 0.15 0 1 +0 0 2 0 0 5242880 6160384 5242880 0 0 0.175 0 1 +0 0 2 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 2 0 0 5242880 6422528 5242880 0 0 0.225 0 1 +0 0 2 0 0 5242880 6553600 5242880 0 0 0.25 0 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 3932160 5242880 0.00625 0 -0.25 0 1.00625 +131072 0 2 0 0 5242880 4063232 5242880 0.00625 0 -0.225 0 1.00625 +131072 0 2 0 0 5242880 4194304 5242880 0.00625 0 -0.2 0 1.00625 +131072 0 2 0 0 5242880 4325376 5242880 0.00625 0 -0.175 0 1.00625 +131072 0 2 0 0 5242880 4456448 5242880 0.00625 0 -0.15 0 1.00625 +131072 0 2 0 0 5242880 4587520 5242880 0.00625 0 -0.125 0 1.00625 +131072 0 2 0 0 5242880 4718592 5242880 0.00625 0 -0.1 0 1.00625 +131072 0 2 0 0 5242880 4849664 5242880 0.00625 0 -0.075 0 1.00625 +131072 0 2 0 0 5242880 4980736 5242880 0.00625 0 -0.05 0 1.00625 +131072 0 2 0 0 5242880 5111808 5242880 0.00625 0 -0.025 0 1.00625 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1.00625 +131072 0 2 0 0 5242880 5373952 5242880 0.00625 0 0.025 0 1.00625 +131072 0 2 0 0 5242880 5505024 5242880 0.00625 0 0.05 0 1.00625 +131072 0 2 0 0 5242880 5636096 5242880 0.00625 0 0.075 0 1.00625 +131072 0 2 0 0 5242880 5767168 5242880 0.00625 0 0.1 0 1.00625 +131072 0 2 0 0 5242880 5898240 5242880 0.00625 0 0.125 0 1.00625 +131072 0 2 0 0 5242880 6029312 5242880 0.00625 0 0.15 0 1.00625 +131072 0 2 0 0 5242880 6160384 5242880 0.00625 0 0.175 0 1.00625 +131072 0 2 0 0 5242880 6291456 5242880 0.00625 0 0.2 0 1.00625 +131072 0 2 0 0 5242880 6422528 5242880 0.00625 0 0.225 0 1.00625 +131072 0 2 0 0 5242880 6553600 5242880 0.00625 0 0.25 0 1.00625 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 2621440 5242880 0.0125 0 -0.5 0 1.0125 +262144 0 1 0 0 5242880 2883584 5242880 0.0125 0 -0.45 0 1.0125 +262144 0 1 0 0 5242880 3145728 5242880 0.0125 0 -0.4 0 1.0125 +262144 0 1 0 0 5242880 3407872 5242880 0.0125 0 -0.35 0 1.0125 +262144 0 1 0 0 5242880 3670016 5242880 0.0125 0 -0.3 0 1.0125 +262144 0 1 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 1.0125 +262144 0 1 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 1.0125 +262144 0 1 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 1.0125 +262144 0 1 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 1.01250000000873 +262144 0 1 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 1.0125 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 1 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 1.0125 +262144 0 1 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 1.01250000000873 +262144 0 1 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 1.0125 +262144 0 1 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 1.0125 +262144 0 1 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 1.0125 +262144 0 1 0 0 5242880 6815744 5242880 0.0125 0 0.3 0 1.0125 +262144 0 1 0 0 5242880 7077888 5242880 0.0125 0 0.35 0 1.0125 +262144 0 1 0 0 5242880 7340032 5242880 0.0125 0 0.4 0 1.0125 +262144 0 1 0 0 5242880 7602176 5242880 0.0125 0 0.45 0 1.0125 +262144 0 1 0 0 5242880 7864320 5242880 0.0125 0 0.5 0 1.0125 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 1.0125 +262144 0 2 0 0 5242880 4063232 5242880 0.0125 0 -0.225 0 1.0125 +262144 0 2 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 1.0125 +262144 0 2 0 0 5242880 4325376 5242880 0.0125 0 -0.175 0 1.01249999999945 +262144 0 2 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 1.0125 +262144 0 2 0 0 5242880 4587520 5242880 0.0125 0 -0.125 0 1.01250000000491 +262144 0 2 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 1.01250000000873 +262144 0 2 0 0 5242880 4849664 5242880 0.0125 0 -0.075 0 1.0125 +262144 0 2 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 1.0125 +262144 0 2 0 0 5242880 5111808 5242880 0.0125 0 -0.025 0 1.0125 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 2 0 0 5242880 5373952 5242880 0.0125 0 0.025 0 1.0125 +262144 0 2 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 1.0125 +262144 0 2 0 0 5242880 5636096 5242880 0.0125 0 0.075 0 1.0125 +262144 0 2 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 1.01250000000873 +262144 0 2 0 0 5242880 5898240 5242880 0.0125 0 0.125 0 1.01250000000491 +262144 0 2 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 1.0125 +262144 0 2 0 0 5242880 6160384 5242880 0.0125 0 0.175 0 1.01249999999945 +262144 0 2 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 1.0125 +262144 0 2 0 0 5242880 6422528 5242880 0.0125 0 0.225 0 1.0125 +262144 0 2 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 1.0125 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 3932160 5242880 0.01875 0 -0.25 0 1.01875 +393216 0 2 0 0 5242880 4063232 5242880 0.01875 0 -0.225 0 1.01874999999964 +393216 0 2 0 0 5242880 4194304 5242880 0.01875 0 -0.2 0 1.01874999999937 +393216 0 2 0 0 5242880 4325376 5242880 0.01875 0 -0.175 0 1.01874999999822 +393216 0 2 0 0 5242880 4456448 5242880 0.01875 0 -0.15 0 1.01875000000001 +393216 0 2 0 0 5242880 4587520 5242880 0.01875 0 -0.125 0 1.01875000001291 +393216 0 2 0 0 5242880 4718592 5242880 0.01875 0 -0.1 0 1.01875000002589 +393216 0 2 0 0 5242880 4849664 5242880 0.01875 0 -0.075 0 1.01875 +393216 0 2 0 0 5242880 4980736 5242880 0.01875 0 -0.05 0 1.01875000000016 +393216 0 2 0 0 5242880 5111808 5242880 0.01875 0 -0.025 0 1.01875 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.01875 +393216 0 2 0 0 5242880 5373952 5242880 0.01875 0 0.025 0 1.01875 +393216 0 2 0 0 5242880 5505024 5242880 0.01875 0 0.05 0 1.01875000000016 +393216 0 2 0 0 5242880 5636096 5242880 0.01875 0 0.075 0 1.01875 +393216 0 2 0 0 5242880 5767168 5242880 0.01875 0 0.1 0 1.01875000002589 +393216 0 2 0 0 5242880 5898240 5242880 0.01875 0 0.125 0 1.01875000001291 +393216 0 2 0 0 5242880 6029312 5242880 0.01875 0 0.15 0 1.01875000000001 +393216 0 2 0 0 5242880 6160384 5242880 0.01875 0 0.175 0 1.01874999999822 +393216 0 2 0 0 5242880 6291456 5242880 0.01875 0 0.2 0 1.01874999999937 +393216 0 2 0 0 5242880 6422528 5242880 0.01875 0 0.225 0 1.01874999999964 +393216 0 2 0 0 5242880 6553600 5242880 0.01875 0 0.25 0 1.01875 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 0 5242880 0.025 0 -1 0 1.025 +524288 0 0 0 0 5242880 524288 5242880 0.025 0 -0.9 0 1.025 +524288 0 0 0 0 5242880 1048576 5242880 0.025 0 -0.8 0 1.025 +524288 0 0 0 0 5242880 1572864 5242880 0.025 0 -0.7 0 1.025 +524288 0 0 0 0 5242880 2097152 5242880 0.025 0 -0.6 0 1.025 +524288 0 0 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 1.025 +524288 0 0 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 1.025 +524288 0 0 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 1.025 +524288 0 0 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 1.02499999999832 +524288 0 0 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.02500000004247 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 0 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.02500000004247 +524288 0 0 0 0 5242880 6291456 5242880 0.025 0 0.2 0 1.02499999999832 +524288 0 0 0 0 5242880 6815744 5242880 0.025 0 0.3 0 1.025 +524288 0 0 0 0 5242880 7340032 5242880 0.025 0 0.4 0 1.025 +524288 0 0 0 0 5242880 7864320 5242880 0.025 0 0.5 0 1.025 +524288 0 0 0 0 5242880 8388608 5242880 0.025 0 0.6 0 1.025 +524288 0 0 0 0 5242880 8912896 5242880 0.025 0 0.7 0 1.025 +524288 0 0 0 0 5242880 9437184 5242880 0.025 0 0.8 0 1.025 +524288 0 0 0 0 5242880 9961472 5242880 0.025 0 0.9 0 1.025 +524288 0 0 0 0 5242880 10485760 5242880 0.025 0 1 0 1.025 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 1.025 +524288 0 1 0 0 5242880 2883584 5242880 0.025 0 -0.45 0 1.025 +524288 0 1 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 1.025 +524288 0 1 0 0 5242880 3407872 5242880 0.025 0 -0.35 0 1.02500000000011 +524288 0 1 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 1.025 +524288 0 1 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 1.0249999999964 +524288 0 1 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 1.02499999999832 +524288 0 1 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 1.02500000000003 +524288 0 1 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.02500000004247 +524288 0 1 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 1.02500000000073 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 1 0 0 5242880 5505024 5242880 0.025 0 0.05 0 1.02500000000073 +524288 0 1 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.02500000004247 +524288 0 1 0 0 5242880 6029312 5242880 0.025 0 0.15 0 1.02500000000003 +524288 0 1 0 0 5242880 6291456 5242880 0.025 0 0.2 0 1.02499999999832 +524288 0 1 0 0 5242880 6553600 5242880 0.025 0 0.25 0 1.0249999999964 +524288 0 1 0 0 5242880 6815744 5242880 0.025 0 0.3 0 1.025 +524288 0 1 0 0 5242880 7077888 5242880 0.025 0 0.35 0 1.02500000000011 +524288 0 1 0 0 5242880 7340032 5242880 0.025 0 0.4 0 1.025 +524288 0 1 0 0 5242880 7602176 5242880 0.025 0 0.45 0 1.025 +524288 0 1 0 0 5242880 7864320 5242880 0.025 0 0.5 0 1.025 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 1.0249999999964 +524288 0 2 0 0 5242880 4063232 5242880 0.025 0 -0.225 0 1.02499999999703 +524288 0 2 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 1.02499999999832 +524288 0 2 0 0 5242880 4325376 5242880 0.025 0 -0.175 0 1.02499999999664 +524288 0 2 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 1.02500000000003 +524288 0 2 0 0 5242880 4587520 5242880 0.025 0 -0.125 0 1.02500000002396 +524288 0 2 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.02500000004247 +524288 0 2 0 0 5242880 4849664 5242880 0.025 0 -0.075 0 1.02500000000014 +524288 0 2 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 1.02500000000073 +524288 0 2 0 0 5242880 5111808 5242880 0.025 0 -0.025 0 1.02500000000001 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 2 0 0 5242880 5373952 5242880 0.025 0 0.025 0 1.02500000000001 +524288 0 2 0 0 5242880 5505024 5242880 0.025 0 0.05 0 1.02500000000073 +524288 0 2 0 0 5242880 5636096 5242880 0.025 0 0.075 0 1.02500000000014 +524288 0 2 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.02500000004247 +524288 0 2 0 0 5242880 5898240 5242880 0.025 0 0.125 0 1.02500000002396 +524288 0 2 0 0 5242880 6029312 5242880 0.025 0 0.15 0 1.02500000000003 +524288 0 2 0 0 5242880 6160384 5242880 0.025 0 0.175 0 1.02499999999664 +524288 0 2 0 0 5242880 6291456 5242880 0.025 0 0.2 0 1.02499999999832 +524288 0 2 0 0 5242880 6422528 5242880 0.025 0 0.225 0 1.02499999999703 +524288 0 2 0 0 5242880 6553600 5242880 0.025 0 0.25 0 1.0249999999964 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 3932160 5242880 0.03125 0 -0.25 0 1.0312499999947 +655360 0 2 0 0 5242880 4063232 5242880 0.03125 0 -0.225 0 1.03124999999534 +655360 0 2 0 0 5242880 4194304 5242880 0.03125 0 -0.2 0 1.03124999999702 +655360 0 2 0 0 5242880 4325376 5242880 0.03125 0 -0.175 0 1.03124999999494 +655360 0 2 0 0 5242880 4456448 5242880 0.03125 0 -0.15 0 1.03124999999993 +655360 0 2 0 0 5242880 4587520 5242880 0.03125 0 -0.125 0 1.03125000003312 +655360 0 2 0 0 5242880 4718592 5242880 0.03125 0 -0.1 0 1.03125000005828 +655360 0 2 0 0 5242880 4849664 5242880 0.03125 0 -0.075 0 1.03125000000063 +655360 0 2 0 0 5242880 4980736 5242880 0.03125 0 -0.05 0 1.03125000000198 +655360 0 2 0 0 5242880 5111808 5242880 0.03125 0 -0.025 0 1.03125000000007 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.0312500000001 +655360 0 2 0 0 5242880 5373952 5242880 0.03125 0 0.025 0 1.03125000000007 +655360 0 2 0 0 5242880 5505024 5242880 0.03125 0 0.05 0 1.03125000000198 +655360 0 2 0 0 5242880 5636096 5242880 0.03125 0 0.075 0 1.03125000000063 +655360 0 2 0 0 5242880 5767168 5242880 0.03125 0 0.1 0 1.03125000005828 +655360 0 2 0 0 5242880 5898240 5242880 0.03125 0 0.125 0 1.03125000003312 +655360 0 2 0 0 5242880 6029312 5242880 0.03125 0 0.15 0 1.03124999999993 +655360 0 2 0 0 5242880 6160384 5242880 0.03125 0 0.175 0 1.03124999999494 +655360 0 2 0 0 5242880 6291456 5242880 0.03125 0 0.2 0 1.03124999999702 +655360 0 2 0 0 5242880 6422528 5242880 0.03125 0 0.225 0 1.03124999999534 +655360 0 2 0 0 5242880 6553600 5242880 0.03125 0 0.25 0 1.0312499999947 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 2621440 5242880 0.0375 0 -0.5 0 1.0375 +786432 0 1 0 0 5242880 2883584 5242880 0.0375 0 -0.45 0 1.03749999999999 +786432 0 1 0 0 5242880 3145728 5242880 0.0375 0 -0.4 0 1.03749999999999 +786432 0 1 0 0 5242880 3407872 5242880 0.0375 0 -0.35 0 1.03750000000033 +786432 0 1 0 0 5242880 3670016 5242880 0.0375 0 -0.3 0 1.03750000000009 +786432 0 1 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 1.03749999999307 +786432 0 1 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 1.03749999999542 +786432 0 1 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 1.03749999999975 +786432 0 1 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 1.0375000000732 +786432 0 1 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 1.03750000000421 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 1 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 1.03750000000421 +786432 0 1 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 1.0375000000732 +786432 0 1 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 1.03749999999975 +786432 0 1 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 1.03749999999542 +786432 0 1 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 1.03749999999307 +786432 0 1 0 0 5242880 6815744 5242880 0.0375 0 0.3 0 1.03750000000009 +786432 0 1 0 0 5242880 7077888 5242880 0.0375 0 0.35 0 1.03750000000033 +786432 0 1 0 0 5242880 7340032 5242880 0.0375 0 0.4 0 1.03749999999999 +786432 0 1 0 0 5242880 7602176 5242880 0.0375 0 0.45 0 1.03749999999999 +786432 0 1 0 0 5242880 7864320 5242880 0.0375 0 0.5 0 1.0375 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 1.03749999999307 +786432 0 2 0 0 5242880 4063232 5242880 0.0375 0 -0.225 0 1.03749999999353 +786432 0 2 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 1.03749999999542 +786432 0 2 0 0 5242880 4325376 5242880 0.0375 0 -0.175 0 1.03749999999314 +786432 0 2 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 1.03749999999975 +786432 0 2 0 0 5242880 4587520 5242880 0.0375 0 -0.125 0 1.03750000004106 +786432 0 2 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 1.0375000000732 +786432 0 2 0 0 5242880 4849664 5242880 0.0375 0 -0.075 0 1.03750000000169 +786432 0 2 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 1.03750000000421 +786432 0 2 0 0 5242880 5111808 5242880 0.0375 0 -0.025 0 1.03750000000026 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 2 0 0 5242880 5373952 5242880 0.0375 0 0.025 0 1.03750000000026 +786432 0 2 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 1.03750000000421 +786432 0 2 0 0 5242880 5636096 5242880 0.0375 0 0.075 0 1.03750000000169 +786432 0 2 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 1.0375000000732 +786432 0 2 0 0 5242880 5898240 5242880 0.0375 0 0.125 0 1.03750000004106 +786432 0 2 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 1.03749999999975 +786432 0 2 0 0 5242880 6160384 5242880 0.0375 0 0.175 0 1.03749999999314 +786432 0 2 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 1.03749999999542 +786432 0 2 0 0 5242880 6422528 5242880 0.0375 0 0.225 0 1.03749999999353 +786432 0 2 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 1.03749999999307 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 3932160 5242880 0.04375 0 -0.25 0 1.04374999999102 +917504 0 2 0 0 5242880 4063232 5242880 0.04375 0 -0.225 0 1.04374999999181 +917504 0 2 0 0 5242880 4194304 5242880 0.04375 0 -0.2 0 1.04374999999437 +917504 0 2 0 0 5242880 4325376 5242880 0.04375 0 -0.175 0 1.04374999999151 +917504 0 2 0 0 5242880 4456448 5242880 0.04375 0 -0.15 0 1.04374999999929 +917504 0 2 0 0 5242880 4587520 5242880 0.04375 0 -0.125 0 1.04375000004884 +917504 0 2 0 0 5242880 4718592 5242880 0.04375 0 -0.1 0 1.04375000008715 +917504 0 2 0 0 5242880 4849664 5242880 0.04375 0 -0.075 0 1.04375000000356 +917504 0 2 0 0 5242880 4980736 5242880 0.04375 0 -0.05 0 1.04375000000769 +917504 0 2 0 0 5242880 5111808 5242880 0.04375 0 -0.025 0 1.04375000000072 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.043750000001 +917504 0 2 0 0 5242880 5373952 5242880 0.04375 0 0.025 0 1.04375000000072 +917504 0 2 0 0 5242880 5505024 5242880 0.04375 0 0.05 0 1.04375000000769 +917504 0 2 0 0 5242880 5636096 5242880 0.04375 0 0.075 0 1.04375000000356 +917504 0 2 0 0 5242880 5767168 5242880 0.04375 0 0.1 0 1.04375000008715 +917504 0 2 0 0 5242880 5898240 5242880 0.04375 0 0.125 0 1.04375000004884 +917504 0 2 0 0 5242880 6029312 5242880 0.04375 0 0.15 0 1.04374999999929 +917504 0 2 0 0 5242880 6160384 5242880 0.04375 0 0.175 0 1.04374999999151 +917504 0 2 0 0 5242880 6291456 5242880 0.04375 0 0.2 0 1.04374999999437 +917504 0 2 0 0 5242880 6422528 5242880 0.04375 0 0.225 0 1.04374999999181 +917504 0 2 0 0 5242880 6553600 5242880 0.04375 0 0.25 0 1.04374999999102 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 0 5242880 0.05 0 -1 0 1.05 +1048576 0 0 0 0 5242880 524288 5242880 0.05 0 -0.9 0 1.05 +1048576 0 0 0 0 5242880 1048576 5242880 0.05 0 -0.8 0 1.05 +1048576 0 0 0 0 5242880 1572864 5242880 0.05 0 -0.7 0 1.05 +1048576 0 0 0 0 5242880 2097152 5242880 0.05 0 -0.6 0 1.05 +1048576 0 0 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 1.05 +1048576 0 0 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 1.04999999999998 +1048576 0 0 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 1.05000000000024 +1048576 0 0 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.04999999999358 +1048576 0 0 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.05000000010013 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 0 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.05000000010013 +1048576 0 0 0 0 5242880 6291456 5242880 0.05 0 0.2 0 1.04999999999358 +1048576 0 0 0 0 5242880 6815744 5242880 0.05 0 0.3 0 1.05000000000024 +1048576 0 0 0 0 5242880 7340032 5242880 0.05 0 0.4 0 1.04999999999998 +1048576 0 0 0 0 5242880 7864320 5242880 0.05 0 0.5 0 1.05 +1048576 0 0 0 0 5242880 8388608 5242880 0.05 0 0.6 0 1.05 +1048576 0 0 0 0 5242880 8912896 5242880 0.05 0 0.7 0 1.05 +1048576 0 0 0 0 5242880 9437184 5242880 0.05 0 0.8 0 1.05 +1048576 0 0 0 0 5242880 9961472 5242880 0.05 0 0.9 0 1.05 +1048576 0 0 0 0 5242880 10485760 5242880 0.05 0 1 0 1.05 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 1.05 +1048576 0 1 0 0 5242880 2883584 5242880 0.05 0 -0.45 0 1.04999999999998 +1048576 0 1 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 1.04999999999998 +1048576 0 1 0 0 5242880 3407872 5242880 0.05 0 -0.35 0 1.05000000000053 +1048576 0 1 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 1.05000000000024 +1048576 0 1 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 1.04999999999027 +1048576 0 1 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.04999999999358 +1048576 0 1 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 1.04999999999861 +1048576 0 1 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.05000000010013 +1048576 0 1 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 1.05000000001273 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 1 0 0 5242880 5505024 5242880 0.05 0 0.05 0 1.05000000001273 +1048576 0 1 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.05000000010013 +1048576 0 1 0 0 5242880 6029312 5242880 0.05 0 0.15 0 1.04999999999861 +1048576 0 1 0 0 5242880 6291456 5242880 0.05 0 0.2 0 1.04999999999358 +1048576 0 1 0 0 5242880 6553600 5242880 0.05 0 0.25 0 1.04999999999027 +1048576 0 1 0 0 5242880 6815744 5242880 0.05 0 0.3 0 1.05000000000024 +1048576 0 1 0 0 5242880 7077888 5242880 0.05 0 0.35 0 1.05000000000053 +1048576 0 1 0 0 5242880 7340032 5242880 0.05 0 0.4 0 1.04999999999998 +1048576 0 1 0 0 5242880 7602176 5242880 0.05 0 0.45 0 1.04999999999998 +1048576 0 1 0 0 5242880 7864320 5242880 0.05 0 0.5 0 1.05 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 1.04999999999027 +1048576 0 2 0 0 5242880 4063232 5242880 0.05 0 -0.225 0 1.04999999999099 +1048576 0 2 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.04999999999358 +1048576 0 2 0 0 5242880 4325376 5242880 0.05 0 -0.175 0 1.04999999998996 +1048576 0 2 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 1.04999999999861 +1048576 0 2 0 0 5242880 4587520 5242880 0.05 0 -0.125 0 1.05000000005515 +1048576 0 2 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.05000000010013 +1048576 0 2 0 0 5242880 4849664 5242880 0.05 0 -0.075 0 1.0500000000065 +1048576 0 2 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 1.05000000001273 +1048576 0 2 0 0 5242880 5111808 5242880 0.05 0 -0.025 0 1.05000000000165 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 2 0 0 5242880 5373952 5242880 0.05 0 0.025 0 1.05000000000165 +1048576 0 2 0 0 5242880 5505024 5242880 0.05 0 0.05 0 1.05000000001273 +1048576 0 2 0 0 5242880 5636096 5242880 0.05 0 0.075 0 1.0500000000065 +1048576 0 2 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.05000000010013 +1048576 0 2 0 0 5242880 5898240 5242880 0.05 0 0.125 0 1.05000000005515 +1048576 0 2 0 0 5242880 6029312 5242880 0.05 0 0.15 0 1.04999999999861 +1048576 0 2 0 0 5242880 6160384 5242880 0.05 0 0.175 0 1.04999999998996 +1048576 0 2 0 0 5242880 6291456 5242880 0.05 0 0.2 0 1.04999999999358 +1048576 0 2 0 0 5242880 6422528 5242880 0.05 0 0.225 0 1.04999999999099 +1048576 0 2 0 0 5242880 6553600 5242880 0.05 0 0.25 0 1.04999999999027 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 3932160 5242880 0.05625 0 -0.25 0 1.05624999998901 +1179648 0 2 0 0 5242880 4063232 5242880 0.05625 0 -0.225 0 1.05624999999015 +1179648 0 2 0 0 5242880 4194304 5242880 0.05625 0 -0.2 0 1.05624999999326 +1179648 0 2 0 0 5242880 4325376 5242880 0.05625 0 -0.175 0 1.05624999998853 +1179648 0 2 0 0 5242880 4456448 5242880 0.05625 0 -0.15 0 1.05624999999763 +1179648 0 2 0 0 5242880 4587520 5242880 0.05625 0 -0.125 0 1.05625000006123 +1179648 0 2 0 0 5242880 4718592 5242880 0.05625 0 -0.1 0 1.05625000011224 +1179648 0 2 0 0 5242880 4849664 5242880 0.05625 0 -0.075 0 1.05625000001079 +1179648 0 2 0 0 5242880 4980736 5242880 0.05625 0 -0.05 0 1.05625000001963 +1179648 0 2 0 0 5242880 5111808 5242880 0.05625 0 -0.025 0 1.05625000000332 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.05625000000452 +1179648 0 2 0 0 5242880 5373952 5242880 0.05625 0 0.025 0 1.05625000000332 +1179648 0 2 0 0 5242880 5505024 5242880 0.05625 0 0.05 0 1.05625000001963 +1179648 0 2 0 0 5242880 5636096 5242880 0.05625 0 0.075 0 1.05625000001079 +1179648 0 2 0 0 5242880 5767168 5242880 0.05625 0 0.1 0 1.05625000011224 +1179648 0 2 0 0 5242880 5898240 5242880 0.05625 0 0.125 0 1.05625000006123 +1179648 0 2 0 0 5242880 6029312 5242880 0.05625 0 0.15 0 1.05624999999763 +1179648 0 2 0 0 5242880 6160384 5242880 0.05625 0 0.175 0 1.05624999998853 +1179648 0 2 0 0 5242880 6291456 5242880 0.05625 0 0.2 0 1.05624999999326 +1179648 0 2 0 0 5242880 6422528 5242880 0.05625 0 0.225 0 1.05624999999015 +1179648 0 2 0 0 5242880 6553600 5242880 0.05625 0 0.25 0 1.05624999998901 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 2621440 5242880 0.0625 0 -0.5 0 1.0625 +1310720 0 1 0 0 5242880 2883584 5242880 0.0625 0 -0.45 0 1.06249999999993 +1310720 0 1 0 0 5242880 3145728 5242880 0.0625 0 -0.4 0 1.06249999999994 +1310720 0 1 0 0 5242880 3407872 5242880 0.0625 0 -0.35 0 1.06250000000083 +1310720 0 1 0 0 5242880 3670016 5242880 0.0625 0 -0.3 0 1.06250000000062 +1310720 0 1 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 1.06249999998785 +1310720 0 1 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.06249999999333 +1310720 0 1 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 1.06249999999637 +1310720 0 1 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 1.06250000012362 +1310720 0 1 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 1.06250000002869 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 1 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 1.06250000002869 +1310720 0 1 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 1.06250000012362 +1310720 0 1 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 1.06249999999637 +1310720 0 1 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 1.06249999999333 +1310720 0 1 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 1.06249999998785 +1310720 0 1 0 0 5242880 6815744 5242880 0.0625 0 0.3 0 1.06250000000062 +1310720 0 1 0 0 5242880 7077888 5242880 0.0625 0 0.35 0 1.06250000000083 +1310720 0 1 0 0 5242880 7340032 5242880 0.0625 0 0.4 0 1.06249999999994 +1310720 0 1 0 0 5242880 7602176 5242880 0.0625 0 0.45 0 1.06249999999993 +1310720 0 1 0 0 5242880 7864320 5242880 0.0625 0 0.5 0 1.0625 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 1.06249999998785 +1310720 0 2 0 0 5242880 4063232 5242880 0.0625 0 -0.225 0 1.0624999999896 +1310720 0 2 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.06249999999333 +1310720 0 2 0 0 5242880 4325376 5242880 0.0625 0 -0.175 0 1.06249999998724 +1310720 0 2 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 1.06249999999637 +1310720 0 2 0 0 5242880 4587520 5242880 0.0625 0 -0.125 0 1.06250000006612 +1310720 0 2 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 1.06250000012362 +1310720 0 2 0 0 5242880 4849664 5242880 0.0625 0 -0.075 0 1.06250000001668 +1310720 0 2 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 1.06250000002869 +1310720 0 2 0 0 5242880 5111808 5242880 0.0625 0 -0.025 0 1.06250000000608 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 2 0 0 5242880 5373952 5242880 0.0625 0 0.025 0 1.06250000000608 +1310720 0 2 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 1.06250000002869 +1310720 0 2 0 0 5242880 5636096 5242880 0.0625 0 0.075 0 1.06250000001668 +1310720 0 2 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 1.06250000012362 +1310720 0 2 0 0 5242880 5898240 5242880 0.0625 0 0.125 0 1.06250000006612 +1310720 0 2 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 1.06249999999637 +1310720 0 2 0 0 5242880 6160384 5242880 0.0625 0 0.175 0 1.06249999998724 +1310720 0 2 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 1.06249999999333 +1310720 0 2 0 0 5242880 6422528 5242880 0.0625 0 0.225 0 1.0624999999896 +1310720 0 2 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 1.06249999998785 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 3932160 5242880 0.06875 0 -0.25 0 1.06874999998681 +1441792 0 2 0 0 5242880 4063232 5242880 0.06875 0 -0.225 0 1.06874999998947 +1441792 0 2 0 0 5242880 4194304 5242880 0.06875 0 -0.2 0 1.068749999994 +1441792 0 2 0 0 5242880 4325376 5242880 0.06875 0 -0.175 0 1.06874999998618 +1441792 0 2 0 0 5242880 4456448 5242880 0.06875 0 -0.15 0 1.06874999999489 +1441792 0 2 0 0 5242880 4587520 5242880 0.06875 0 -0.125 0 1.06875000007061 +1441792 0 2 0 0 5242880 4718592 5242880 0.06875 0 -0.1 0 1.06875000013445 +1441792 0 2 0 0 5242880 4849664 5242880 0.06875 0 -0.075 0 1.06875000002444 +1441792 0 2 0 0 5242880 4980736 5242880 0.06875 0 -0.05 0 1.06875000004019 +1441792 0 2 0 0 5242880 5111808 5242880 0.06875 0 -0.025 0 1.0687500000103 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.0687500000138 +1441792 0 2 0 0 5242880 5373952 5242880 0.06875 0 0.025 0 1.0687500000103 +1441792 0 2 0 0 5242880 5505024 5242880 0.06875 0 0.05 0 1.06875000004019 +1441792 0 2 0 0 5242880 5636096 5242880 0.06875 0 0.075 0 1.06875000002444 +1441792 0 2 0 0 5242880 5767168 5242880 0.06875 0 0.1 0 1.06875000013445 +1441792 0 2 0 0 5242880 5898240 5242880 0.06875 0 0.125 0 1.06875000007061 +1441792 0 2 0 0 5242880 6029312 5242880 0.06875 0 0.15 0 1.06874999999489 +1441792 0 2 0 0 5242880 6160384 5242880 0.06875 0 0.175 0 1.06874999998618 +1441792 0 2 0 0 5242880 6291456 5242880 0.06875 0 0.2 0 1.068749999994 +1441792 0 2 0 0 5242880 6422528 5242880 0.06875 0 0.225 0 1.06874999998947 +1441792 0 2 0 0 5242880 6553600 5242880 0.06875 0 0.25 0 1.06874999998681 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 0 5242880 0.075 0 -1 0 1.075 +1572864 0 0 0 0 5242880 524288 5242880 0.075 0 -0.9 0 1.075 +1572864 0 0 0 0 5242880 1048576 5242880 0.075 0 -0.8 0 1.075 +1572864 0 0 0 0 5242880 1572864 5242880 0.075 0 -0.7 0 1.075 +1572864 0 0 0 0 5242880 2097152 5242880 0.075 0 -0.6 0 1.075 +1572864 0 0 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 1.075 +1572864 0 0 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 1.07499999999987 +1572864 0 0 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 1.07500000000118 +1572864 0 0 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.07499999999519 +1572864 0 0 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.07500000014499 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 0 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.07500000014499 +1572864 0 0 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.07499999999519 +1572864 0 0 0 0 5242880 6815744 5242880 0.075 0 0.3 0 1.07500000000118 +1572864 0 0 0 0 5242880 7340032 5242880 0.075 0 0.4 0 1.07499999999987 +1572864 0 0 0 0 5242880 7864320 5242880 0.075 0 0.5 0 1.075 +1572864 0 0 0 0 5242880 8388608 5242880 0.075 0 0.6 0 1.075 +1572864 0 0 0 0 5242880 8912896 5242880 0.075 0 0.7 0 1.075 +1572864 0 0 0 0 5242880 9437184 5242880 0.075 0 0.8 0 1.075 +1572864 0 0 0 0 5242880 9961472 5242880 0.075 0 0.9 0 1.075 +1572864 0 0 0 0 5242880 10485760 5242880 0.075 0 1 0 1.075 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 1.075 +1572864 0 1 0 0 5242880 2883584 5242880 0.075 0 -0.45 0 1.07499999999986 +1572864 0 1 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 1.07499999999987 +1572864 0 1 0 0 5242880 3407872 5242880 0.075 0 -0.35 0 1.07500000000089 +1572864 0 1 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 1.07500000000118 +1572864 0 1 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 1.0749999999889 +1572864 0 1 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.07499999999519 +1572864 0 1 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 1.07499999999316 +1572864 0 1 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.07500000014499 +1572864 0 1 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 1.0750000000544 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 1 0 0 5242880 5505024 5242880 0.075 0 0.05 0 1.0750000000544 +1572864 0 1 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.07500000014499 +1572864 0 1 0 0 5242880 6029312 5242880 0.075 0 0.15 0 1.07499999999316 +1572864 0 1 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.07499999999519 +1572864 0 1 0 0 5242880 6553600 5242880 0.075 0 0.25 0 1.0749999999889 +1572864 0 1 0 0 5242880 6815744 5242880 0.075 0 0.3 0 1.07500000000118 +1572864 0 1 0 0 5242880 7077888 5242880 0.075 0 0.35 0 1.07500000000089 +1572864 0 1 0 0 5242880 7340032 5242880 0.075 0 0.4 0 1.07499999999987 +1572864 0 1 0 0 5242880 7602176 5242880 0.075 0 0.45 0 1.07499999999986 +1572864 0 1 0 0 5242880 7864320 5242880 0.075 0 0.5 0 1.075 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 1.0749999999889 +1572864 0 2 0 0 5242880 4063232 5242880 0.075 0 -0.225 0 1.07499999999141 +1572864 0 2 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.07499999999519 +1572864 0 2 0 0 5242880 4325376 5242880 0.075 0 -0.175 0 1.07499999998508 +1572864 0 2 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 1.07499999999316 +1572864 0 2 0 0 5242880 4587520 5242880 0.075 0 -0.125 0 1.0750000000746 +1572864 0 2 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.07500000014499 +1572864 0 2 0 0 5242880 4849664 5242880 0.075 0 -0.075 0 1.07500000003426 +1572864 0 2 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 1.0750000000544 +1572864 0 2 0 0 5242880 5111808 5242880 0.075 0 -0.025 0 1.07500000001642 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 2 0 0 5242880 5373952 5242880 0.075 0 0.025 0 1.07500000001642 +1572864 0 2 0 0 5242880 5505024 5242880 0.075 0 0.05 0 1.0750000000544 +1572864 0 2 0 0 5242880 5636096 5242880 0.075 0 0.075 0 1.07500000003426 +1572864 0 2 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.07500000014499 +1572864 0 2 0 0 5242880 5898240 5242880 0.075 0 0.125 0 1.0750000000746 +1572864 0 2 0 0 5242880 6029312 5242880 0.075 0 0.15 0 1.07499999999316 +1572864 0 2 0 0 5242880 6160384 5242880 0.075 0 0.175 0 1.07499999998508 +1572864 0 2 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.07499999999519 +1572864 0 2 0 0 5242880 6422528 5242880 0.075 0 0.225 0 1.07499999999141 +1572864 0 2 0 0 5242880 6553600 5242880 0.075 0 0.25 0 1.0749999999889 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 3932160 5242880 0.08125 0 -0.25 0 1.08124999998915 +1703936 0 2 0 0 5242880 4063232 5242880 0.08125 0 -0.225 0 1.08124999999272 +1703936 0 2 0 0 5242880 4194304 5242880 0.08125 0 -0.2 0 1.08124999999712 +1703936 0 2 0 0 5242880 4325376 5242880 0.08125 0 -0.175 0 1.08124999998455 +1703936 0 2 0 0 5242880 4456448 5242880 0.08125 0 -0.15 0 1.08124999999139 +1703936 0 2 0 0 5242880 4587520 5242880 0.08125 0 -0.125 0 1.08125000007798 +1703936 0 2 0 0 5242880 4718592 5242880 0.08125 0 -0.1 0 1.08125000015544 +1703936 0 2 0 0 5242880 4849664 5242880 0.08125 0 -0.075 0 1.08125000004629 +1703936 0 2 0 0 5242880 4980736 5242880 0.08125 0 -0.05 0 1.08125000007153 +1703936 0 2 0 0 5242880 5111808 5242880 0.08125 0 -0.025 0 1.08125000002489 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.08125000003301 +1703936 0 2 0 0 5242880 5373952 5242880 0.08125 0 0.025 0 1.08125000002489 +1703936 0 2 0 0 5242880 5505024 5242880 0.08125 0 0.05 0 1.08125000007153 +1703936 0 2 0 0 5242880 5636096 5242880 0.08125 0 0.075 0 1.08125000004629 +1703936 0 2 0 0 5242880 5767168 5242880 0.08125 0 0.1 0 1.08125000015544 +1703936 0 2 0 0 5242880 5898240 5242880 0.08125 0 0.125 0 1.08125000007798 +1703936 0 2 0 0 5242880 6029312 5242880 0.08125 0 0.15 0 1.08124999999139 +1703936 0 2 0 0 5242880 6160384 5242880 0.08125 0 0.175 0 1.08124999998455 +1703936 0 2 0 0 5242880 6291456 5242880 0.08125 0 0.2 0 1.08124999999712 +1703936 0 2 0 0 5242880 6422528 5242880 0.08125 0 0.225 0 1.08124999999272 +1703936 0 2 0 0 5242880 6553600 5242880 0.08125 0 0.25 0 1.08124999998915 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 2621440 5242880 0.0875 0 -0.5 0 1.08750000000001 +1835008 0 1 0 0 5242880 2883584 5242880 0.0875 0 -0.45 0 1.08749999999976 +1835008 0 1 0 0 5242880 3145728 5242880 0.0875 0 -0.4 0 1.08749999999977 +1835008 0 1 0 0 5242880 3407872 5242880 0.0875 0 -0.35 0 1.08750000000108 +1835008 0 1 0 0 5242880 3670016 5242880 0.0875 0 -0.3 0 1.08750000000186 +1835008 0 1 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.0874999999892 +1835008 0 1 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 1.08749999999972 +1835008 0 1 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 1.08749999998951 +1835008 0 1 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 1.08750000016605 +1835008 0 1 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 1.08750000009175 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 1 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 1.08750000009175 +1835008 0 1 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 1.08750000016605 +1835008 0 1 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 1.08749999998951 +1835008 0 1 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 1.08749999999972 +1835008 0 1 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 1.0874999999892 +1835008 0 1 0 0 5242880 6815744 5242880 0.0875 0 0.3 0 1.08750000000186 +1835008 0 1 0 0 5242880 7077888 5242880 0.0875 0 0.35 0 1.08750000000108 +1835008 0 1 0 0 5242880 7340032 5242880 0.0875 0 0.4 0 1.08749999999977 +1835008 0 1 0 0 5242880 7602176 5242880 0.0875 0 0.45 0 1.08749999999976 +1835008 0 1 0 0 5242880 7864320 5242880 0.0875 0 0.5 0 1.08750000000001 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.0874999999892 +1835008 0 2 0 0 5242880 4063232 5242880 0.0875 0 -0.225 0 1.08749999999431 +1835008 0 2 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 1.08749999999972 +1835008 0 2 0 0 5242880 4325376 5242880 0.0875 0 -0.175 0 1.08749999998424 +1835008 0 2 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 1.08749999998951 +1835008 0 2 0 0 5242880 4587520 5242880 0.0875 0 -0.125 0 1.08750000008179 +1835008 0 2 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 1.08750000016605 +1835008 0 2 0 0 5242880 4849664 5242880 0.0875 0 -0.075 0 1.08750000006059 +1835008 0 2 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 1.08750000009175 +1835008 0 2 0 0 5242880 5111808 5242880 0.0875 0 -0.025 0 1.08750000003613 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 2 0 0 5242880 5373952 5242880 0.0875 0 0.025 0 1.08750000003613 +1835008 0 2 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 1.08750000009175 +1835008 0 2 0 0 5242880 5636096 5242880 0.0875 0 0.075 0 1.08750000006059 +1835008 0 2 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 1.08750000016605 +1835008 0 2 0 0 5242880 5898240 5242880 0.0875 0 0.125 0 1.08750000008179 +1835008 0 2 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 1.08749999998951 +1835008 0 2 0 0 5242880 6160384 5242880 0.0875 0 0.175 0 1.08749999998424 +1835008 0 2 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 1.08749999999972 +1835008 0 2 0 0 5242880 6422528 5242880 0.0875 0 0.225 0 1.08749999999431 +1835008 0 2 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 1.0874999999892 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 3932160 5242880 0.09375 0 -0.25 0 1.0937499999896 +1966080 0 2 0 0 5242880 4063232 5242880 0.09375 0 -0.225 0 1.09374999999655 +1966080 0 2 0 0 5242880 4194304 5242880 0.09375 0 -0.2 0 1.09375000000317 +1966080 0 2 0 0 5242880 4325376 5242880 0.09375 0 -0.175 0 1.09374999998465 +1966080 0 2 0 0 5242880 4456448 5242880 0.09375 0 -0.15 0 1.0937499999879 +1966080 0 2 0 0 5242880 4587520 5242880 0.09375 0 -0.125 0 1.09375000008476 +1966080 0 2 0 0 5242880 4718592 5242880 0.09375 0 -0.1 0 1.09375000017699 +1966080 0 2 0 0 5242880 4849664 5242880 0.09375 0 -0.075 0 1.09375000007712 +1966080 0 2 0 0 5242880 4980736 5242880 0.09375 0 -0.05 0 1.09375000011513 +1966080 0 2 0 0 5242880 5111808 5242880 0.09375 0 -0.025 0 1.09375000005053 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.09375000006661 +1966080 0 2 0 0 5242880 5373952 5242880 0.09375 0 0.025 0 1.09375000005053 +1966080 0 2 0 0 5242880 5505024 5242880 0.09375 0 0.05 0 1.09375000011513 +1966080 0 2 0 0 5242880 5636096 5242880 0.09375 0 0.075 0 1.09375000007712 +1966080 0 2 0 0 5242880 5767168 5242880 0.09375 0 0.1 0 1.09375000017699 +1966080 0 2 0 0 5242880 5898240 5242880 0.09375 0 0.125 0 1.09375000008476 +1966080 0 2 0 0 5242880 6029312 5242880 0.09375 0 0.15 0 1.0937499999879 +1966080 0 2 0 0 5242880 6160384 5242880 0.09375 0 0.175 0 1.09374999998465 +1966080 0 2 0 0 5242880 6291456 5242880 0.09375 0 0.2 0 1.09375000000317 +1966080 0 2 0 0 5242880 6422528 5242880 0.09375 0 0.225 0 1.09374999999655 +1966080 0 2 0 0 5242880 6553600 5242880 0.09375 0 0.25 0 1.0937499999896 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 0 5242880 0.1 0 -1 0 1.1 +2097152 0 0 0 0 5242880 524288 5242880 0.1 0 -0.9 0 1.1 +2097152 0 0 0 0 5242880 1048576 5242880 0.1 0 -0.8 0 1.1 +2097152 0 0 0 0 5242880 1572864 5242880 0.1 0 -0.7 0 1.1 +2097152 0 0 0 0 5242880 2097152 5242880 0.1 0 -0.6 0 1.1 +2097152 0 0 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 1.10000000000003 +2097152 0 0 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 1.09999999999964 +2097152 0 0 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 1.10000000000268 +2097152 0 0 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.10000000000743 +2097152 0 0 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.10000000018839 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 0 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.10000000018839 +2097152 0 0 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.10000000000743 +2097152 0 0 0 0 5242880 6815744 5242880 0.1 0 0.3 0 1.10000000000268 +2097152 0 0 0 0 5242880 7340032 5242880 0.1 0 0.4 0 1.09999999999964 +2097152 0 0 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.10000000000003 +2097152 0 0 0 0 5242880 8388608 5242880 0.1 0 0.6 0 1.1 +2097152 0 0 0 0 5242880 8912896 5242880 0.1 0 0.7 0 1.1 +2097152 0 0 0 0 5242880 9437184 5242880 0.1 0 0.8 0 1.1 +2097152 0 0 0 0 5242880 9961472 5242880 0.1 0 0.9 0 1.1 +2097152 0 0 0 0 5242880 10485760 5242880 0.1 0 1 0 1.1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 1.10000000000003 +2097152 0 1 0 0 5242880 2883584 5242880 0.1 0 -0.45 0 1.09999999999964 +2097152 0 1 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 1.09999999999964 +2097152 0 1 0 0 5242880 3407872 5242880 0.1 0 -0.35 0 1.10000000000084 +2097152 0 1 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 1.10000000000268 +2097152 0 1 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 1.09999999999394 +2097152 0 1 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.10000000000743 +2097152 0 1 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 1.09999999998642 +2097152 0 1 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.10000000018839 +2097152 0 1 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 1.10000000014165 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 1 0 0 5242880 5505024 5242880 0.1 0 0.05 0 1.10000000014165 +2097152 0 1 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.10000000018839 +2097152 0 1 0 0 5242880 6029312 5242880 0.1 0 0.15 0 1.09999999998642 +2097152 0 1 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.10000000000743 +2097152 0 1 0 0 5242880 6553600 5242880 0.1 0 0.25 0 1.09999999999394 +2097152 0 1 0 0 5242880 6815744 5242880 0.1 0 0.3 0 1.10000000000268 +2097152 0 1 0 0 5242880 7077888 5242880 0.1 0 0.35 0 1.10000000000084 +2097152 0 1 0 0 5242880 7340032 5242880 0.1 0 0.4 0 1.09999999999964 +2097152 0 1 0 0 5242880 7602176 5242880 0.1 0 0.45 0 1.09999999999964 +2097152 0 1 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.10000000000003 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 1.09999999999394 +2097152 0 2 0 0 5242880 4063232 5242880 0.1 0 -0.225 0 1.10000000000145 +2097152 0 2 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.10000000000743 +2097152 0 2 0 0 5242880 4325376 5242880 0.1 0 -0.175 0 1.09999999998514 +2097152 0 2 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 1.09999999998642 +2097152 0 2 0 0 5242880 4587520 5242880 0.1 0 -0.125 0 1.10000000008901 +2097152 0 2 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.10000000018839 +2097152 0 2 0 0 5242880 4849664 5242880 0.1 0 -0.075 0 1.10000000009574 +2097152 0 2 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 1.10000000014165 +2097152 0 2 0 0 5242880 5111808 5242880 0.1 0 -0.025 0 1.1000000000684 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 2 0 0 5242880 5373952 5242880 0.1 0 0.025 0 1.1000000000684 +2097152 0 2 0 0 5242880 5505024 5242880 0.1 0 0.05 0 1.10000000014165 +2097152 0 2 0 0 5242880 5636096 5242880 0.1 0 0.075 0 1.10000000009574 +2097152 0 2 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.10000000018839 +2097152 0 2 0 0 5242880 5898240 5242880 0.1 0 0.125 0 1.10000000008901 +2097152 0 2 0 0 5242880 6029312 5242880 0.1 0 0.15 0 1.09999999998642 +2097152 0 2 0 0 5242880 6160384 5242880 0.1 0 0.175 0 1.09999999998514 +2097152 0 2 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.10000000000743 +2097152 0 2 0 0 5242880 6422528 5242880 0.1 0 0.225 0 1.10000000000145 +2097152 0 2 0 0 5242880 6553600 5242880 0.1 0 0.25 0 1.09999999999394 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phi.z.asc b/Carpet/CarpetInterp/test/waveinterp/phi.z.asc new file mode 100644 index 000000000..8434cd831 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phi.z.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phi z (phi) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 0 0 0 0 -1 1 +0 0 0 0 0 5242880 5242880 524288 0 0 0 -0.9 1 +0 0 0 0 0 5242880 5242880 1048576 0 0 0 -0.8 1 +0 0 0 0 0 5242880 5242880 1572864 0 0 0 -0.7 1 +0 0 0 0 0 5242880 5242880 2097152 0 0 0 -0.6 1 +0 0 0 0 0 5242880 5242880 2621440 0 0 0 -0.5 1 +0 0 0 0 0 5242880 5242880 3145728 0 0 0 -0.4 1 +0 0 0 0 0 5242880 5242880 3670016 0 0 0 -0.3 1 +0 0 0 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 0 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 0 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 0 0 0 5242880 5242880 6815744 0 0 0 0.3 1 +0 0 0 0 0 5242880 5242880 7340032 0 0 0 0.4 1 +0 0 0 0 0 5242880 5242880 7864320 0 0 0 0.5 1 +0 0 0 0 0 5242880 5242880 8388608 0 0 0 0.6 1 +0 0 0 0 0 5242880 5242880 8912896 0 0 0 0.7 1 +0 0 0 0 0 5242880 5242880 9437184 0 0 0 0.8 1 +0 0 0 0 0 5242880 5242880 9961472 0 0 0 0.9 1 +0 0 0 0 0 5242880 5242880 10485760 0 0 0 1 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 2621440 0 0 0 -0.5 1 +0 0 1 0 0 5242880 5242880 2883584 0 0 0 -0.45 1 +0 0 1 0 0 5242880 5242880 3145728 0 0 0 -0.4 1 +0 0 1 0 0 5242880 5242880 3407872 0 0 0 -0.35 1 +0 0 1 0 0 5242880 5242880 3670016 0 0 0 -0.3 1 +0 0 1 0 0 5242880 5242880 3932160 0 0 0 -0.25 1 +0 0 1 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 1 0 0 5242880 5242880 4456448 0 0 0 -0.15 1 +0 0 1 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 1 0 0 5242880 5242880 4980736 0 0 0 -0.05 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5242880 5242880 5505024 0 0 0 0.05 1 +0 0 1 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 1 0 0 5242880 5242880 6029312 0 0 0 0.15 1 +0 0 1 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 1 0 0 5242880 5242880 6553600 0 0 0 0.25 1 +0 0 1 0 0 5242880 5242880 6815744 0 0 0 0.3 1 +0 0 1 0 0 5242880 5242880 7077888 0 0 0 0.35 1 +0 0 1 0 0 5242880 5242880 7340032 0 0 0 0.4 1 +0 0 1 0 0 5242880 5242880 7602176 0 0 0 0.45 1 +0 0 1 0 0 5242880 5242880 7864320 0 0 0 0.5 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 3932160 0 0 0 -0.25 1 +0 0 2 0 0 5242880 5242880 4063232 0 0 0 -0.225 1 +0 0 2 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 2 0 0 5242880 5242880 4325376 0 0 0 -0.175 1 +0 0 2 0 0 5242880 5242880 4456448 0 0 0 -0.15 1 +0 0 2 0 0 5242880 5242880 4587520 0 0 0 -0.125 1 +0 0 2 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 2 0 0 5242880 5242880 4849664 0 0 0 -0.075 1 +0 0 2 0 0 5242880 5242880 4980736 0 0 0 -0.05 1 +0 0 2 0 0 5242880 5242880 5111808 0 0 0 -0.025 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5242880 5242880 5373952 0 0 0 0.025 1 +0 0 2 0 0 5242880 5242880 5505024 0 0 0 0.05 1 +0 0 2 0 0 5242880 5242880 5636096 0 0 0 0.075 1 +0 0 2 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 2 0 0 5242880 5242880 5898240 0 0 0 0.125 1 +0 0 2 0 0 5242880 5242880 6029312 0 0 0 0.15 1 +0 0 2 0 0 5242880 5242880 6160384 0 0 0 0.175 1 +0 0 2 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 2 0 0 5242880 5242880 6422528 0 0 0 0.225 1 +0 0 2 0 0 5242880 5242880 6553600 0 0 0 0.25 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 3932160 0.00625 0 0 -0.25 1.00625 +131072 0 2 0 0 5242880 5242880 4063232 0.00625 0 0 -0.225 1.00625 +131072 0 2 0 0 5242880 5242880 4194304 0.00625 0 0 -0.2 1.00625 +131072 0 2 0 0 5242880 5242880 4325376 0.00625 0 0 -0.175 1.00625 +131072 0 2 0 0 5242880 5242880 4456448 0.00625 0 0 -0.15 1.00625 +131072 0 2 0 0 5242880 5242880 4587520 0.00625 0 0 -0.125 1.00625 +131072 0 2 0 0 5242880 5242880 4718592 0.00625 0 0 -0.1 1.00625 +131072 0 2 0 0 5242880 5242880 4849664 0.00625 0 0 -0.075 1.00625 +131072 0 2 0 0 5242880 5242880 4980736 0.00625 0 0 -0.05 1.00625 +131072 0 2 0 0 5242880 5242880 5111808 0.00625 0 0 -0.025 1.00625 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1.00625 +131072 0 2 0 0 5242880 5242880 5373952 0.00625 0 0 0.025 1.00625 +131072 0 2 0 0 5242880 5242880 5505024 0.00625 0 0 0.05 1.00625 +131072 0 2 0 0 5242880 5242880 5636096 0.00625 0 0 0.075 1.00625 +131072 0 2 0 0 5242880 5242880 5767168 0.00625 0 0 0.1 1.00625 +131072 0 2 0 0 5242880 5242880 5898240 0.00625 0 0 0.125 1.00625 +131072 0 2 0 0 5242880 5242880 6029312 0.00625 0 0 0.15 1.00625 +131072 0 2 0 0 5242880 5242880 6160384 0.00625 0 0 0.175 1.00625 +131072 0 2 0 0 5242880 5242880 6291456 0.00625 0 0 0.2 1.00625 +131072 0 2 0 0 5242880 5242880 6422528 0.00625 0 0 0.225 1.00625 +131072 0 2 0 0 5242880 5242880 6553600 0.00625 0 0 0.25 1.00625 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 2621440 0.0125 0 0 -0.5 1.0125 +262144 0 1 0 0 5242880 5242880 2883584 0.0125 0 0 -0.45 1.0125 +262144 0 1 0 0 5242880 5242880 3145728 0.0125 0 0 -0.4 1.0125 +262144 0 1 0 0 5242880 5242880 3407872 0.0125 0 0 -0.35 1.0125 +262144 0 1 0 0 5242880 5242880 3670016 0.0125 0 0 -0.3 1.0125 +262144 0 1 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 1.0125 +262144 0 1 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 1.0125 +262144 0 1 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 1.0125 +262144 0 1 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 1.01250000000873 +262144 0 1 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 1.0125 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 1 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 1.0125 +262144 0 1 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 1.01250000000873 +262144 0 1 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 1.0125 +262144 0 1 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 1.0125 +262144 0 1 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 1.0125 +262144 0 1 0 0 5242880 5242880 6815744 0.0125 0 0 0.3 1.0125 +262144 0 1 0 0 5242880 5242880 7077888 0.0125 0 0 0.35 1.0125 +262144 0 1 0 0 5242880 5242880 7340032 0.0125 0 0 0.4 1.0125 +262144 0 1 0 0 5242880 5242880 7602176 0.0125 0 0 0.45 1.0125 +262144 0 1 0 0 5242880 5242880 7864320 0.0125 0 0 0.5 1.0125 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 1.0125 +262144 0 2 0 0 5242880 5242880 4063232 0.0125 0 0 -0.225 1.0125 +262144 0 2 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 1.0125 +262144 0 2 0 0 5242880 5242880 4325376 0.0125 0 0 -0.175 1.01249999999945 +262144 0 2 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 1.0125 +262144 0 2 0 0 5242880 5242880 4587520 0.0125 0 0 -0.125 1.01250000000491 +262144 0 2 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 1.01250000000873 +262144 0 2 0 0 5242880 5242880 4849664 0.0125 0 0 -0.075 1.0125 +262144 0 2 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 1.0125 +262144 0 2 0 0 5242880 5242880 5111808 0.0125 0 0 -0.025 1.0125 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1.0125 +262144 0 2 0 0 5242880 5242880 5373952 0.0125 0 0 0.025 1.0125 +262144 0 2 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 1.0125 +262144 0 2 0 0 5242880 5242880 5636096 0.0125 0 0 0.075 1.0125 +262144 0 2 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 1.01250000000873 +262144 0 2 0 0 5242880 5242880 5898240 0.0125 0 0 0.125 1.01250000000491 +262144 0 2 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 1.0125 +262144 0 2 0 0 5242880 5242880 6160384 0.0125 0 0 0.175 1.01249999999945 +262144 0 2 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 1.0125 +262144 0 2 0 0 5242880 5242880 6422528 0.0125 0 0 0.225 1.0125 +262144 0 2 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 1.0125 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 3932160 0.01875 0 0 -0.25 1.01875 +393216 0 2 0 0 5242880 5242880 4063232 0.01875 0 0 -0.225 1.01874999999964 +393216 0 2 0 0 5242880 5242880 4194304 0.01875 0 0 -0.2 1.01874999999937 +393216 0 2 0 0 5242880 5242880 4325376 0.01875 0 0 -0.175 1.01874999999822 +393216 0 2 0 0 5242880 5242880 4456448 0.01875 0 0 -0.15 1.01875000000001 +393216 0 2 0 0 5242880 5242880 4587520 0.01875 0 0 -0.125 1.01875000001291 +393216 0 2 0 0 5242880 5242880 4718592 0.01875 0 0 -0.1 1.01875000002589 +393216 0 2 0 0 5242880 5242880 4849664 0.01875 0 0 -0.075 1.01875 +393216 0 2 0 0 5242880 5242880 4980736 0.01875 0 0 -0.05 1.01875000000016 +393216 0 2 0 0 5242880 5242880 5111808 0.01875 0 0 -0.025 1.01875 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.01875 +393216 0 2 0 0 5242880 5242880 5373952 0.01875 0 0 0.025 1.01875 +393216 0 2 0 0 5242880 5242880 5505024 0.01875 0 0 0.05 1.01875000000016 +393216 0 2 0 0 5242880 5242880 5636096 0.01875 0 0 0.075 1.01875 +393216 0 2 0 0 5242880 5242880 5767168 0.01875 0 0 0.1 1.01875000002589 +393216 0 2 0 0 5242880 5242880 5898240 0.01875 0 0 0.125 1.01875000001291 +393216 0 2 0 0 5242880 5242880 6029312 0.01875 0 0 0.15 1.01875000000001 +393216 0 2 0 0 5242880 5242880 6160384 0.01875 0 0 0.175 1.01874999999822 +393216 0 2 0 0 5242880 5242880 6291456 0.01875 0 0 0.2 1.01874999999937 +393216 0 2 0 0 5242880 5242880 6422528 0.01875 0 0 0.225 1.01874999999964 +393216 0 2 0 0 5242880 5242880 6553600 0.01875 0 0 0.25 1.01875 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 0 0.025 0 0 -1 1.025 +524288 0 0 0 0 5242880 5242880 524288 0.025 0 0 -0.9 1.025 +524288 0 0 0 0 5242880 5242880 1048576 0.025 0 0 -0.8 1.025 +524288 0 0 0 0 5242880 5242880 1572864 0.025 0 0 -0.7 1.025 +524288 0 0 0 0 5242880 5242880 2097152 0.025 0 0 -0.6 1.025 +524288 0 0 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 1.025 +524288 0 0 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 1.025 +524288 0 0 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 1.025 +524288 0 0 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 1.02499999999832 +524288 0 0 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.02500000004247 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 0 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.02500000004247 +524288 0 0 0 0 5242880 5242880 6291456 0.025 0 0 0.2 1.02499999999832 +524288 0 0 0 0 5242880 5242880 6815744 0.025 0 0 0.3 1.025 +524288 0 0 0 0 5242880 5242880 7340032 0.025 0 0 0.4 1.025 +524288 0 0 0 0 5242880 5242880 7864320 0.025 0 0 0.5 1.025 +524288 0 0 0 0 5242880 5242880 8388608 0.025 0 0 0.6 1.025 +524288 0 0 0 0 5242880 5242880 8912896 0.025 0 0 0.7 1.025 +524288 0 0 0 0 5242880 5242880 9437184 0.025 0 0 0.8 1.025 +524288 0 0 0 0 5242880 5242880 9961472 0.025 0 0 0.9 1.025 +524288 0 0 0 0 5242880 5242880 10485760 0.025 0 0 1 1.025 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 1.025 +524288 0 1 0 0 5242880 5242880 2883584 0.025 0 0 -0.45 1.025 +524288 0 1 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 1.025 +524288 0 1 0 0 5242880 5242880 3407872 0.025 0 0 -0.35 1.02500000000011 +524288 0 1 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 1.025 +524288 0 1 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 1.0249999999964 +524288 0 1 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 1.02499999999832 +524288 0 1 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 1.02500000000003 +524288 0 1 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.02500000004247 +524288 0 1 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 1.02500000000073 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 1 0 0 5242880 5242880 5505024 0.025 0 0 0.05 1.02500000000073 +524288 0 1 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.02500000004247 +524288 0 1 0 0 5242880 5242880 6029312 0.025 0 0 0.15 1.02500000000003 +524288 0 1 0 0 5242880 5242880 6291456 0.025 0 0 0.2 1.02499999999832 +524288 0 1 0 0 5242880 5242880 6553600 0.025 0 0 0.25 1.0249999999964 +524288 0 1 0 0 5242880 5242880 6815744 0.025 0 0 0.3 1.025 +524288 0 1 0 0 5242880 5242880 7077888 0.025 0 0 0.35 1.02500000000011 +524288 0 1 0 0 5242880 5242880 7340032 0.025 0 0 0.4 1.025 +524288 0 1 0 0 5242880 5242880 7602176 0.025 0 0 0.45 1.025 +524288 0 1 0 0 5242880 5242880 7864320 0.025 0 0 0.5 1.025 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 1.0249999999964 +524288 0 2 0 0 5242880 5242880 4063232 0.025 0 0 -0.225 1.02499999999703 +524288 0 2 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 1.02499999999832 +524288 0 2 0 0 5242880 5242880 4325376 0.025 0 0 -0.175 1.02499999999664 +524288 0 2 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 1.02500000000003 +524288 0 2 0 0 5242880 5242880 4587520 0.025 0 0 -0.125 1.02500000002396 +524288 0 2 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.02500000004247 +524288 0 2 0 0 5242880 5242880 4849664 0.025 0 0 -0.075 1.02500000000014 +524288 0 2 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 1.02500000000073 +524288 0 2 0 0 5242880 5242880 5111808 0.025 0 0 -0.025 1.02500000000001 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.02500000000002 +524288 0 2 0 0 5242880 5242880 5373952 0.025 0 0 0.025 1.02500000000001 +524288 0 2 0 0 5242880 5242880 5505024 0.025 0 0 0.05 1.02500000000073 +524288 0 2 0 0 5242880 5242880 5636096 0.025 0 0 0.075 1.02500000000014 +524288 0 2 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.02500000004247 +524288 0 2 0 0 5242880 5242880 5898240 0.025 0 0 0.125 1.02500000002396 +524288 0 2 0 0 5242880 5242880 6029312 0.025 0 0 0.15 1.02500000000003 +524288 0 2 0 0 5242880 5242880 6160384 0.025 0 0 0.175 1.02499999999664 +524288 0 2 0 0 5242880 5242880 6291456 0.025 0 0 0.2 1.02499999999832 +524288 0 2 0 0 5242880 5242880 6422528 0.025 0 0 0.225 1.02499999999703 +524288 0 2 0 0 5242880 5242880 6553600 0.025 0 0 0.25 1.0249999999964 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 3932160 0.03125 0 0 -0.25 1.0312499999947 +655360 0 2 0 0 5242880 5242880 4063232 0.03125 0 0 -0.225 1.03124999999534 +655360 0 2 0 0 5242880 5242880 4194304 0.03125 0 0 -0.2 1.03124999999702 +655360 0 2 0 0 5242880 5242880 4325376 0.03125 0 0 -0.175 1.03124999999494 +655360 0 2 0 0 5242880 5242880 4456448 0.03125 0 0 -0.15 1.03124999999993 +655360 0 2 0 0 5242880 5242880 4587520 0.03125 0 0 -0.125 1.03125000003312 +655360 0 2 0 0 5242880 5242880 4718592 0.03125 0 0 -0.1 1.03125000005828 +655360 0 2 0 0 5242880 5242880 4849664 0.03125 0 0 -0.075 1.03125000000063 +655360 0 2 0 0 5242880 5242880 4980736 0.03125 0 0 -0.05 1.03125000000198 +655360 0 2 0 0 5242880 5242880 5111808 0.03125 0 0 -0.025 1.03125000000007 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.0312500000001 +655360 0 2 0 0 5242880 5242880 5373952 0.03125 0 0 0.025 1.03125000000007 +655360 0 2 0 0 5242880 5242880 5505024 0.03125 0 0 0.05 1.03125000000198 +655360 0 2 0 0 5242880 5242880 5636096 0.03125 0 0 0.075 1.03125000000063 +655360 0 2 0 0 5242880 5242880 5767168 0.03125 0 0 0.1 1.03125000005828 +655360 0 2 0 0 5242880 5242880 5898240 0.03125 0 0 0.125 1.03125000003312 +655360 0 2 0 0 5242880 5242880 6029312 0.03125 0 0 0.15 1.03124999999993 +655360 0 2 0 0 5242880 5242880 6160384 0.03125 0 0 0.175 1.03124999999494 +655360 0 2 0 0 5242880 5242880 6291456 0.03125 0 0 0.2 1.03124999999702 +655360 0 2 0 0 5242880 5242880 6422528 0.03125 0 0 0.225 1.03124999999534 +655360 0 2 0 0 5242880 5242880 6553600 0.03125 0 0 0.25 1.0312499999947 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 2621440 0.0375 0 0 -0.5 1.0375 +786432 0 1 0 0 5242880 5242880 2883584 0.0375 0 0 -0.45 1.03749999999999 +786432 0 1 0 0 5242880 5242880 3145728 0.0375 0 0 -0.4 1.03749999999999 +786432 0 1 0 0 5242880 5242880 3407872 0.0375 0 0 -0.35 1.03750000000033 +786432 0 1 0 0 5242880 5242880 3670016 0.0375 0 0 -0.3 1.03750000000009 +786432 0 1 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 1.03749999999307 +786432 0 1 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 1.03749999999542 +786432 0 1 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 1.03749999999975 +786432 0 1 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 1.0375000000732 +786432 0 1 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 1.03750000000421 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 1 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 1.03750000000421 +786432 0 1 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 1.0375000000732 +786432 0 1 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 1.03749999999975 +786432 0 1 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 1.03749999999542 +786432 0 1 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 1.03749999999307 +786432 0 1 0 0 5242880 5242880 6815744 0.0375 0 0 0.3 1.03750000000009 +786432 0 1 0 0 5242880 5242880 7077888 0.0375 0 0 0.35 1.03750000000033 +786432 0 1 0 0 5242880 5242880 7340032 0.0375 0 0 0.4 1.03749999999999 +786432 0 1 0 0 5242880 5242880 7602176 0.0375 0 0 0.45 1.03749999999999 +786432 0 1 0 0 5242880 5242880 7864320 0.0375 0 0 0.5 1.0375 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 1.03749999999307 +786432 0 2 0 0 5242880 5242880 4063232 0.0375 0 0 -0.225 1.03749999999353 +786432 0 2 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 1.03749999999542 +786432 0 2 0 0 5242880 5242880 4325376 0.0375 0 0 -0.175 1.03749999999314 +786432 0 2 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 1.03749999999975 +786432 0 2 0 0 5242880 5242880 4587520 0.0375 0 0 -0.125 1.03750000004106 +786432 0 2 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 1.0375000000732 +786432 0 2 0 0 5242880 5242880 4849664 0.0375 0 0 -0.075 1.03750000000169 +786432 0 2 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 1.03750000000421 +786432 0 2 0 0 5242880 5242880 5111808 0.0375 0 0 -0.025 1.03750000000026 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.03750000000037 +786432 0 2 0 0 5242880 5242880 5373952 0.0375 0 0 0.025 1.03750000000026 +786432 0 2 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 1.03750000000421 +786432 0 2 0 0 5242880 5242880 5636096 0.0375 0 0 0.075 1.03750000000169 +786432 0 2 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 1.0375000000732 +786432 0 2 0 0 5242880 5242880 5898240 0.0375 0 0 0.125 1.03750000004106 +786432 0 2 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 1.03749999999975 +786432 0 2 0 0 5242880 5242880 6160384 0.0375 0 0 0.175 1.03749999999314 +786432 0 2 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 1.03749999999542 +786432 0 2 0 0 5242880 5242880 6422528 0.0375 0 0 0.225 1.03749999999353 +786432 0 2 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 1.03749999999307 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 3932160 0.04375 0 0 -0.25 1.04374999999102 +917504 0 2 0 0 5242880 5242880 4063232 0.04375 0 0 -0.225 1.04374999999181 +917504 0 2 0 0 5242880 5242880 4194304 0.04375 0 0 -0.2 1.04374999999437 +917504 0 2 0 0 5242880 5242880 4325376 0.04375 0 0 -0.175 1.04374999999151 +917504 0 2 0 0 5242880 5242880 4456448 0.04375 0 0 -0.15 1.04374999999929 +917504 0 2 0 0 5242880 5242880 4587520 0.04375 0 0 -0.125 1.04375000004884 +917504 0 2 0 0 5242880 5242880 4718592 0.04375 0 0 -0.1 1.04375000008715 +917504 0 2 0 0 5242880 5242880 4849664 0.04375 0 0 -0.075 1.04375000000356 +917504 0 2 0 0 5242880 5242880 4980736 0.04375 0 0 -0.05 1.04375000000769 +917504 0 2 0 0 5242880 5242880 5111808 0.04375 0 0 -0.025 1.04375000000072 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.043750000001 +917504 0 2 0 0 5242880 5242880 5373952 0.04375 0 0 0.025 1.04375000000072 +917504 0 2 0 0 5242880 5242880 5505024 0.04375 0 0 0.05 1.04375000000769 +917504 0 2 0 0 5242880 5242880 5636096 0.04375 0 0 0.075 1.04375000000356 +917504 0 2 0 0 5242880 5242880 5767168 0.04375 0 0 0.1 1.04375000008715 +917504 0 2 0 0 5242880 5242880 5898240 0.04375 0 0 0.125 1.04375000004884 +917504 0 2 0 0 5242880 5242880 6029312 0.04375 0 0 0.15 1.04374999999929 +917504 0 2 0 0 5242880 5242880 6160384 0.04375 0 0 0.175 1.04374999999151 +917504 0 2 0 0 5242880 5242880 6291456 0.04375 0 0 0.2 1.04374999999437 +917504 0 2 0 0 5242880 5242880 6422528 0.04375 0 0 0.225 1.04374999999181 +917504 0 2 0 0 5242880 5242880 6553600 0.04375 0 0 0.25 1.04374999999102 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 0 0.05 0 0 -1 1.05 +1048576 0 0 0 0 5242880 5242880 524288 0.05 0 0 -0.9 1.05 +1048576 0 0 0 0 5242880 5242880 1048576 0.05 0 0 -0.8 1.05 +1048576 0 0 0 0 5242880 5242880 1572864 0.05 0 0 -0.7 1.05 +1048576 0 0 0 0 5242880 5242880 2097152 0.05 0 0 -0.6 1.05 +1048576 0 0 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 1.05 +1048576 0 0 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 1.04999999999998 +1048576 0 0 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 1.05000000000024 +1048576 0 0 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.04999999999358 +1048576 0 0 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.05000000010013 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 0 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.05000000010013 +1048576 0 0 0 0 5242880 5242880 6291456 0.05 0 0 0.2 1.04999999999358 +1048576 0 0 0 0 5242880 5242880 6815744 0.05 0 0 0.3 1.05000000000024 +1048576 0 0 0 0 5242880 5242880 7340032 0.05 0 0 0.4 1.04999999999998 +1048576 0 0 0 0 5242880 5242880 7864320 0.05 0 0 0.5 1.05 +1048576 0 0 0 0 5242880 5242880 8388608 0.05 0 0 0.6 1.05 +1048576 0 0 0 0 5242880 5242880 8912896 0.05 0 0 0.7 1.05 +1048576 0 0 0 0 5242880 5242880 9437184 0.05 0 0 0.8 1.05 +1048576 0 0 0 0 5242880 5242880 9961472 0.05 0 0 0.9 1.05 +1048576 0 0 0 0 5242880 5242880 10485760 0.05 0 0 1 1.05 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 1.05 +1048576 0 1 0 0 5242880 5242880 2883584 0.05 0 0 -0.45 1.04999999999998 +1048576 0 1 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 1.04999999999998 +1048576 0 1 0 0 5242880 5242880 3407872 0.05 0 0 -0.35 1.05000000000053 +1048576 0 1 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 1.05000000000024 +1048576 0 1 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 1.04999999999027 +1048576 0 1 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.04999999999358 +1048576 0 1 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 1.04999999999861 +1048576 0 1 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.05000000010013 +1048576 0 1 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 1.05000000001273 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 1 0 0 5242880 5242880 5505024 0.05 0 0 0.05 1.05000000001273 +1048576 0 1 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.05000000010013 +1048576 0 1 0 0 5242880 5242880 6029312 0.05 0 0 0.15 1.04999999999861 +1048576 0 1 0 0 5242880 5242880 6291456 0.05 0 0 0.2 1.04999999999358 +1048576 0 1 0 0 5242880 5242880 6553600 0.05 0 0 0.25 1.04999999999027 +1048576 0 1 0 0 5242880 5242880 6815744 0.05 0 0 0.3 1.05000000000024 +1048576 0 1 0 0 5242880 5242880 7077888 0.05 0 0 0.35 1.05000000000053 +1048576 0 1 0 0 5242880 5242880 7340032 0.05 0 0 0.4 1.04999999999998 +1048576 0 1 0 0 5242880 5242880 7602176 0.05 0 0 0.45 1.04999999999998 +1048576 0 1 0 0 5242880 5242880 7864320 0.05 0 0 0.5 1.05 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 1.04999999999027 +1048576 0 2 0 0 5242880 5242880 4063232 0.05 0 0 -0.225 1.04999999999099 +1048576 0 2 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.04999999999358 +1048576 0 2 0 0 5242880 5242880 4325376 0.05 0 0 -0.175 1.04999999998996 +1048576 0 2 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 1.04999999999861 +1048576 0 2 0 0 5242880 5242880 4587520 0.05 0 0 -0.125 1.05000000005515 +1048576 0 2 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.05000000010013 +1048576 0 2 0 0 5242880 5242880 4849664 0.05 0 0 -0.075 1.0500000000065 +1048576 0 2 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 1.05000000001273 +1048576 0 2 0 0 5242880 5242880 5111808 0.05 0 0 -0.025 1.05000000000165 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.05000000000227 +1048576 0 2 0 0 5242880 5242880 5373952 0.05 0 0 0.025 1.05000000000165 +1048576 0 2 0 0 5242880 5242880 5505024 0.05 0 0 0.05 1.05000000001273 +1048576 0 2 0 0 5242880 5242880 5636096 0.05 0 0 0.075 1.0500000000065 +1048576 0 2 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.05000000010013 +1048576 0 2 0 0 5242880 5242880 5898240 0.05 0 0 0.125 1.05000000005515 +1048576 0 2 0 0 5242880 5242880 6029312 0.05 0 0 0.15 1.04999999999861 +1048576 0 2 0 0 5242880 5242880 6160384 0.05 0 0 0.175 1.04999999998996 +1048576 0 2 0 0 5242880 5242880 6291456 0.05 0 0 0.2 1.04999999999358 +1048576 0 2 0 0 5242880 5242880 6422528 0.05 0 0 0.225 1.04999999999099 +1048576 0 2 0 0 5242880 5242880 6553600 0.05 0 0 0.25 1.04999999999027 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 3932160 0.05625 0 0 -0.25 1.05624999998901 +1179648 0 2 0 0 5242880 5242880 4063232 0.05625 0 0 -0.225 1.05624999999015 +1179648 0 2 0 0 5242880 5242880 4194304 0.05625 0 0 -0.2 1.05624999999326 +1179648 0 2 0 0 5242880 5242880 4325376 0.05625 0 0 -0.175 1.05624999998853 +1179648 0 2 0 0 5242880 5242880 4456448 0.05625 0 0 -0.15 1.05624999999763 +1179648 0 2 0 0 5242880 5242880 4587520 0.05625 0 0 -0.125 1.05625000006123 +1179648 0 2 0 0 5242880 5242880 4718592 0.05625 0 0 -0.1 1.05625000011224 +1179648 0 2 0 0 5242880 5242880 4849664 0.05625 0 0 -0.075 1.05625000001079 +1179648 0 2 0 0 5242880 5242880 4980736 0.05625 0 0 -0.05 1.05625000001963 +1179648 0 2 0 0 5242880 5242880 5111808 0.05625 0 0 -0.025 1.05625000000332 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.05625000000452 +1179648 0 2 0 0 5242880 5242880 5373952 0.05625 0 0 0.025 1.05625000000332 +1179648 0 2 0 0 5242880 5242880 5505024 0.05625 0 0 0.05 1.05625000001963 +1179648 0 2 0 0 5242880 5242880 5636096 0.05625 0 0 0.075 1.05625000001079 +1179648 0 2 0 0 5242880 5242880 5767168 0.05625 0 0 0.1 1.05625000011224 +1179648 0 2 0 0 5242880 5242880 5898240 0.05625 0 0 0.125 1.05625000006123 +1179648 0 2 0 0 5242880 5242880 6029312 0.05625 0 0 0.15 1.05624999999763 +1179648 0 2 0 0 5242880 5242880 6160384 0.05625 0 0 0.175 1.05624999998853 +1179648 0 2 0 0 5242880 5242880 6291456 0.05625 0 0 0.2 1.05624999999326 +1179648 0 2 0 0 5242880 5242880 6422528 0.05625 0 0 0.225 1.05624999999015 +1179648 0 2 0 0 5242880 5242880 6553600 0.05625 0 0 0.25 1.05624999998901 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 2621440 0.0625 0 0 -0.5 1.0625 +1310720 0 1 0 0 5242880 5242880 2883584 0.0625 0 0 -0.45 1.06249999999993 +1310720 0 1 0 0 5242880 5242880 3145728 0.0625 0 0 -0.4 1.06249999999994 +1310720 0 1 0 0 5242880 5242880 3407872 0.0625 0 0 -0.35 1.06250000000083 +1310720 0 1 0 0 5242880 5242880 3670016 0.0625 0 0 -0.3 1.06250000000062 +1310720 0 1 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 1.06249999998785 +1310720 0 1 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.06249999999333 +1310720 0 1 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 1.06249999999637 +1310720 0 1 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 1.06250000012362 +1310720 0 1 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 1.06250000002869 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 1 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 1.06250000002869 +1310720 0 1 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 1.06250000012362 +1310720 0 1 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 1.06249999999637 +1310720 0 1 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 1.06249999999333 +1310720 0 1 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 1.06249999998785 +1310720 0 1 0 0 5242880 5242880 6815744 0.0625 0 0 0.3 1.06250000000062 +1310720 0 1 0 0 5242880 5242880 7077888 0.0625 0 0 0.35 1.06250000000083 +1310720 0 1 0 0 5242880 5242880 7340032 0.0625 0 0 0.4 1.06249999999994 +1310720 0 1 0 0 5242880 5242880 7602176 0.0625 0 0 0.45 1.06249999999993 +1310720 0 1 0 0 5242880 5242880 7864320 0.0625 0 0 0.5 1.0625 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 1.06249999998785 +1310720 0 2 0 0 5242880 5242880 4063232 0.0625 0 0 -0.225 1.0624999999896 +1310720 0 2 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.06249999999333 +1310720 0 2 0 0 5242880 5242880 4325376 0.0625 0 0 -0.175 1.06249999998724 +1310720 0 2 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 1.06249999999637 +1310720 0 2 0 0 5242880 5242880 4587520 0.0625 0 0 -0.125 1.06250000006612 +1310720 0 2 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 1.06250000012362 +1310720 0 2 0 0 5242880 5242880 4849664 0.0625 0 0 -0.075 1.06250000001668 +1310720 0 2 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 1.06250000002869 +1310720 0 2 0 0 5242880 5242880 5111808 0.0625 0 0 -0.025 1.06250000000608 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.0625000000082 +1310720 0 2 0 0 5242880 5242880 5373952 0.0625 0 0 0.025 1.06250000000608 +1310720 0 2 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 1.06250000002869 +1310720 0 2 0 0 5242880 5242880 5636096 0.0625 0 0 0.075 1.06250000001668 +1310720 0 2 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 1.06250000012362 +1310720 0 2 0 0 5242880 5242880 5898240 0.0625 0 0 0.125 1.06250000006612 +1310720 0 2 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 1.06249999999637 +1310720 0 2 0 0 5242880 5242880 6160384 0.0625 0 0 0.175 1.06249999998724 +1310720 0 2 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 1.06249999999333 +1310720 0 2 0 0 5242880 5242880 6422528 0.0625 0 0 0.225 1.0624999999896 +1310720 0 2 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 1.06249999998785 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 3932160 0.06875 0 0 -0.25 1.06874999998681 +1441792 0 2 0 0 5242880 5242880 4063232 0.06875 0 0 -0.225 1.06874999998947 +1441792 0 2 0 0 5242880 5242880 4194304 0.06875 0 0 -0.2 1.068749999994 +1441792 0 2 0 0 5242880 5242880 4325376 0.06875 0 0 -0.175 1.06874999998618 +1441792 0 2 0 0 5242880 5242880 4456448 0.06875 0 0 -0.15 1.06874999999489 +1441792 0 2 0 0 5242880 5242880 4587520 0.06875 0 0 -0.125 1.06875000007061 +1441792 0 2 0 0 5242880 5242880 4718592 0.06875 0 0 -0.1 1.06875000013445 +1441792 0 2 0 0 5242880 5242880 4849664 0.06875 0 0 -0.075 1.06875000002444 +1441792 0 2 0 0 5242880 5242880 4980736 0.06875 0 0 -0.05 1.06875000004019 +1441792 0 2 0 0 5242880 5242880 5111808 0.06875 0 0 -0.025 1.0687500000103 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.0687500000138 +1441792 0 2 0 0 5242880 5242880 5373952 0.06875 0 0 0.025 1.0687500000103 +1441792 0 2 0 0 5242880 5242880 5505024 0.06875 0 0 0.05 1.06875000004019 +1441792 0 2 0 0 5242880 5242880 5636096 0.06875 0 0 0.075 1.06875000002444 +1441792 0 2 0 0 5242880 5242880 5767168 0.06875 0 0 0.1 1.06875000013445 +1441792 0 2 0 0 5242880 5242880 5898240 0.06875 0 0 0.125 1.06875000007061 +1441792 0 2 0 0 5242880 5242880 6029312 0.06875 0 0 0.15 1.06874999999489 +1441792 0 2 0 0 5242880 5242880 6160384 0.06875 0 0 0.175 1.06874999998618 +1441792 0 2 0 0 5242880 5242880 6291456 0.06875 0 0 0.2 1.068749999994 +1441792 0 2 0 0 5242880 5242880 6422528 0.06875 0 0 0.225 1.06874999998947 +1441792 0 2 0 0 5242880 5242880 6553600 0.06875 0 0 0.25 1.06874999998681 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 0 0.075 0 0 -1 1.075 +1572864 0 0 0 0 5242880 5242880 524288 0.075 0 0 -0.9 1.075 +1572864 0 0 0 0 5242880 5242880 1048576 0.075 0 0 -0.8 1.075 +1572864 0 0 0 0 5242880 5242880 1572864 0.075 0 0 -0.7 1.075 +1572864 0 0 0 0 5242880 5242880 2097152 0.075 0 0 -0.6 1.075 +1572864 0 0 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 1.075 +1572864 0 0 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 1.07499999999987 +1572864 0 0 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 1.07500000000118 +1572864 0 0 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.07499999999519 +1572864 0 0 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.07500000014499 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 0 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.07500000014499 +1572864 0 0 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.07499999999519 +1572864 0 0 0 0 5242880 5242880 6815744 0.075 0 0 0.3 1.07500000000118 +1572864 0 0 0 0 5242880 5242880 7340032 0.075 0 0 0.4 1.07499999999987 +1572864 0 0 0 0 5242880 5242880 7864320 0.075 0 0 0.5 1.075 +1572864 0 0 0 0 5242880 5242880 8388608 0.075 0 0 0.6 1.075 +1572864 0 0 0 0 5242880 5242880 8912896 0.075 0 0 0.7 1.075 +1572864 0 0 0 0 5242880 5242880 9437184 0.075 0 0 0.8 1.075 +1572864 0 0 0 0 5242880 5242880 9961472 0.075 0 0 0.9 1.075 +1572864 0 0 0 0 5242880 5242880 10485760 0.075 0 0 1 1.075 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 1.075 +1572864 0 1 0 0 5242880 5242880 2883584 0.075 0 0 -0.45 1.07499999999986 +1572864 0 1 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 1.07499999999987 +1572864 0 1 0 0 5242880 5242880 3407872 0.075 0 0 -0.35 1.07500000000089 +1572864 0 1 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 1.07500000000118 +1572864 0 1 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 1.0749999999889 +1572864 0 1 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.07499999999519 +1572864 0 1 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 1.07499999999316 +1572864 0 1 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.07500000014499 +1572864 0 1 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 1.0750000000544 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 1 0 0 5242880 5242880 5505024 0.075 0 0 0.05 1.0750000000544 +1572864 0 1 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.07500000014499 +1572864 0 1 0 0 5242880 5242880 6029312 0.075 0 0 0.15 1.07499999999316 +1572864 0 1 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.07499999999519 +1572864 0 1 0 0 5242880 5242880 6553600 0.075 0 0 0.25 1.0749999999889 +1572864 0 1 0 0 5242880 5242880 6815744 0.075 0 0 0.3 1.07500000000118 +1572864 0 1 0 0 5242880 5242880 7077888 0.075 0 0 0.35 1.07500000000089 +1572864 0 1 0 0 5242880 5242880 7340032 0.075 0 0 0.4 1.07499999999987 +1572864 0 1 0 0 5242880 5242880 7602176 0.075 0 0 0.45 1.07499999999986 +1572864 0 1 0 0 5242880 5242880 7864320 0.075 0 0 0.5 1.075 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 1.0749999999889 +1572864 0 2 0 0 5242880 5242880 4063232 0.075 0 0 -0.225 1.07499999999141 +1572864 0 2 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.07499999999519 +1572864 0 2 0 0 5242880 5242880 4325376 0.075 0 0 -0.175 1.07499999998508 +1572864 0 2 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 1.07499999999316 +1572864 0 2 0 0 5242880 5242880 4587520 0.075 0 0 -0.125 1.0750000000746 +1572864 0 2 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.07500000014499 +1572864 0 2 0 0 5242880 5242880 4849664 0.075 0 0 -0.075 1.07500000003426 +1572864 0 2 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 1.0750000000544 +1572864 0 2 0 0 5242880 5242880 5111808 0.075 0 0 -0.025 1.07500000001642 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.07500000002188 +1572864 0 2 0 0 5242880 5242880 5373952 0.075 0 0 0.025 1.07500000001642 +1572864 0 2 0 0 5242880 5242880 5505024 0.075 0 0 0.05 1.0750000000544 +1572864 0 2 0 0 5242880 5242880 5636096 0.075 0 0 0.075 1.07500000003426 +1572864 0 2 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.07500000014499 +1572864 0 2 0 0 5242880 5242880 5898240 0.075 0 0 0.125 1.0750000000746 +1572864 0 2 0 0 5242880 5242880 6029312 0.075 0 0 0.15 1.07499999999316 +1572864 0 2 0 0 5242880 5242880 6160384 0.075 0 0 0.175 1.07499999998508 +1572864 0 2 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.07499999999519 +1572864 0 2 0 0 5242880 5242880 6422528 0.075 0 0 0.225 1.07499999999141 +1572864 0 2 0 0 5242880 5242880 6553600 0.075 0 0 0.25 1.0749999999889 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 3932160 0.08125 0 0 -0.25 1.08124999998915 +1703936 0 2 0 0 5242880 5242880 4063232 0.08125 0 0 -0.225 1.08124999999272 +1703936 0 2 0 0 5242880 5242880 4194304 0.08125 0 0 -0.2 1.08124999999712 +1703936 0 2 0 0 5242880 5242880 4325376 0.08125 0 0 -0.175 1.08124999998455 +1703936 0 2 0 0 5242880 5242880 4456448 0.08125 0 0 -0.15 1.08124999999139 +1703936 0 2 0 0 5242880 5242880 4587520 0.08125 0 0 -0.125 1.08125000007798 +1703936 0 2 0 0 5242880 5242880 4718592 0.08125 0 0 -0.1 1.08125000015544 +1703936 0 2 0 0 5242880 5242880 4849664 0.08125 0 0 -0.075 1.08125000004629 +1703936 0 2 0 0 5242880 5242880 4980736 0.08125 0 0 -0.05 1.08125000007153 +1703936 0 2 0 0 5242880 5242880 5111808 0.08125 0 0 -0.025 1.08125000002489 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.08125000003301 +1703936 0 2 0 0 5242880 5242880 5373952 0.08125 0 0 0.025 1.08125000002489 +1703936 0 2 0 0 5242880 5242880 5505024 0.08125 0 0 0.05 1.08125000007153 +1703936 0 2 0 0 5242880 5242880 5636096 0.08125 0 0 0.075 1.08125000004629 +1703936 0 2 0 0 5242880 5242880 5767168 0.08125 0 0 0.1 1.08125000015544 +1703936 0 2 0 0 5242880 5242880 5898240 0.08125 0 0 0.125 1.08125000007798 +1703936 0 2 0 0 5242880 5242880 6029312 0.08125 0 0 0.15 1.08124999999139 +1703936 0 2 0 0 5242880 5242880 6160384 0.08125 0 0 0.175 1.08124999998455 +1703936 0 2 0 0 5242880 5242880 6291456 0.08125 0 0 0.2 1.08124999999712 +1703936 0 2 0 0 5242880 5242880 6422528 0.08125 0 0 0.225 1.08124999999272 +1703936 0 2 0 0 5242880 5242880 6553600 0.08125 0 0 0.25 1.08124999998915 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 2621440 0.0875 0 0 -0.5 1.08750000000001 +1835008 0 1 0 0 5242880 5242880 2883584 0.0875 0 0 -0.45 1.08749999999976 +1835008 0 1 0 0 5242880 5242880 3145728 0.0875 0 0 -0.4 1.08749999999977 +1835008 0 1 0 0 5242880 5242880 3407872 0.0875 0 0 -0.35 1.08750000000108 +1835008 0 1 0 0 5242880 5242880 3670016 0.0875 0 0 -0.3 1.08750000000186 +1835008 0 1 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.0874999999892 +1835008 0 1 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 1.08749999999972 +1835008 0 1 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 1.08749999998951 +1835008 0 1 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 1.08750000016605 +1835008 0 1 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 1.08750000009175 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 1 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 1.08750000009175 +1835008 0 1 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 1.08750000016605 +1835008 0 1 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 1.08749999998951 +1835008 0 1 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 1.08749999999972 +1835008 0 1 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 1.0874999999892 +1835008 0 1 0 0 5242880 5242880 6815744 0.0875 0 0 0.3 1.08750000000186 +1835008 0 1 0 0 5242880 5242880 7077888 0.0875 0 0 0.35 1.08750000000108 +1835008 0 1 0 0 5242880 5242880 7340032 0.0875 0 0 0.4 1.08749999999977 +1835008 0 1 0 0 5242880 5242880 7602176 0.0875 0 0 0.45 1.08749999999976 +1835008 0 1 0 0 5242880 5242880 7864320 0.0875 0 0 0.5 1.08750000000001 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.0874999999892 +1835008 0 2 0 0 5242880 5242880 4063232 0.0875 0 0 -0.225 1.08749999999431 +1835008 0 2 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 1.08749999999972 +1835008 0 2 0 0 5242880 5242880 4325376 0.0875 0 0 -0.175 1.08749999998424 +1835008 0 2 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 1.08749999998951 +1835008 0 2 0 0 5242880 5242880 4587520 0.0875 0 0 -0.125 1.08750000008179 +1835008 0 2 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 1.08750000016605 +1835008 0 2 0 0 5242880 5242880 4849664 0.0875 0 0 -0.075 1.08750000006059 +1835008 0 2 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 1.08750000009175 +1835008 0 2 0 0 5242880 5242880 5111808 0.0875 0 0 -0.025 1.08750000003613 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.08750000004775 +1835008 0 2 0 0 5242880 5242880 5373952 0.0875 0 0 0.025 1.08750000003613 +1835008 0 2 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 1.08750000009175 +1835008 0 2 0 0 5242880 5242880 5636096 0.0875 0 0 0.075 1.08750000006059 +1835008 0 2 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 1.08750000016605 +1835008 0 2 0 0 5242880 5242880 5898240 0.0875 0 0 0.125 1.08750000008179 +1835008 0 2 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 1.08749999998951 +1835008 0 2 0 0 5242880 5242880 6160384 0.0875 0 0 0.175 1.08749999998424 +1835008 0 2 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 1.08749999999972 +1835008 0 2 0 0 5242880 5242880 6422528 0.0875 0 0 0.225 1.08749999999431 +1835008 0 2 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 1.0874999999892 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 3932160 0.09375 0 0 -0.25 1.0937499999896 +1966080 0 2 0 0 5242880 5242880 4063232 0.09375 0 0 -0.225 1.09374999999655 +1966080 0 2 0 0 5242880 5242880 4194304 0.09375 0 0 -0.2 1.09375000000317 +1966080 0 2 0 0 5242880 5242880 4325376 0.09375 0 0 -0.175 1.09374999998465 +1966080 0 2 0 0 5242880 5242880 4456448 0.09375 0 0 -0.15 1.0937499999879 +1966080 0 2 0 0 5242880 5242880 4587520 0.09375 0 0 -0.125 1.09375000008476 +1966080 0 2 0 0 5242880 5242880 4718592 0.09375 0 0 -0.1 1.09375000017699 +1966080 0 2 0 0 5242880 5242880 4849664 0.09375 0 0 -0.075 1.09375000007712 +1966080 0 2 0 0 5242880 5242880 4980736 0.09375 0 0 -0.05 1.09375000011513 +1966080 0 2 0 0 5242880 5242880 5111808 0.09375 0 0 -0.025 1.09375000005053 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.09375000006661 +1966080 0 2 0 0 5242880 5242880 5373952 0.09375 0 0 0.025 1.09375000005053 +1966080 0 2 0 0 5242880 5242880 5505024 0.09375 0 0 0.05 1.09375000011513 +1966080 0 2 0 0 5242880 5242880 5636096 0.09375 0 0 0.075 1.09375000007712 +1966080 0 2 0 0 5242880 5242880 5767168 0.09375 0 0 0.1 1.09375000017699 +1966080 0 2 0 0 5242880 5242880 5898240 0.09375 0 0 0.125 1.09375000008476 +1966080 0 2 0 0 5242880 5242880 6029312 0.09375 0 0 0.15 1.0937499999879 +1966080 0 2 0 0 5242880 5242880 6160384 0.09375 0 0 0.175 1.09374999998465 +1966080 0 2 0 0 5242880 5242880 6291456 0.09375 0 0 0.2 1.09375000000317 +1966080 0 2 0 0 5242880 5242880 6422528 0.09375 0 0 0.225 1.09374999999655 +1966080 0 2 0 0 5242880 5242880 6553600 0.09375 0 0 0.25 1.0937499999896 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 0 0.1 0 0 -1 1.1 +2097152 0 0 0 0 5242880 5242880 524288 0.1 0 0 -0.9 1.1 +2097152 0 0 0 0 5242880 5242880 1048576 0.1 0 0 -0.8 1.1 +2097152 0 0 0 0 5242880 5242880 1572864 0.1 0 0 -0.7 1.1 +2097152 0 0 0 0 5242880 5242880 2097152 0.1 0 0 -0.6 1.1 +2097152 0 0 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 1.10000000000003 +2097152 0 0 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 1.09999999999964 +2097152 0 0 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 1.10000000000268 +2097152 0 0 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.10000000000743 +2097152 0 0 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.10000000018839 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 0 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.10000000018839 +2097152 0 0 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.10000000000743 +2097152 0 0 0 0 5242880 5242880 6815744 0.1 0 0 0.3 1.10000000000268 +2097152 0 0 0 0 5242880 5242880 7340032 0.1 0 0 0.4 1.09999999999964 +2097152 0 0 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.10000000000003 +2097152 0 0 0 0 5242880 5242880 8388608 0.1 0 0 0.6 1.1 +2097152 0 0 0 0 5242880 5242880 8912896 0.1 0 0 0.7 1.1 +2097152 0 0 0 0 5242880 5242880 9437184 0.1 0 0 0.8 1.1 +2097152 0 0 0 0 5242880 5242880 9961472 0.1 0 0 0.9 1.1 +2097152 0 0 0 0 5242880 5242880 10485760 0.1 0 0 1 1.1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 1.10000000000003 +2097152 0 1 0 0 5242880 5242880 2883584 0.1 0 0 -0.45 1.09999999999964 +2097152 0 1 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 1.09999999999964 +2097152 0 1 0 0 5242880 5242880 3407872 0.1 0 0 -0.35 1.10000000000084 +2097152 0 1 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 1.10000000000268 +2097152 0 1 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 1.09999999999394 +2097152 0 1 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.10000000000743 +2097152 0 1 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 1.09999999998642 +2097152 0 1 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.10000000018839 +2097152 0 1 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 1.10000000014165 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 1 0 0 5242880 5242880 5505024 0.1 0 0 0.05 1.10000000014165 +2097152 0 1 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.10000000018839 +2097152 0 1 0 0 5242880 5242880 6029312 0.1 0 0 0.15 1.09999999998642 +2097152 0 1 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.10000000000743 +2097152 0 1 0 0 5242880 5242880 6553600 0.1 0 0 0.25 1.09999999999394 +2097152 0 1 0 0 5242880 5242880 6815744 0.1 0 0 0.3 1.10000000000268 +2097152 0 1 0 0 5242880 5242880 7077888 0.1 0 0 0.35 1.10000000000084 +2097152 0 1 0 0 5242880 5242880 7340032 0.1 0 0 0.4 1.09999999999964 +2097152 0 1 0 0 5242880 5242880 7602176 0.1 0 0 0.45 1.09999999999964 +2097152 0 1 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.10000000000003 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 1.09999999999394 +2097152 0 2 0 0 5242880 5242880 4063232 0.1 0 0 -0.225 1.10000000000145 +2097152 0 2 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.10000000000743 +2097152 0 2 0 0 5242880 5242880 4325376 0.1 0 0 -0.175 1.09999999998514 +2097152 0 2 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 1.09999999998642 +2097152 0 2 0 0 5242880 5242880 4587520 0.1 0 0 -0.125 1.10000000008901 +2097152 0 2 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.10000000018839 +2097152 0 2 0 0 5242880 5242880 4849664 0.1 0 0 -0.075 1.10000000009574 +2097152 0 2 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 1.10000000014165 +2097152 0 2 0 0 5242880 5242880 5111808 0.1 0 0 -0.025 1.1000000000684 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.10000000009002 +2097152 0 2 0 0 5242880 5242880 5373952 0.1 0 0 0.025 1.1000000000684 +2097152 0 2 0 0 5242880 5242880 5505024 0.1 0 0 0.05 1.10000000014165 +2097152 0 2 0 0 5242880 5242880 5636096 0.1 0 0 0.075 1.10000000009574 +2097152 0 2 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.10000000018839 +2097152 0 2 0 0 5242880 5242880 5898240 0.1 0 0 0.125 1.10000000008901 +2097152 0 2 0 0 5242880 5242880 6029312 0.1 0 0 0.15 1.09999999998642 +2097152 0 2 0 0 5242880 5242880 6160384 0.1 0 0 0.175 1.09999999998514 +2097152 0 2 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.10000000000743 +2097152 0 2 0 0 5242880 5242880 6422528 0.1 0 0 0.225 1.10000000000145 +2097152 0 2 0 0 5242880 5242880 6553600 0.1 0 0 0.25 1.09999999999394 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phit..asc b/Carpet/CarpetInterp/test/waveinterp/phit..asc new file mode 100644 index 000000000..e23cc92df --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit..asc @@ -0,0 +1,157 @@ +# WAVEMOL::phit (phit) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1 + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.00000000000068 + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.00000000002479 + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.00000000014416 + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.00000000046233 + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.00000000107976 + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.00000000205505 + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.0000000033708 + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 + diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.average.asc b/Carpet/CarpetInterp/test/waveinterp/phit.average.asc new file mode 100644 index 000000000..58c4aeb0f --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.average.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 1.00000000000514 +393216 0.01875 1.00000000000509 +524288 0.025 1.00000000000256 +655360 0.03125 1.00000000000228 +786432 0.0375 1.00000000000246 +917504 0.04375 1.00000000000268 +1048576 0.05 1.00000000000377 +1179648 0.05625 1.00000000000409 +1310720 0.0625 1.00000000000391 +1441792 0.06875 1.00000000000408 +1572864 0.075 1.0000000000052 +1703936 0.08125 1.00000000000555 +1835008 0.0875 1.00000000000547 +1966080 0.09375 1.00000000000555 +2097152 0.1 1.00000000000645 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.count.asc b/Carpet/CarpetInterp/test/waveinterp/phit.count.asc new file mode 100644 index 000000000..4276ce759 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.count.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000 +393216 0.01875 8000 +524288 0.025 8000 +655360 0.03125 8000 +786432 0.0375 8000 +917504 0.04375 8000 +1048576 0.05 8000 +1179648 0.05625 8000 +1310720 0.0625 8000 +1441792 0.06875 8000 +1572864 0.075 8000 +1703936 0.08125 8000 +1835008 0.0875 8000 +1966080 0.09375 8000 +2097152 0.1 8000 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.maximum.asc b/Carpet/CarpetInterp/test/waveinterp/phit.maximum.asc new file mode 100644 index 000000000..358cedfb3 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.maximum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 1.00000000827039 +393216 0.01875 1.00000000787054 +524288 0.025 1.00000000721878 +655360 0.03125 1.0000000063627 +786432 0.0375 1.00000000530544 +917504 0.04375 1.00000000415662 +1048576 0.05 1.00000000341211 +1179648 0.05625 1.00000000326784 +1310720 0.0625 1.00000000343891 +1441792 0.06875 1.00000000394363 +1572864 0.075 1.00000000436563 +1703936 0.08125 1.00000000467698 +1835008 0.0875 1.00000000485431 +1966080 0.09375 1.00000000488022 +2097152 0.1 1.00000000474456 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.minimum.asc b/Carpet/CarpetInterp/test/waveinterp/phit.minimum.asc new file mode 100644 index 000000000..3505e7e1f --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.minimum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 0.999999999483101 +393216 0.01875 0.999999999397942 +524288 0.025 0.999999999427617 +655360 0.03125 0.999999999345371 +786432 0.0375 0.999999999399089 +917504 0.04375 0.999999999449241 +1048576 0.05 0.999999999634946 +1179648 0.05625 0.999999999655201 +1310720 0.0625 0.999999999680185 +1441792 0.06875 0.999999999418723 +1572864 0.075 0.999999998455141 +1703936 0.08125 0.999999997683483 +1835008 0.0875 0.999999997080893 +1966080 0.09375 0.999999996689522 +2097152 0.1 0.999999996482608 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.norm1.asc b/Carpet/CarpetInterp/test/waveinterp/phit.norm1.asc new file mode 100644 index 000000000..58c4aeb0f --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.norm1.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 1.00000000000514 +393216 0.01875 1.00000000000509 +524288 0.025 1.00000000000256 +655360 0.03125 1.00000000000228 +786432 0.0375 1.00000000000246 +917504 0.04375 1.00000000000268 +1048576 0.05 1.00000000000377 +1179648 0.05625 1.00000000000409 +1310720 0.0625 1.00000000000391 +1441792 0.06875 1.00000000000408 +1572864 0.075 1.0000000000052 +1703936 0.08125 1.00000000000555 +1835008 0.0875 1.00000000000547 +1966080 0.09375 1.00000000000555 +2097152 0.1 1.00000000000645 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.norm2.asc b/Carpet/CarpetInterp/test/waveinterp/phit.norm2.asc new file mode 100644 index 000000000..7a3b878bb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.norm2.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 1.00000000000514 +393216 0.01875 1.00000000000509 +524288 0.025 1.00000000000256 +655360 0.03125 1.00000000000226 +786432 0.0375 1.00000000000246 +917504 0.04375 1.00000000000266 +1048576 0.05 1.00000000000374 +1179648 0.05625 1.00000000000407 +1310720 0.0625 1.00000000000396 +1441792 0.06875 1.00000000000405 +1572864 0.075 1.00000000000518 +1703936 0.08125 1.00000000000551 +1835008 0.0875 1.00000000000547 +1966080 0.09375 1.00000000000555 +2097152 0.1 1.00000000000646 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.norm_inf.asc b/Carpet/CarpetInterp/test/waveinterp/phit.norm_inf.asc new file mode 100644 index 000000000..358cedfb3 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.norm_inf.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 1 +131072 0.00625 1 +262144 0.0125 1.00000000827039 +393216 0.01875 1.00000000787054 +524288 0.025 1.00000000721878 +655360 0.03125 1.0000000063627 +786432 0.0375 1.00000000530544 +917504 0.04375 1.00000000415662 +1048576 0.05 1.00000000341211 +1179648 0.05625 1.00000000326784 +1310720 0.0625 1.00000000343891 +1441792 0.06875 1.00000000394363 +1572864 0.075 1.00000000436563 +1703936 0.08125 1.00000000467698 +1835008 0.0875 1.00000000485431 +1966080 0.09375 1.00000000488022 +2097152 0.1 1.00000000474456 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.sum.asc b/Carpet/CarpetInterp/test/waveinterp/phit.sum.asc new file mode 100644 index 000000000..f08ab6500 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.sum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phit (phit) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000.00000004109 +393216 0.01875 8000.0000000407 +524288 0.025 8000.00000002048 +655360 0.03125 8000.00000001825 +786432 0.0375 8000.0000000197 +917504 0.04375 8000.0000000214 +1048576 0.05 8000.00000003019 +1179648 0.05625 8000.00000003271 +1310720 0.0625 8000.00000003126 +1441792 0.06875 8000.00000003261 +1572864 0.075 8000.00000004164 +1703936 0.08125 8000.00000004442 +1835008 0.0875 8000.00000004379 +1966080 0.09375 8000.00000004438 +2097152 0.1 8000.0000000516 diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.x.asc b/Carpet/CarpetInterp/test/waveinterp/phit.x.asc new file mode 100644 index 000000000..8d73a3c09 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.x.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phit x (phit) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 5242880 5242880 0 -1 0 0 1 +0 0 0 0 0 524288 5242880 5242880 0 -0.9 0 0 1 +0 0 0 0 0 1048576 5242880 5242880 0 -0.8 0 0 1 +0 0 0 0 0 1572864 5242880 5242880 0 -0.7 0 0 1 +0 0 0 0 0 2097152 5242880 5242880 0 -0.6 0 0 1 +0 0 0 0 0 2621440 5242880 5242880 0 -0.5 0 0 1 +0 0 0 0 0 3145728 5242880 5242880 0 -0.4 0 0 1 +0 0 0 0 0 3670016 5242880 5242880 0 -0.3 0 0 1 +0 0 0 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 0 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 0 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 0 0 0 6815744 5242880 5242880 0 0.3 0 0 1 +0 0 0 0 0 7340032 5242880 5242880 0 0.4 0 0 1 +0 0 0 0 0 7864320 5242880 5242880 0 0.5 0 0 1 +0 0 0 0 0 8388608 5242880 5242880 0 0.6 0 0 1 +0 0 0 0 0 8912896 5242880 5242880 0 0.7 0 0 1 +0 0 0 0 0 9437184 5242880 5242880 0 0.8 0 0 1 +0 0 0 0 0 9961472 5242880 5242880 0 0.9 0 0 1 +0 0 0 0 0 10485760 5242880 5242880 0 1 0 0 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 2621440 5242880 5242880 0 -0.5 0 0 1 +0 0 1 0 0 2883584 5242880 5242880 0 -0.45 0 0 1 +0 0 1 0 0 3145728 5242880 5242880 0 -0.4 0 0 1 +0 0 1 0 0 3407872 5242880 5242880 0 -0.35 0 0 1 +0 0 1 0 0 3670016 5242880 5242880 0 -0.3 0 0 1 +0 0 1 0 0 3932160 5242880 5242880 0 -0.25 0 0 1 +0 0 1 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 1 0 0 4456448 5242880 5242880 0 -0.15 0 0 1 +0 0 1 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 1 0 0 4980736 5242880 5242880 0 -0.05 0 0 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5505024 5242880 5242880 0 0.05 0 0 1 +0 0 1 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 1 0 0 6029312 5242880 5242880 0 0.15 0 0 1 +0 0 1 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 1 0 0 6553600 5242880 5242880 0 0.25 0 0 1 +0 0 1 0 0 6815744 5242880 5242880 0 0.3 0 0 1 +0 0 1 0 0 7077888 5242880 5242880 0 0.35 0 0 1 +0 0 1 0 0 7340032 5242880 5242880 0 0.4 0 0 1 +0 0 1 0 0 7602176 5242880 5242880 0 0.45 0 0 1 +0 0 1 0 0 7864320 5242880 5242880 0 0.5 0 0 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 3932160 5242880 5242880 0 -0.25 0 0 1 +0 0 2 0 0 4063232 5242880 5242880 0 -0.225 0 0 1 +0 0 2 0 0 4194304 5242880 5242880 0 -0.2 0 0 1 +0 0 2 0 0 4325376 5242880 5242880 0 -0.175 0 0 1 +0 0 2 0 0 4456448 5242880 5242880 0 -0.15 0 0 1 +0 0 2 0 0 4587520 5242880 5242880 0 -0.125 0 0 1 +0 0 2 0 0 4718592 5242880 5242880 0 -0.1 0 0 1 +0 0 2 0 0 4849664 5242880 5242880 0 -0.075 0 0 1 +0 0 2 0 0 4980736 5242880 5242880 0 -0.05 0 0 1 +0 0 2 0 0 5111808 5242880 5242880 0 -0.025 0 0 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5373952 5242880 5242880 0 0.025 0 0 1 +0 0 2 0 0 5505024 5242880 5242880 0 0.05 0 0 1 +0 0 2 0 0 5636096 5242880 5242880 0 0.075 0 0 1 +0 0 2 0 0 5767168 5242880 5242880 0 0.1 0 0 1 +0 0 2 0 0 5898240 5242880 5242880 0 0.125 0 0 1 +0 0 2 0 0 6029312 5242880 5242880 0 0.15 0 0 1 +0 0 2 0 0 6160384 5242880 5242880 0 0.175 0 0 1 +0 0 2 0 0 6291456 5242880 5242880 0 0.2 0 0 1 +0 0 2 0 0 6422528 5242880 5242880 0 0.225 0 0 1 +0 0 2 0 0 6553600 5242880 5242880 0 0.25 0 0 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 3932160 5242880 5242880 0.00625 -0.25 0 0 1 +131072 0 2 0 0 4063232 5242880 5242880 0.00625 -0.225 0 0 1 +131072 0 2 0 0 4194304 5242880 5242880 0.00625 -0.2 0 0 1 +131072 0 2 0 0 4325376 5242880 5242880 0.00625 -0.175 0 0 1 +131072 0 2 0 0 4456448 5242880 5242880 0.00625 -0.15 0 0 1 +131072 0 2 0 0 4587520 5242880 5242880 0.00625 -0.125 0 0 1 +131072 0 2 0 0 4718592 5242880 5242880 0.00625 -0.1 0 0 1 +131072 0 2 0 0 4849664 5242880 5242880 0.00625 -0.075 0 0 1 +131072 0 2 0 0 4980736 5242880 5242880 0.00625 -0.05 0 0 1 +131072 0 2 0 0 5111808 5242880 5242880 0.00625 -0.025 0 0 1 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1 +131072 0 2 0 0 5373952 5242880 5242880 0.00625 0.025 0 0 1 +131072 0 2 0 0 5505024 5242880 5242880 0.00625 0.05 0 0 1 +131072 0 2 0 0 5636096 5242880 5242880 0.00625 0.075 0 0 1 +131072 0 2 0 0 5767168 5242880 5242880 0.00625 0.1 0 0 1 +131072 0 2 0 0 5898240 5242880 5242880 0.00625 0.125 0 0 1 +131072 0 2 0 0 6029312 5242880 5242880 0.00625 0.15 0 0 1 +131072 0 2 0 0 6160384 5242880 5242880 0.00625 0.175 0 0 1 +131072 0 2 0 0 6291456 5242880 5242880 0.00625 0.2 0 0 1 +131072 0 2 0 0 6422528 5242880 5242880 0.00625 0.225 0 0 1 +131072 0 2 0 0 6553600 5242880 5242880 0.00625 0.25 0 0 1 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 2621440 5242880 5242880 0.0125 -0.5 0 0 1 +262144 0 1 0 0 2883584 5242880 5242880 0.0125 -0.45 0 0 1 +262144 0 1 0 0 3145728 5242880 5242880 0.0125 -0.4 0 0 1 +262144 0 1 0 0 3407872 5242880 5242880 0.0125 -0.35 0 0 1 +262144 0 1 0 0 3670016 5242880 5242880 0.0125 -0.3 0 0 1 +262144 0 1 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 1 +262144 0 1 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 1 +262144 0 1 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 1 +262144 0 1 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 1.00000000277135 +262144 0 1 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 1.00000000000728 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 1 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 1.00000000000728 +262144 0 1 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 1.00000000277135 +262144 0 1 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 1 +262144 0 1 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 1 +262144 0 1 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 1 +262144 0 1 0 0 6815744 5242880 5242880 0.0125 0.3 0 0 1 +262144 0 1 0 0 7077888 5242880 5242880 0.0125 0.35 0 0 1 +262144 0 1 0 0 7340032 5242880 5242880 0.0125 0.4 0 0 1 +262144 0 1 0 0 7602176 5242880 5242880 0.0125 0.45 0 0 1 +262144 0 1 0 0 7864320 5242880 5242880 0.0125 0.5 0 0 1 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 1 +262144 0 2 0 0 4063232 5242880 5242880 0.0125 -0.225 0 0 1 +262144 0 2 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 1 +262144 0 2 0 0 4325376 5242880 5242880 0.0125 -0.175 0 0 0.999999999826791 +262144 0 2 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 1 +262144 0 2 0 0 4587520 5242880 5242880 0.0125 -0.125 0 0 1.00000000155843 +262144 0 2 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 1.00000000277135 +262144 0 2 0 0 4849664 5242880 5242880 0.0125 -0.075 0 0 0.999999999998383 +262144 0 2 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 1.00000000000728 +262144 0 2 0 0 5111808 5242880 5242880 0.0125 -0.025 0 0 1 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 2 0 0 5373952 5242880 5242880 0.0125 0.025 0 0 1 +262144 0 2 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 1.00000000000728 +262144 0 2 0 0 5636096 5242880 5242880 0.0125 0.075 0 0 0.999999999998383 +262144 0 2 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 1.00000000277135 +262144 0 2 0 0 5898240 5242880 5242880 0.0125 0.125 0 0 1.00000000155843 +262144 0 2 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 1 +262144 0 2 0 0 6160384 5242880 5242880 0.0125 0.175 0 0 0.999999999826791 +262144 0 2 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 1 +262144 0 2 0 0 6422528 5242880 5242880 0.0125 0.225 0 0 1 +262144 0 2 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 1 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 3932160 5242880 5242880 0.01875 -0.25 0 0 1 +393216 0 2 0 0 4063232 5242880 5242880 0.01875 -0.225 0 0 0.999999999945108 +393216 0 2 0 0 4194304 5242880 5242880 0.01875 -0.2 0 0 0.999999999902543 +393216 0 2 0 0 4325376 5242880 5242880 0.01875 -0.175 0 0 0.99999999974986 +393216 0 2 0 0 4456448 5242880 5242880 0.01875 -0.15 0 0 1.00000000000116 +393216 0 2 0 0 4587520 5242880 5242880 0.01875 -0.125 0 0 1.00000000176809 +393216 0 2 0 0 4718592 5242880 5242880 0.01875 -0.1 0 0 1.00000000270433 +393216 0 2 0 0 4849664 5242880 5242880 0.01875 -0.075 0 0 1.00000000000657 +393216 0 2 0 0 4980736 5242880 5242880 0.01875 -0.05 0 0 1.00000000005092 +393216 0 2 0 0 5111808 5242880 5242880 0.01875 -0.025 0 0 1.00000000000043 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.00000000000068 +393216 0 2 0 0 5373952 5242880 5242880 0.01875 0.025 0 0 1.00000000000043 +393216 0 2 0 0 5505024 5242880 5242880 0.01875 0.05 0 0 1.00000000005092 +393216 0 2 0 0 5636096 5242880 5242880 0.01875 0.075 0 0 1.00000000000657 +393216 0 2 0 0 5767168 5242880 5242880 0.01875 0.1 0 0 1.00000000270433 +393216 0 2 0 0 5898240 5242880 5242880 0.01875 0.125 0 0 1.00000000176809 +393216 0 2 0 0 6029312 5242880 5242880 0.01875 0.15 0 0 1.00000000000116 +393216 0 2 0 0 6160384 5242880 5242880 0.01875 0.175 0 0 0.99999999974986 +393216 0 2 0 0 6291456 5242880 5242880 0.01875 0.2 0 0 0.999999999902543 +393216 0 2 0 0 6422528 5242880 5242880 0.01875 0.225 0 0 0.999999999945108 +393216 0 2 0 0 6553600 5242880 5242880 0.01875 0.25 0 0 1 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 5242880 5242880 0.025 -1 0 0 1 +524288 0 0 0 0 524288 5242880 5242880 0.025 -0.9 0 0 1 +524288 0 0 0 0 1048576 5242880 5242880 0.025 -0.8 0 0 1 +524288 0 0 0 0 1572864 5242880 5242880 0.025 -0.7 0 0 1 +524288 0 0 0 0 2097152 5242880 5242880 0.025 -0.6 0 0 1 +524288 0 0 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 1 +524288 0 0 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 1 +524288 0 0 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 1 +524288 0 0 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0.999999999740114 +524288 0 0 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.00000000258949 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 0 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.00000000258949 +524288 0 0 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0.999999999740114 +524288 0 0 0 0 6815744 5242880 5242880 0.025 0.3 0 0 1 +524288 0 0 0 0 7340032 5242880 5242880 0.025 0.4 0 0 1 +524288 0 0 0 0 7864320 5242880 5242880 0.025 0.5 0 0 1 +524288 0 0 0 0 8388608 5242880 5242880 0.025 0.6 0 0 1 +524288 0 0 0 0 8912896 5242880 5242880 0.025 0.7 0 0 1 +524288 0 0 0 0 9437184 5242880 5242880 0.025 0.8 0 0 1 +524288 0 0 0 0 9961472 5242880 5242880 0.025 0.9 0 0 1 +524288 0 0 0 0 10485760 5242880 5242880 0.025 1 0 0 1 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 1 +524288 0 1 0 0 2883584 5242880 5242880 0.025 -0.45 0 0 1 +524288 0 1 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 1 +524288 0 1 0 0 3407872 5242880 5242880 0.025 -0.35 0 0 1.00000000001624 +524288 0 1 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 1 +524288 0 1 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0.999999999691971 +524288 0 1 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0.999999999740114 +524288 0 1 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 1.0000000000031 +524288 0 1 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.00000000258949 +524288 0 1 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 1.00000000013846 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 1 0 0 5505024 5242880 5242880 0.025 0.05 0 0 1.00000000013846 +524288 0 1 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.00000000258949 +524288 0 1 0 0 6029312 5242880 5242880 0.025 0.15 0 0 1.0000000000031 +524288 0 1 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0.999999999740114 +524288 0 1 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0.999999999691971 +524288 0 1 0 0 6815744 5242880 5242880 0.025 0.3 0 0 1 +524288 0 1 0 0 7077888 5242880 5242880 0.025 0.35 0 0 1.00000000001624 +524288 0 1 0 0 7340032 5242880 5242880 0.025 0.4 0 0 1 +524288 0 1 0 0 7602176 5242880 5242880 0.025 0.45 0 0 1 +524288 0 1 0 0 7864320 5242880 5242880 0.025 0.5 0 0 1 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0.999999999691971 +524288 0 2 0 0 4063232 5242880 5242880 0.025 -0.225 0 0 0.999999999680354 +524288 0 2 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0.999999999740114 +524288 0 2 0 0 4325376 5242880 5242880 0.025 -0.175 0 0 0.999999999712965 +524288 0 2 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 1.0000000000031 +524288 0 2 0 0 4587520 5242880 5242880 0.025 -0.125 0 0 1.00000000146592 +524288 0 2 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 1.00000000258949 +524288 0 2 0 0 4849664 5242880 5242880 0.025 -0.075 0 0 1.00000000004511 +524288 0 2 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 1.00000000013846 +524288 0 2 0 0 5111808 5242880 5242880 0.025 -0.025 0 0 1.00000000000435 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 2 0 0 5373952 5242880 5242880 0.025 0.025 0 0 1.00000000000435 +524288 0 2 0 0 5505024 5242880 5242880 0.025 0.05 0 0 1.00000000013846 +524288 0 2 0 0 5636096 5242880 5242880 0.025 0.075 0 0 1.00000000004511 +524288 0 2 0 0 5767168 5242880 5242880 0.025 0.1 0 0 1.00000000258949 +524288 0 2 0 0 5898240 5242880 5242880 0.025 0.125 0 0 1.00000000146592 +524288 0 2 0 0 6029312 5242880 5242880 0.025 0.15 0 0 1.0000000000031 +524288 0 2 0 0 6160384 5242880 5242880 0.025 0.175 0 0 0.999999999712965 +524288 0 2 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0.999999999740114 +524288 0 2 0 0 6422528 5242880 5242880 0.025 0.225 0 0 0.999999999680354 +524288 0 2 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0.999999999691971 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 3932160 5242880 5242880 0.03125 -0.25 0 0 0.999999999640443 +655360 0 2 0 0 4063232 5242880 5242880 0.03125 -0.225 0 0 0.999999999647753 +655360 0 2 0 0 4194304 5242880 5242880 0.03125 -0.2 0 0 0.999999999732034 +655360 0 2 0 0 4325376 5242880 5242880 0.03125 -0.175 0 0 0.999999999702523 +655360 0 2 0 0 4456448 5242880 5242880 0.03125 -0.15 0 0 0.999999999984606 +655360 0 2 0 0 4587520 5242880 5242880 0.03125 -0.125 0 0 1.00000000144041 +655360 0 2 0 0 4718592 5242880 5242880 0.03125 -0.1 0 0 1.00000000246101 +655360 0 2 0 0 4849664 5242880 5242880 0.03125 -0.075 0 0 1.00000000011784 +655360 0 2 0 0 4980736 5242880 5242880 0.03125 -0.05 0 0 1.00000000027064 +655360 0 2 0 0 5111808 5242880 5242880 0.03125 -0.025 0 0 1.00000000001744 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.00000000002479 +655360 0 2 0 0 5373952 5242880 5242880 0.03125 0.025 0 0 1.00000000001744 +655360 0 2 0 0 5505024 5242880 5242880 0.03125 0.05 0 0 1.00000000027064 +655360 0 2 0 0 5636096 5242880 5242880 0.03125 0.075 0 0 1.00000000011784 +655360 0 2 0 0 5767168 5242880 5242880 0.03125 0.1 0 0 1.00000000246101 +655360 0 2 0 0 5898240 5242880 5242880 0.03125 0.125 0 0 1.00000000144041 +655360 0 2 0 0 6029312 5242880 5242880 0.03125 0.15 0 0 0.999999999984606 +655360 0 2 0 0 6160384 5242880 5242880 0.03125 0.175 0 0 0.999999999702523 +655360 0 2 0 0 6291456 5242880 5242880 0.03125 0.2 0 0 0.999999999732034 +655360 0 2 0 0 6422528 5242880 5242880 0.03125 0.225 0 0 0.999999999647753 +655360 0 2 0 0 6553600 5242880 5242880 0.03125 0.25 0 0 0.999999999640443 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 2621440 5242880 5242880 0.0375 -0.5 0 0 1.00000000000001 +786432 0 1 0 0 2883584 5242880 5242880 0.0375 -0.45 0 0 0.999999999998945 +786432 0 1 0 0 3145728 5242880 5242880 0.0375 -0.4 0 0 0.999999999999198 +786432 0 1 0 0 3407872 5242880 5242880 0.0375 -0.35 0 0 1.00000000002395 +786432 0 1 0 0 3670016 5242880 5242880 0.0375 -0.3 0 0 1.00000000000972 +786432 0 1 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0.99999999965724 +786432 0 1 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0.999999999805198 +786432 0 1 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0.999999999952753 +786432 0 1 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 1.00000000230525 +786432 0 1 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 1.00000000044868 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 1 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 1.00000000044868 +786432 0 1 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 1.00000000230525 +786432 0 1 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0.999999999952753 +786432 0 1 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0.999999999805198 +786432 0 1 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0.99999999965724 +786432 0 1 0 0 6815744 5242880 5242880 0.0375 0.3 0 0 1.00000000000972 +786432 0 1 0 0 7077888 5242880 5242880 0.0375 0.35 0 0 1.00000000002395 +786432 0 1 0 0 7340032 5242880 5242880 0.0375 0.4 0 0 0.999999999999198 +786432 0 1 0 0 7602176 5242880 5242880 0.0375 0.45 0 0 0.999999999998945 +786432 0 1 0 0 7864320 5242880 5242880 0.0375 0.5 0 0 1.00000000000001 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0.99999999965724 +786432 0 2 0 0 4063232 5242880 5242880 0.0375 -0.225 0 0 0.999999999699967 +786432 0 2 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0.999999999805198 +786432 0 2 0 0 4325376 5242880 5242880 0.0375 -0.175 0 0 0.999999999741191 +786432 0 2 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0.999999999952753 +786432 0 2 0 0 4587520 5242880 5242880 0.0375 -0.125 0 0 1.00000000125426 +786432 0 2 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 1.00000000230525 +786432 0 2 0 0 4849664 5242880 5242880 0.0375 -0.075 0 0 1.00000000022745 +786432 0 2 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 1.00000000044868 +786432 0 2 0 0 5111808 5242880 5242880 0.0375 -0.025 0 0 1.00000000004778 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 2 0 0 5373952 5242880 5242880 0.0375 0.025 0 0 1.00000000004778 +786432 0 2 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 1.00000000044868 +786432 0 2 0 0 5636096 5242880 5242880 0.0375 0.075 0 0 1.00000000022745 +786432 0 2 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 1.00000000230525 +786432 0 2 0 0 5898240 5242880 5242880 0.0375 0.125 0 0 1.00000000125426 +786432 0 2 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0.999999999952753 +786432 0 2 0 0 6160384 5242880 5242880 0.0375 0.175 0 0 0.999999999741191 +786432 0 2 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0.999999999805198 +786432 0 2 0 0 6422528 5242880 5242880 0.0375 0.225 0 0 0.999999999699967 +786432 0 2 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0.99999999965724 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 3932160 5242880 5242880 0.04375 -0.25 0 0 0.999999999669696 +917504 0 2 0 0 4063232 5242880 5242880 0.04375 -0.225 0 0 0.999999999735269 +917504 0 2 0 0 4194304 5242880 5242880 0.04375 -0.2 0 0 0.999999999852133 +917504 0 2 0 0 4325376 5242880 5242880 0.04375 -0.175 0 0 0.999999999749234 +917504 0 2 0 0 4456448 5242880 5242880 0.04375 -0.15 0 0 0.999999999915148 +917504 0 2 0 0 4587520 5242880 5242880 0.04375 -0.125 0 0 1.00000000119155 +917504 0 2 0 0 4718592 5242880 5242880 0.04375 -0.1 0 0 1.0000000021537 +917504 0 2 0 0 4849664 5242880 5242880 0.04375 -0.075 0 0 1.00000000037762 +917504 0 2 0 0 4980736 5242880 5242880 0.04375 -0.05 0 0 1.00000000067385 +917504 0 2 0 0 5111808 5242880 5242880 0.04375 -0.025 0 0 1.00000000010524 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.00000000014416 +917504 0 2 0 0 5373952 5242880 5242880 0.04375 0.025 0 0 1.00000000010524 +917504 0 2 0 0 5505024 5242880 5242880 0.04375 0.05 0 0 1.00000000067385 +917504 0 2 0 0 5636096 5242880 5242880 0.04375 0.075 0 0 1.00000000037762 +917504 0 2 0 0 5767168 5242880 5242880 0.04375 0.1 0 0 1.0000000021537 +917504 0 2 0 0 5898240 5242880 5242880 0.04375 0.125 0 0 1.00000000119155 +917504 0 2 0 0 6029312 5242880 5242880 0.04375 0.15 0 0 0.999999999915148 +917504 0 2 0 0 6160384 5242880 5242880 0.04375 0.175 0 0 0.999999999749234 +917504 0 2 0 0 6291456 5242880 5242880 0.04375 0.2 0 0 0.999999999852133 +917504 0 2 0 0 6422528 5242880 5242880 0.04375 0.225 0 0 0.999999999735269 +917504 0 2 0 0 6553600 5242880 5242880 0.04375 0.25 0 0 0.999999999669696 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 5242880 5242880 0.05 -1 0 0 1 +1048576 0 0 0 0 524288 5242880 5242880 0.05 -0.9 0 0 1 +1048576 0 0 0 0 1048576 5242880 5242880 0.05 -0.8 0 0 1 +1048576 0 0 0 0 1572864 5242880 5242880 0.05 -0.7 0 0 1 +1048576 0 0 0 0 2097152 5242880 5242880 0.05 -0.6 0 0 1 +1048576 0 0 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 1.00000000000002 +1048576 0 0 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0.99999999999786 +1048576 0 0 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 1.00000000002592 +1048576 0 0 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0.999999999908662 +1048576 0 0 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.00000000200092 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 0 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.00000000200092 +1048576 0 0 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0.999999999908662 +1048576 0 0 0 0 6815744 5242880 5242880 0.05 0.3 0 0 1.00000000002592 +1048576 0 0 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0.99999999999786 +1048576 0 0 0 0 7864320 5242880 5242880 0.05 0.5 0 0 1.00000000000002 +1048576 0 0 0 0 8388608 5242880 5242880 0.05 0.6 0 0 1 +1048576 0 0 0 0 8912896 5242880 5242880 0.05 0.7 0 0 1 +1048576 0 0 0 0 9437184 5242880 5242880 0.05 0.8 0 0 1 +1048576 0 0 0 0 9961472 5242880 5242880 0.05 0.9 0 0 1 +1048576 0 0 0 0 10485760 5242880 5242880 0.05 1 0 0 1 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 1.00000000000002 +1048576 0 1 0 0 2883584 5242880 5242880 0.05 -0.45 0 0 0.999999999997185 +1048576 0 1 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0.99999999999786 +1048576 0 1 0 0 3407872 5242880 5242880 0.05 -0.35 0 0 1.00000000001908 +1048576 0 1 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 1.00000000002592 +1048576 0 1 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0.999999999838278 +1048576 0 1 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0.999999999908662 +1048576 0 1 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0.999999999869254 +1048576 0 1 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.00000000200092 +1048576 0 1 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 1.00000000094713 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 1 0 0 5505024 5242880 5242880 0.05 0.05 0 0 1.00000000094713 +1048576 0 1 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.00000000200092 +1048576 0 1 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0.999999999869254 +1048576 0 1 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0.999999999908662 +1048576 0 1 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0.999999999838278 +1048576 0 1 0 0 6815744 5242880 5242880 0.05 0.3 0 0 1.00000000002592 +1048576 0 1 0 0 7077888 5242880 5242880 0.05 0.35 0 0 1.00000000001908 +1048576 0 1 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0.99999999999786 +1048576 0 1 0 0 7602176 5242880 5242880 0.05 0.45 0 0 0.999999999997185 +1048576 0 1 0 0 7864320 5242880 5242880 0.05 0.5 0 0 1.00000000000002 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0.999999999838278 +1048576 0 2 0 0 4063232 5242880 5242880 0.05 -0.225 0 0 0.999999999864206 +1048576 0 2 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0.999999999908662 +1048576 0 2 0 0 4325376 5242880 5242880 0.05 -0.175 0 0 0.999999999760128 +1048576 0 2 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0.999999999869254 +1048576 0 2 0 0 4587520 5242880 5242880 0.05 -0.125 0 0 1.00000000099849 +1048576 0 2 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 1.00000000200092 +1048576 0 2 0 0 4849664 5242880 5242880 0.05 -0.075 0 0 1.00000000057078 +1048576 0 2 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 1.00000000094713 +1048576 0 2 0 0 5111808 5242880 5242880 0.05 -0.025 0 0 1.00000000020061 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 2 0 0 5373952 5242880 5242880 0.05 0.025 0 0 1.00000000020061 +1048576 0 2 0 0 5505024 5242880 5242880 0.05 0.05 0 0 1.00000000094713 +1048576 0 2 0 0 5636096 5242880 5242880 0.05 0.075 0 0 1.00000000057078 +1048576 0 2 0 0 5767168 5242880 5242880 0.05 0.1 0 0 1.00000000200092 +1048576 0 2 0 0 5898240 5242880 5242880 0.05 0.125 0 0 1.00000000099849 +1048576 0 2 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0.999999999869254 +1048576 0 2 0 0 6160384 5242880 5242880 0.05 0.175 0 0 0.999999999760128 +1048576 0 2 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0.999999999908662 +1048576 0 2 0 0 6422528 5242880 5242880 0.05 0.225 0 0 0.999999999864206 +1048576 0 2 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0.999999999838278 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 3932160 5242880 5242880 0.05625 -0.25 0 0 0.999999999864691 +1179648 0 2 0 0 4063232 5242880 5242880 0.05625 -0.225 0 0 0.999999999920328 +1179648 0 2 0 0 4194304 5242880 5242880 0.05625 -0.2 0 0 0.999999999977901 +1179648 0 2 0 0 4325376 5242880 5242880 0.05625 -0.175 0 0 0.999999999778339 +1179648 0 2 0 0 4456448 5242880 5242880 0.05625 -0.15 0 0 0.999999999825109 +1179648 0 2 0 0 4587520 5242880 5242880 0.05625 -0.125 0 0 1.0000000009088 +1179648 0 2 0 0 4718592 5242880 5242880 0.05625 -0.1 0 0 1.00000000187364 +1179648 0 2 0 0 4849664 5242880 5242880 0.05625 -0.075 0 0 1.00000000080762 +1179648 0 2 0 0 4980736 5242880 5242880 0.05625 -0.05 0 0 1.00000000126869 +1179648 0 2 0 0 5111808 5242880 5242880 0.05625 -0.025 0 0 1.0000000003447 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.00000000046233 +1179648 0 2 0 0 5373952 5242880 5242880 0.05625 0.025 0 0 1.0000000003447 +1179648 0 2 0 0 5505024 5242880 5242880 0.05625 0.05 0 0 1.00000000126869 +1179648 0 2 0 0 5636096 5242880 5242880 0.05625 0.075 0 0 1.00000000080762 +1179648 0 2 0 0 5767168 5242880 5242880 0.05625 0.1 0 0 1.00000000187364 +1179648 0 2 0 0 5898240 5242880 5242880 0.05625 0.125 0 0 1.0000000009088 +1179648 0 2 0 0 6029312 5242880 5242880 0.05625 0.15 0 0 0.999999999825109 +1179648 0 2 0 0 6160384 5242880 5242880 0.05625 0.175 0 0 0.999999999778339 +1179648 0 2 0 0 6291456 5242880 5242880 0.05625 0.2 0 0 0.999999999977901 +1179648 0 2 0 0 6422528 5242880 5242880 0.05625 0.225 0 0 0.999999999920328 +1179648 0 2 0 0 6553600 5242880 5242880 0.05625 0.25 0 0 0.999999999864691 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 2621440 5242880 5242880 0.0625 -0.5 0 0 1.00000000000016 +1310720 0 1 0 0 2883584 5242880 5242880 0.0625 -0.45 0 0 0.999999999995216 +1310720 0 1 0 0 3145728 5242880 5242880 0.0625 -0.4 0 0 0.999999999995699 +1310720 0 1 0 0 3407872 5242880 5242880 0.0625 -0.35 0 0 1.00000000002603 +1310720 0 1 0 0 3670016 5242880 5242880 0.0625 -0.3 0 0 1.00000000003931 +1310720 0 1 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0.999999999848368 +1310720 0 1 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.00000000005881 +1310720 0 1 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0.999999999779366 +1310720 0 1 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 1.00000000176887 +1310720 0 1 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 1.00000000163742 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 1 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 1.00000000163742 +1310720 0 1 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 1.00000000176887 +1310720 0 1 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0.999999999779366 +1310720 0 1 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 1.00000000005881 +1310720 0 1 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0.999999999848368 +1310720 0 1 0 0 6815744 5242880 5242880 0.0625 0.3 0 0 1.00000000003931 +1310720 0 1 0 0 7077888 5242880 5242880 0.0625 0.35 0 0 1.00000000002603 +1310720 0 1 0 0 7340032 5242880 5242880 0.0625 0.4 0 0 0.999999999995699 +1310720 0 1 0 0 7602176 5242880 5242880 0.0625 0.45 0 0 0.999999999995216 +1310720 0 1 0 0 7864320 5242880 5242880 0.0625 0.5 0 0 1.00000000000016 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0.999999999848368 +1310720 0 2 0 0 4063232 5242880 5242880 0.0625 -0.225 0 0 0.99999999995912 +1310720 0 2 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.00000000005881 +1310720 0 2 0 0 4325376 5242880 5242880 0.0625 -0.175 0 0 0.999999999807897 +1310720 0 2 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0.999999999779366 +1310720 0 2 0 0 4587520 5242880 5242880 0.0625 -0.125 0 0 1.00000000076487 +1310720 0 2 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 1.00000000176887 +1310720 0 2 0 0 4849664 5242880 5242880 0.0625 -0.075 0 0 1.00000000108602 +1310720 0 2 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 1.00000000163742 +1310720 0 2 0 0 5111808 5242880 5242880 0.0625 -0.025 0 0 1.00000000054727 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 2 0 0 5373952 5242880 5242880 0.0625 0.025 0 0 1.00000000054727 +1310720 0 2 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 1.00000000163742 +1310720 0 2 0 0 5636096 5242880 5242880 0.0625 0.075 0 0 1.00000000108602 +1310720 0 2 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 1.00000000176887 +1310720 0 2 0 0 5898240 5242880 5242880 0.0625 0.125 0 0 1.00000000076487 +1310720 0 2 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0.999999999779366 +1310720 0 2 0 0 6160384 5242880 5242880 0.0625 0.175 0 0 0.999999999807897 +1310720 0 2 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 1.00000000005881 +1310720 0 2 0 0 6422528 5242880 5242880 0.0625 0.225 0 0 0.99999999995912 +1310720 0 2 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0.999999999848368 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 3932160 5242880 5242880 0.06875 -0.25 0 0 0.999999999837646 +1441792 0 2 0 0 4063232 5242880 5242880 0.06875 -0.225 0 0 1.00000000000483 +1441792 0 2 0 0 4194304 5242880 5242880 0.06875 -0.2 0 0 1.00000000014767 +1441792 0 2 0 0 4325376 5242880 5242880 0.06875 -0.175 0 0 0.999999999846531 +1441792 0 2 0 0 4456448 5242880 5242880 0.06875 -0.15 0 0 0.999999999744461 +1441792 0 2 0 0 4587520 5242880 5242880 0.06875 -0.125 0 0 1.00000000066039 +1441792 0 2 0 0 4718592 5242880 5242880 0.06875 -0.1 0 0 1.00000000170236 +1441792 0 2 0 0 4849664 5242880 5242880 0.06875 -0.075 0 0 1.00000000140117 +1441792 0 2 0 0 4980736 5242880 5242880 0.06875 -0.05 0 0 1.00000000205035 +1441792 0 2 0 0 5111808 5242880 5242880 0.06875 -0.025 0 0 1.00000000081595 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.00000000107976 +1441792 0 2 0 0 5373952 5242880 5242880 0.06875 0.025 0 0 1.00000000081595 +1441792 0 2 0 0 5505024 5242880 5242880 0.06875 0.05 0 0 1.00000000205035 +1441792 0 2 0 0 5636096 5242880 5242880 0.06875 0.075 0 0 1.00000000140117 +1441792 0 2 0 0 5767168 5242880 5242880 0.06875 0.1 0 0 1.00000000170236 +1441792 0 2 0 0 5898240 5242880 5242880 0.06875 0.125 0 0 1.00000000066039 +1441792 0 2 0 0 6029312 5242880 5242880 0.06875 0.15 0 0 0.999999999744461 +1441792 0 2 0 0 6160384 5242880 5242880 0.06875 0.175 0 0 0.999999999846531 +1441792 0 2 0 0 6291456 5242880 5242880 0.06875 0.2 0 0 1.00000000014767 +1441792 0 2 0 0 6422528 5242880 5242880 0.06875 0.225 0 0 1.00000000000483 +1441792 0 2 0 0 6553600 5242880 5242880 0.06875 0.25 0 0 0.999999999837646 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 5242880 5242880 0.075 -1 0 0 1 +1572864 0 0 0 0 524288 5242880 5242880 0.075 -0.9 0 0 1 +1572864 0 0 0 0 1048576 5242880 5242880 0.075 -0.8 0 0 1 +1572864 0 0 0 0 1572864 5242880 5242880 0.075 -0.7 0 0 1 +1572864 0 0 0 0 2097152 5242880 5242880 0.075 -0.6 0 0 0.999999999999962 +1572864 0 0 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 1.0000000000004 +1572864 0 0 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0.99999999999281 +1572864 0 0 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 1.00000000005299 +1572864 0 0 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.00000000024572 +1572864 0 0 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.00000000167165 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 0 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.00000000167165 +1572864 0 0 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.00000000024572 +1572864 0 0 0 0 6815744 5242880 5242880 0.075 0.3 0 0 1.00000000005299 +1572864 0 0 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0.99999999999281 +1572864 0 0 0 0 7864320 5242880 5242880 0.075 0.5 0 0 1.0000000000004 +1572864 0 0 0 0 8388608 5242880 5242880 0.075 0.6 0 0 0.999999999999962 +1572864 0 0 0 0 8912896 5242880 5242880 0.075 0.7 0 0 1 +1572864 0 0 0 0 9437184 5242880 5242880 0.075 0.8 0 0 1 +1572864 0 0 0 0 9961472 5242880 5242880 0.075 0.9 0 0 1 +1572864 0 0 0 0 10485760 5242880 5242880 0.075 1 0 0 1 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 1.0000000000004 +1572864 0 1 0 0 2883584 5242880 5242880 0.075 -0.45 0 0 0.999999999992871 +1572864 0 1 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0.99999999999281 +1572864 0 1 0 0 3407872 5242880 5242880 0.075 -0.35 0 0 1.00000000001038 +1572864 0 1 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 1.00000000005299 +1572864 0 1 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 1.000000000064 +1572864 0 1 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.00000000024572 +1572864 0 1 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0.999999999716247 +1572864 0 1 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.00000000167165 +1572864 0 1 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 1.00000000250217 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 1 0 0 5505024 5242880 5242880 0.075 0.05 0 0 1.00000000250217 +1572864 0 1 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.00000000167165 +1572864 0 1 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0.999999999716247 +1572864 0 1 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.00000000024572 +1572864 0 1 0 0 6553600 5242880 5242880 0.075 0.25 0 0 1.000000000064 +1572864 0 1 0 0 6815744 5242880 5242880 0.075 0.3 0 0 1.00000000005299 +1572864 0 1 0 0 7077888 5242880 5242880 0.075 0.35 0 0 1.00000000001038 +1572864 0 1 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0.99999999999281 +1572864 0 1 0 0 7602176 5242880 5242880 0.075 0.45 0 0 0.999999999992871 +1572864 0 1 0 0 7864320 5242880 5242880 0.075 0.5 0 0 1.0000000000004 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 1.000000000064 +1572864 0 2 0 0 4063232 5242880 5242880 0.075 -0.225 0 0 1.00000000018864 +1572864 0 2 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 1.00000000024572 +1572864 0 2 0 0 4325376 5242880 5242880 0.075 -0.175 0 0 0.99999999987013 +1572864 0 2 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0.999999999716247 +1572864 0 2 0 0 4587520 5242880 5242880 0.075 -0.125 0 0 1.00000000060895 +1572864 0 2 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 1.00000000167165 +1572864 0 2 0 0 4849664 5242880 5242880 0.075 -0.075 0 0 1.00000000174461 +1572864 0 2 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 1.00000000250217 +1572864 0 2 0 0 5111808 5242880 5242880 0.075 -0.025 0 0 1.00000000115522 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 2 0 0 5373952 5242880 5242880 0.075 0.025 0 0 1.00000000115522 +1572864 0 2 0 0 5505024 5242880 5242880 0.075 0.05 0 0 1.00000000250217 +1572864 0 2 0 0 5636096 5242880 5242880 0.075 0.075 0 0 1.00000000174461 +1572864 0 2 0 0 5767168 5242880 5242880 0.075 0.1 0 0 1.00000000167165 +1572864 0 2 0 0 5898240 5242880 5242880 0.075 0.125 0 0 1.00000000060895 +1572864 0 2 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0.999999999716247 +1572864 0 2 0 0 6160384 5242880 5242880 0.075 0.175 0 0 0.99999999987013 +1572864 0 2 0 0 6291456 5242880 5242880 0.075 0.2 0 0 1.00000000024572 +1572864 0 2 0 0 6422528 5242880 5242880 0.075 0.225 0 0 1.00000000018864 +1572864 0 2 0 0 6553600 5242880 5242880 0.075 0.25 0 0 1.000000000064 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 3932160 5242880 5242880 0.08125 -0.25 0 0 1.00000000009816 +1703936 0 2 0 0 4063232 5242880 5242880 0.08125 -0.225 0 0 1.00000000027139 +1703936 0 2 0 0 4194304 5242880 5242880 0.08125 -0.2 0 0 1.00000000035833 +1703936 0 2 0 0 4325376 5242880 5242880 0.08125 -0.175 0 0 0.99999999993576 +1703936 0 2 0 0 4456448 5242880 5242880 0.08125 -0.15 0 0 0.999999999707798 +1703936 0 2 0 0 4587520 5242880 5242880 0.08125 -0.125 0 0 1.00000000050288 +1703936 0 2 0 0 4718592 5242880 5242880 0.08125 -0.1 0 0 1.00000000167849 +1703936 0 2 0 0 4849664 5242880 5242880 0.08125 -0.075 0 0 1.00000000210511 +1703936 0 2 0 0 4980736 5242880 5242880 0.08125 -0.05 0 0 1.00000000298471 +1703936 0 2 0 0 5111808 5242880 5242880 0.08125 -0.025 0 0 1.00000000156541 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.00000000205505 +1703936 0 2 0 0 5373952 5242880 5242880 0.08125 0.025 0 0 1.00000000156541 +1703936 0 2 0 0 5505024 5242880 5242880 0.08125 0.05 0 0 1.00000000298471 +1703936 0 2 0 0 5636096 5242880 5242880 0.08125 0.075 0 0 1.00000000210511 +1703936 0 2 0 0 5767168 5242880 5242880 0.08125 0.1 0 0 1.00000000167849 +1703936 0 2 0 0 5898240 5242880 5242880 0.08125 0.125 0 0 1.00000000050288 +1703936 0 2 0 0 6029312 5242880 5242880 0.08125 0.15 0 0 0.999999999707798 +1703936 0 2 0 0 6160384 5242880 5242880 0.08125 0.175 0 0 0.99999999993576 +1703936 0 2 0 0 6291456 5242880 5242880 0.08125 0.2 0 0 1.00000000035833 +1703936 0 2 0 0 6422528 5242880 5242880 0.08125 0.225 0 0 1.00000000027139 +1703936 0 2 0 0 6553600 5242880 5242880 0.08125 0.25 0 0 1.00000000009816 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 2621440 5242880 5242880 0.0875 -0.5 0 0 1.00000000000087 +1835008 0 1 0 0 2883584 5242880 5242880 0.0875 -0.45 0 0 0.999999999991356 +1835008 0 1 0 0 3145728 5242880 5242880 0.0875 -0.4 0 0 0.999999999990733 +1835008 0 1 0 0 3407872 5242880 5242880 0.0875 -0.35 0 0 1.00000000001404 +1835008 0 1 0 0 3670016 5242880 5242880 0.0875 -0.3 0 0 1.00000000006281 +1835008 0 1 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.00000000008321 +1835008 0 1 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 1.00000000048371 +1835008 0 1 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0.999999999714756 +1835008 0 1 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 1.00000000171941 +1835008 0 1 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 1.0000000034867 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 1 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 1.0000000034867 +1835008 0 1 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 1.00000000171941 +1835008 0 1 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0.999999999714756 +1835008 0 1 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 1.00000000048371 +1835008 0 1 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 1.00000000008321 +1835008 0 1 0 0 6815744 5242880 5242880 0.0875 0.3 0 0 1.00000000006281 +1835008 0 1 0 0 7077888 5242880 5242880 0.0875 0.35 0 0 1.00000000001404 +1835008 0 1 0 0 7340032 5242880 5242880 0.0875 0.4 0 0 0.999999999990733 +1835008 0 1 0 0 7602176 5242880 5242880 0.0875 0.45 0 0 0.999999999991356 +1835008 0 1 0 0 7864320 5242880 5242880 0.0875 0.5 0 0 1.00000000000087 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.00000000008321 +1835008 0 2 0 0 4063232 5242880 5242880 0.0875 -0.225 0 0 1.00000000033279 +1835008 0 2 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 1.00000000048371 +1835008 0 2 0 0 4325376 5242880 5242880 0.0875 -0.175 0 0 0.999999999998976 +1835008 0 2 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0.999999999714756 +1835008 0 2 0 0 4587520 5242880 5242880 0.0875 -0.125 0 0 1.00000000055857 +1835008 0 2 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 1.00000000171941 +1835008 0 2 0 0 4849664 5242880 5242880 0.0875 -0.075 0 0 1.00000000246804 +1835008 0 2 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 1.0000000034867 +1835008 0 2 0 0 5111808 5242880 5242880 0.0875 -0.025 0 0 1.00000000204188 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 2 0 0 5373952 5242880 5242880 0.0875 0.025 0 0 1.00000000204188 +1835008 0 2 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 1.0000000034867 +1835008 0 2 0 0 5636096 5242880 5242880 0.0875 0.075 0 0 1.00000000246804 +1835008 0 2 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 1.00000000171941 +1835008 0 2 0 0 5898240 5242880 5242880 0.0875 0.125 0 0 1.00000000055857 +1835008 0 2 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0.999999999714756 +1835008 0 2 0 0 6160384 5242880 5242880 0.0875 0.175 0 0 0.999999999998976 +1835008 0 2 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 1.00000000048371 +1835008 0 2 0 0 6422528 5242880 5242880 0.0875 0.225 0 0 1.00000000033279 +1835008 0 2 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 1.00000000008321 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 3932160 5242880 5242880 0.09375 -0.25 0 0 1.00000000006939 +1966080 0 2 0 0 4063232 5242880 5242880 0.09375 -0.225 0 0 1.00000000039637 +1966080 0 2 0 0 4194304 5242880 5242880 0.09375 -0.2 0 0 1.00000000061474 +1966080 0 2 0 0 4325376 5242880 5242880 0.09375 -0.175 0 0 1.00000000010307 +1966080 0 2 0 0 4456448 5242880 5242880 0.09375 -0.15 0 0 0.99999999974855 +1966080 0 2 0 0 4587520 5242880 5242880 0.09375 -0.125 0 0 1.00000000046383 +1966080 0 2 0 0 4718592 5242880 5242880 0.09375 -0.1 0 0 1.00000000178245 +1966080 0 2 0 0 4849664 5242880 5242880 0.09375 -0.075 0 0 1.0000000028168 +1966080 0 2 0 0 4980736 5242880 5242880 0.09375 -0.05 0 0 1.0000000039935 +1966080 0 2 0 0 5111808 5242880 5242880 0.09375 -0.025 0 0 1.00000000257445 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.0000000033708 +1966080 0 2 0 0 5373952 5242880 5242880 0.09375 0.025 0 0 1.00000000257445 +1966080 0 2 0 0 5505024 5242880 5242880 0.09375 0.05 0 0 1.0000000039935 +1966080 0 2 0 0 5636096 5242880 5242880 0.09375 0.075 0 0 1.0000000028168 +1966080 0 2 0 0 5767168 5242880 5242880 0.09375 0.1 0 0 1.00000000178245 +1966080 0 2 0 0 5898240 5242880 5242880 0.09375 0.125 0 0 1.00000000046383 +1966080 0 2 0 0 6029312 5242880 5242880 0.09375 0.15 0 0 0.99999999974855 +1966080 0 2 0 0 6160384 5242880 5242880 0.09375 0.175 0 0 1.00000000010307 +1966080 0 2 0 0 6291456 5242880 5242880 0.09375 0.2 0 0 1.00000000061474 +1966080 0 2 0 0 6422528 5242880 5242880 0.09375 0.225 0 0 1.00000000039637 +1966080 0 2 0 0 6553600 5242880 5242880 0.09375 0.25 0 0 1.00000000006939 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 5242880 5242880 0.1 -1 0 0 1 +2097152 0 0 0 0 524288 5242880 5242880 0.1 -0.9 0 0 1 +2097152 0 0 0 0 1048576 5242880 5242880 0.1 -0.8 0 0 0.999999999999999 +2097152 0 0 0 0 1572864 5242880 5242880 0.1 -0.7 0 0 1.00000000000001 +2097152 0 0 0 0 2097152 5242880 5242880 0.1 -0.6 0 0 0.999999999999814 +2097152 0 0 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 1.00000000000152 +2097152 0 0 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0.999999999988956 +2097152 0 0 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 1.00000000007015 +2097152 0 0 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.00000000075378 +2097152 0 0 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.00000000186308 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 0 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.00000000186308 +2097152 0 0 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.00000000075378 +2097152 0 0 0 0 6815744 5242880 5242880 0.1 0.3 0 0 1.00000000007015 +2097152 0 0 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0.999999999988956 +2097152 0 0 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.00000000000152 +2097152 0 0 0 0 8388608 5242880 5242880 0.1 0.6 0 0 0.999999999999814 +2097152 0 0 0 0 8912896 5242880 5242880 0.1 0.7 0 0 1.00000000000001 +2097152 0 0 0 0 9437184 5242880 5242880 0.1 0.8 0 0 0.999999999999999 +2097152 0 0 0 0 9961472 5242880 5242880 0.1 0.9 0 0 1 +2097152 0 0 0 0 10485760 5242880 5242880 0.1 1 0 0 1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 1.00000000000152 +2097152 0 1 0 0 2883584 5242880 5242880 0.1 -0.45 0 0 0.999999999990269 +2097152 0 1 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0.999999999988956 +2097152 0 1 0 0 3407872 5242880 5242880 0.1 -0.35 0 0 0.999999999986041 +2097152 0 1 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 1.00000000007015 +2097152 0 1 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 1.00000000034771 +2097152 0 1 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.00000000075378 +2097152 0 1 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0.999999999805372 +2097152 0 1 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.00000000186308 +2097152 0 1 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 1.00000000448718 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 1 0 0 5505024 5242880 5242880 0.1 0.05 0 0 1.00000000448718 +2097152 0 1 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.00000000186308 +2097152 0 1 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0.999999999805372 +2097152 0 1 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.00000000075378 +2097152 0 1 0 0 6553600 5242880 5242880 0.1 0.25 0 0 1.00000000034771 +2097152 0 1 0 0 6815744 5242880 5242880 0.1 0.3 0 0 1.00000000007015 +2097152 0 1 0 0 7077888 5242880 5242880 0.1 0.35 0 0 0.999999999986041 +2097152 0 1 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0.999999999988956 +2097152 0 1 0 0 7602176 5242880 5242880 0.1 0.45 0 0 0.999999999990269 +2097152 0 1 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.00000000000152 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 1.00000000034771 +2097152 0 2 0 0 4063232 5242880 5242880 0.1 -0.225 0 0 1.00000000062737 +2097152 0 2 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 1.00000000075378 +2097152 0 2 0 0 4325376 5242880 5242880 0.1 -0.175 0 0 1.00000000017635 +2097152 0 2 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0.999999999805372 +2097152 0 2 0 0 4587520 5242880 5242880 0.1 -0.125 0 0 1.00000000061094 +2097152 0 2 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 1.00000000186308 +2097152 0 2 0 0 4849664 5242880 5242880 0.1 -0.075 0 0 1.00000000313278 +2097152 0 2 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 1.00000000448718 +2097152 0 2 0 0 5111808 5242880 5242880 0.1 -0.025 0 0 1.00000000314711 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 2 0 0 5373952 5242880 5242880 0.1 0.025 0 0 1.00000000314711 +2097152 0 2 0 0 5505024 5242880 5242880 0.1 0.05 0 0 1.00000000448718 +2097152 0 2 0 0 5636096 5242880 5242880 0.1 0.075 0 0 1.00000000313278 +2097152 0 2 0 0 5767168 5242880 5242880 0.1 0.1 0 0 1.00000000186308 +2097152 0 2 0 0 5898240 5242880 5242880 0.1 0.125 0 0 1.00000000061094 +2097152 0 2 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0.999999999805372 +2097152 0 2 0 0 6160384 5242880 5242880 0.1 0.175 0 0 1.00000000017635 +2097152 0 2 0 0 6291456 5242880 5242880 0.1 0.2 0 0 1.00000000075378 +2097152 0 2 0 0 6422528 5242880 5242880 0.1 0.225 0 0 1.00000000062737 +2097152 0 2 0 0 6553600 5242880 5242880 0.1 0.25 0 0 1.00000000034771 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.y.asc b/Carpet/CarpetInterp/test/waveinterp/phit.y.asc new file mode 100644 index 000000000..4250db6e7 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.y.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phit y (phit) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 0 5242880 0 0 -1 0 1 +0 0 0 0 0 5242880 524288 5242880 0 0 -0.9 0 1 +0 0 0 0 0 5242880 1048576 5242880 0 0 -0.8 0 1 +0 0 0 0 0 5242880 1572864 5242880 0 0 -0.7 0 1 +0 0 0 0 0 5242880 2097152 5242880 0 0 -0.6 0 1 +0 0 0 0 0 5242880 2621440 5242880 0 0 -0.5 0 1 +0 0 0 0 0 5242880 3145728 5242880 0 0 -0.4 0 1 +0 0 0 0 0 5242880 3670016 5242880 0 0 -0.3 0 1 +0 0 0 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 0 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 0 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 0 0 0 5242880 6815744 5242880 0 0 0.3 0 1 +0 0 0 0 0 5242880 7340032 5242880 0 0 0.4 0 1 +0 0 0 0 0 5242880 7864320 5242880 0 0 0.5 0 1 +0 0 0 0 0 5242880 8388608 5242880 0 0 0.6 0 1 +0 0 0 0 0 5242880 8912896 5242880 0 0 0.7 0 1 +0 0 0 0 0 5242880 9437184 5242880 0 0 0.8 0 1 +0 0 0 0 0 5242880 9961472 5242880 0 0 0.9 0 1 +0 0 0 0 0 5242880 10485760 5242880 0 0 1 0 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 2621440 5242880 0 0 -0.5 0 1 +0 0 1 0 0 5242880 2883584 5242880 0 0 -0.45 0 1 +0 0 1 0 0 5242880 3145728 5242880 0 0 -0.4 0 1 +0 0 1 0 0 5242880 3407872 5242880 0 0 -0.35 0 1 +0 0 1 0 0 5242880 3670016 5242880 0 0 -0.3 0 1 +0 0 1 0 0 5242880 3932160 5242880 0 0 -0.25 0 1 +0 0 1 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 1 0 0 5242880 4456448 5242880 0 0 -0.15 0 1 +0 0 1 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 1 0 0 5242880 4980736 5242880 0 0 -0.05 0 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5242880 5505024 5242880 0 0 0.05 0 1 +0 0 1 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 1 0 0 5242880 6029312 5242880 0 0 0.15 0 1 +0 0 1 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 1 0 0 5242880 6553600 5242880 0 0 0.25 0 1 +0 0 1 0 0 5242880 6815744 5242880 0 0 0.3 0 1 +0 0 1 0 0 5242880 7077888 5242880 0 0 0.35 0 1 +0 0 1 0 0 5242880 7340032 5242880 0 0 0.4 0 1 +0 0 1 0 0 5242880 7602176 5242880 0 0 0.45 0 1 +0 0 1 0 0 5242880 7864320 5242880 0 0 0.5 0 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 3932160 5242880 0 0 -0.25 0 1 +0 0 2 0 0 5242880 4063232 5242880 0 0 -0.225 0 1 +0 0 2 0 0 5242880 4194304 5242880 0 0 -0.2 0 1 +0 0 2 0 0 5242880 4325376 5242880 0 0 -0.175 0 1 +0 0 2 0 0 5242880 4456448 5242880 0 0 -0.15 0 1 +0 0 2 0 0 5242880 4587520 5242880 0 0 -0.125 0 1 +0 0 2 0 0 5242880 4718592 5242880 0 0 -0.1 0 1 +0 0 2 0 0 5242880 4849664 5242880 0 0 -0.075 0 1 +0 0 2 0 0 5242880 4980736 5242880 0 0 -0.05 0 1 +0 0 2 0 0 5242880 5111808 5242880 0 0 -0.025 0 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5242880 5373952 5242880 0 0 0.025 0 1 +0 0 2 0 0 5242880 5505024 5242880 0 0 0.05 0 1 +0 0 2 0 0 5242880 5636096 5242880 0 0 0.075 0 1 +0 0 2 0 0 5242880 5767168 5242880 0 0 0.1 0 1 +0 0 2 0 0 5242880 5898240 5242880 0 0 0.125 0 1 +0 0 2 0 0 5242880 6029312 5242880 0 0 0.15 0 1 +0 0 2 0 0 5242880 6160384 5242880 0 0 0.175 0 1 +0 0 2 0 0 5242880 6291456 5242880 0 0 0.2 0 1 +0 0 2 0 0 5242880 6422528 5242880 0 0 0.225 0 1 +0 0 2 0 0 5242880 6553600 5242880 0 0 0.25 0 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 3932160 5242880 0.00625 0 -0.25 0 1 +131072 0 2 0 0 5242880 4063232 5242880 0.00625 0 -0.225 0 1 +131072 0 2 0 0 5242880 4194304 5242880 0.00625 0 -0.2 0 1 +131072 0 2 0 0 5242880 4325376 5242880 0.00625 0 -0.175 0 1 +131072 0 2 0 0 5242880 4456448 5242880 0.00625 0 -0.15 0 1 +131072 0 2 0 0 5242880 4587520 5242880 0.00625 0 -0.125 0 1 +131072 0 2 0 0 5242880 4718592 5242880 0.00625 0 -0.1 0 1 +131072 0 2 0 0 5242880 4849664 5242880 0.00625 0 -0.075 0 1 +131072 0 2 0 0 5242880 4980736 5242880 0.00625 0 -0.05 0 1 +131072 0 2 0 0 5242880 5111808 5242880 0.00625 0 -0.025 0 1 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1 +131072 0 2 0 0 5242880 5373952 5242880 0.00625 0 0.025 0 1 +131072 0 2 0 0 5242880 5505024 5242880 0.00625 0 0.05 0 1 +131072 0 2 0 0 5242880 5636096 5242880 0.00625 0 0.075 0 1 +131072 0 2 0 0 5242880 5767168 5242880 0.00625 0 0.1 0 1 +131072 0 2 0 0 5242880 5898240 5242880 0.00625 0 0.125 0 1 +131072 0 2 0 0 5242880 6029312 5242880 0.00625 0 0.15 0 1 +131072 0 2 0 0 5242880 6160384 5242880 0.00625 0 0.175 0 1 +131072 0 2 0 0 5242880 6291456 5242880 0.00625 0 0.2 0 1 +131072 0 2 0 0 5242880 6422528 5242880 0.00625 0 0.225 0 1 +131072 0 2 0 0 5242880 6553600 5242880 0.00625 0 0.25 0 1 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 2621440 5242880 0.0125 0 -0.5 0 1 +262144 0 1 0 0 5242880 2883584 5242880 0.0125 0 -0.45 0 1 +262144 0 1 0 0 5242880 3145728 5242880 0.0125 0 -0.4 0 1 +262144 0 1 0 0 5242880 3407872 5242880 0.0125 0 -0.35 0 1 +262144 0 1 0 0 5242880 3670016 5242880 0.0125 0 -0.3 0 1 +262144 0 1 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 1 +262144 0 1 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 1 +262144 0 1 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 1 +262144 0 1 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 1.00000000277135 +262144 0 1 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 1.00000000000728 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 1 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 1.00000000000728 +262144 0 1 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 1.00000000277135 +262144 0 1 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 1 +262144 0 1 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 1 +262144 0 1 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 1 +262144 0 1 0 0 5242880 6815744 5242880 0.0125 0 0.3 0 1 +262144 0 1 0 0 5242880 7077888 5242880 0.0125 0 0.35 0 1 +262144 0 1 0 0 5242880 7340032 5242880 0.0125 0 0.4 0 1 +262144 0 1 0 0 5242880 7602176 5242880 0.0125 0 0.45 0 1 +262144 0 1 0 0 5242880 7864320 5242880 0.0125 0 0.5 0 1 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 1 +262144 0 2 0 0 5242880 4063232 5242880 0.0125 0 -0.225 0 1 +262144 0 2 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 1 +262144 0 2 0 0 5242880 4325376 5242880 0.0125 0 -0.175 0 0.999999999826791 +262144 0 2 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 1 +262144 0 2 0 0 5242880 4587520 5242880 0.0125 0 -0.125 0 1.00000000155843 +262144 0 2 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 1.00000000277135 +262144 0 2 0 0 5242880 4849664 5242880 0.0125 0 -0.075 0 0.999999999998383 +262144 0 2 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 1.00000000000728 +262144 0 2 0 0 5242880 5111808 5242880 0.0125 0 -0.025 0 1 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 2 0 0 5242880 5373952 5242880 0.0125 0 0.025 0 1 +262144 0 2 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 1.00000000000728 +262144 0 2 0 0 5242880 5636096 5242880 0.0125 0 0.075 0 0.999999999998383 +262144 0 2 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 1.00000000277135 +262144 0 2 0 0 5242880 5898240 5242880 0.0125 0 0.125 0 1.00000000155843 +262144 0 2 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 1 +262144 0 2 0 0 5242880 6160384 5242880 0.0125 0 0.175 0 0.999999999826791 +262144 0 2 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 1 +262144 0 2 0 0 5242880 6422528 5242880 0.0125 0 0.225 0 1 +262144 0 2 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 1 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 3932160 5242880 0.01875 0 -0.25 0 1 +393216 0 2 0 0 5242880 4063232 5242880 0.01875 0 -0.225 0 0.999999999945108 +393216 0 2 0 0 5242880 4194304 5242880 0.01875 0 -0.2 0 0.999999999902543 +393216 0 2 0 0 5242880 4325376 5242880 0.01875 0 -0.175 0 0.99999999974986 +393216 0 2 0 0 5242880 4456448 5242880 0.01875 0 -0.15 0 1.00000000000116 +393216 0 2 0 0 5242880 4587520 5242880 0.01875 0 -0.125 0 1.00000000176809 +393216 0 2 0 0 5242880 4718592 5242880 0.01875 0 -0.1 0 1.00000000270433 +393216 0 2 0 0 5242880 4849664 5242880 0.01875 0 -0.075 0 1.00000000000657 +393216 0 2 0 0 5242880 4980736 5242880 0.01875 0 -0.05 0 1.00000000005092 +393216 0 2 0 0 5242880 5111808 5242880 0.01875 0 -0.025 0 1.00000000000043 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.00000000000068 +393216 0 2 0 0 5242880 5373952 5242880 0.01875 0 0.025 0 1.00000000000043 +393216 0 2 0 0 5242880 5505024 5242880 0.01875 0 0.05 0 1.00000000005092 +393216 0 2 0 0 5242880 5636096 5242880 0.01875 0 0.075 0 1.00000000000657 +393216 0 2 0 0 5242880 5767168 5242880 0.01875 0 0.1 0 1.00000000270433 +393216 0 2 0 0 5242880 5898240 5242880 0.01875 0 0.125 0 1.00000000176809 +393216 0 2 0 0 5242880 6029312 5242880 0.01875 0 0.15 0 1.00000000000116 +393216 0 2 0 0 5242880 6160384 5242880 0.01875 0 0.175 0 0.99999999974986 +393216 0 2 0 0 5242880 6291456 5242880 0.01875 0 0.2 0 0.999999999902543 +393216 0 2 0 0 5242880 6422528 5242880 0.01875 0 0.225 0 0.999999999945108 +393216 0 2 0 0 5242880 6553600 5242880 0.01875 0 0.25 0 1 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 0 5242880 0.025 0 -1 0 1 +524288 0 0 0 0 5242880 524288 5242880 0.025 0 -0.9 0 1 +524288 0 0 0 0 5242880 1048576 5242880 0.025 0 -0.8 0 1 +524288 0 0 0 0 5242880 1572864 5242880 0.025 0 -0.7 0 1 +524288 0 0 0 0 5242880 2097152 5242880 0.025 0 -0.6 0 1 +524288 0 0 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 1 +524288 0 0 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 1 +524288 0 0 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 1 +524288 0 0 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0.999999999740114 +524288 0 0 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.00000000258949 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 0 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.00000000258949 +524288 0 0 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0.999999999740114 +524288 0 0 0 0 5242880 6815744 5242880 0.025 0 0.3 0 1 +524288 0 0 0 0 5242880 7340032 5242880 0.025 0 0.4 0 1 +524288 0 0 0 0 5242880 7864320 5242880 0.025 0 0.5 0 1 +524288 0 0 0 0 5242880 8388608 5242880 0.025 0 0.6 0 1 +524288 0 0 0 0 5242880 8912896 5242880 0.025 0 0.7 0 1 +524288 0 0 0 0 5242880 9437184 5242880 0.025 0 0.8 0 1 +524288 0 0 0 0 5242880 9961472 5242880 0.025 0 0.9 0 1 +524288 0 0 0 0 5242880 10485760 5242880 0.025 0 1 0 1 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 1 +524288 0 1 0 0 5242880 2883584 5242880 0.025 0 -0.45 0 1 +524288 0 1 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 1 +524288 0 1 0 0 5242880 3407872 5242880 0.025 0 -0.35 0 1.00000000001624 +524288 0 1 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 1 +524288 0 1 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0.999999999691971 +524288 0 1 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0.999999999740114 +524288 0 1 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 1.0000000000031 +524288 0 1 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.00000000258949 +524288 0 1 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 1.00000000013846 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 1 0 0 5242880 5505024 5242880 0.025 0 0.05 0 1.00000000013846 +524288 0 1 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.00000000258949 +524288 0 1 0 0 5242880 6029312 5242880 0.025 0 0.15 0 1.0000000000031 +524288 0 1 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0.999999999740114 +524288 0 1 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0.999999999691971 +524288 0 1 0 0 5242880 6815744 5242880 0.025 0 0.3 0 1 +524288 0 1 0 0 5242880 7077888 5242880 0.025 0 0.35 0 1.00000000001624 +524288 0 1 0 0 5242880 7340032 5242880 0.025 0 0.4 0 1 +524288 0 1 0 0 5242880 7602176 5242880 0.025 0 0.45 0 1 +524288 0 1 0 0 5242880 7864320 5242880 0.025 0 0.5 0 1 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0.999999999691971 +524288 0 2 0 0 5242880 4063232 5242880 0.025 0 -0.225 0 0.999999999680354 +524288 0 2 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0.999999999740114 +524288 0 2 0 0 5242880 4325376 5242880 0.025 0 -0.175 0 0.999999999712965 +524288 0 2 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 1.0000000000031 +524288 0 2 0 0 5242880 4587520 5242880 0.025 0 -0.125 0 1.00000000146592 +524288 0 2 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 1.00000000258949 +524288 0 2 0 0 5242880 4849664 5242880 0.025 0 -0.075 0 1.00000000004511 +524288 0 2 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 1.00000000013846 +524288 0 2 0 0 5242880 5111808 5242880 0.025 0 -0.025 0 1.00000000000435 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 2 0 0 5242880 5373952 5242880 0.025 0 0.025 0 1.00000000000435 +524288 0 2 0 0 5242880 5505024 5242880 0.025 0 0.05 0 1.00000000013846 +524288 0 2 0 0 5242880 5636096 5242880 0.025 0 0.075 0 1.00000000004511 +524288 0 2 0 0 5242880 5767168 5242880 0.025 0 0.1 0 1.00000000258949 +524288 0 2 0 0 5242880 5898240 5242880 0.025 0 0.125 0 1.00000000146592 +524288 0 2 0 0 5242880 6029312 5242880 0.025 0 0.15 0 1.0000000000031 +524288 0 2 0 0 5242880 6160384 5242880 0.025 0 0.175 0 0.999999999712965 +524288 0 2 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0.999999999740114 +524288 0 2 0 0 5242880 6422528 5242880 0.025 0 0.225 0 0.999999999680354 +524288 0 2 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0.999999999691971 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 3932160 5242880 0.03125 0 -0.25 0 0.999999999640443 +655360 0 2 0 0 5242880 4063232 5242880 0.03125 0 -0.225 0 0.999999999647753 +655360 0 2 0 0 5242880 4194304 5242880 0.03125 0 -0.2 0 0.999999999732034 +655360 0 2 0 0 5242880 4325376 5242880 0.03125 0 -0.175 0 0.999999999702523 +655360 0 2 0 0 5242880 4456448 5242880 0.03125 0 -0.15 0 0.999999999984606 +655360 0 2 0 0 5242880 4587520 5242880 0.03125 0 -0.125 0 1.00000000144041 +655360 0 2 0 0 5242880 4718592 5242880 0.03125 0 -0.1 0 1.00000000246101 +655360 0 2 0 0 5242880 4849664 5242880 0.03125 0 -0.075 0 1.00000000011784 +655360 0 2 0 0 5242880 4980736 5242880 0.03125 0 -0.05 0 1.00000000027064 +655360 0 2 0 0 5242880 5111808 5242880 0.03125 0 -0.025 0 1.00000000001744 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.00000000002479 +655360 0 2 0 0 5242880 5373952 5242880 0.03125 0 0.025 0 1.00000000001744 +655360 0 2 0 0 5242880 5505024 5242880 0.03125 0 0.05 0 1.00000000027064 +655360 0 2 0 0 5242880 5636096 5242880 0.03125 0 0.075 0 1.00000000011784 +655360 0 2 0 0 5242880 5767168 5242880 0.03125 0 0.1 0 1.00000000246101 +655360 0 2 0 0 5242880 5898240 5242880 0.03125 0 0.125 0 1.00000000144041 +655360 0 2 0 0 5242880 6029312 5242880 0.03125 0 0.15 0 0.999999999984606 +655360 0 2 0 0 5242880 6160384 5242880 0.03125 0 0.175 0 0.999999999702523 +655360 0 2 0 0 5242880 6291456 5242880 0.03125 0 0.2 0 0.999999999732034 +655360 0 2 0 0 5242880 6422528 5242880 0.03125 0 0.225 0 0.999999999647753 +655360 0 2 0 0 5242880 6553600 5242880 0.03125 0 0.25 0 0.999999999640443 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 2621440 5242880 0.0375 0 -0.5 0 1.00000000000001 +786432 0 1 0 0 5242880 2883584 5242880 0.0375 0 -0.45 0 0.999999999998945 +786432 0 1 0 0 5242880 3145728 5242880 0.0375 0 -0.4 0 0.999999999999198 +786432 0 1 0 0 5242880 3407872 5242880 0.0375 0 -0.35 0 1.00000000002395 +786432 0 1 0 0 5242880 3670016 5242880 0.0375 0 -0.3 0 1.00000000000972 +786432 0 1 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0.99999999965724 +786432 0 1 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0.999999999805198 +786432 0 1 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0.999999999952753 +786432 0 1 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 1.00000000230525 +786432 0 1 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 1.00000000044868 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 1 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 1.00000000044868 +786432 0 1 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 1.00000000230525 +786432 0 1 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0.999999999952753 +786432 0 1 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0.999999999805198 +786432 0 1 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0.99999999965724 +786432 0 1 0 0 5242880 6815744 5242880 0.0375 0 0.3 0 1.00000000000972 +786432 0 1 0 0 5242880 7077888 5242880 0.0375 0 0.35 0 1.00000000002395 +786432 0 1 0 0 5242880 7340032 5242880 0.0375 0 0.4 0 0.999999999999198 +786432 0 1 0 0 5242880 7602176 5242880 0.0375 0 0.45 0 0.999999999998945 +786432 0 1 0 0 5242880 7864320 5242880 0.0375 0 0.5 0 1.00000000000001 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0.99999999965724 +786432 0 2 0 0 5242880 4063232 5242880 0.0375 0 -0.225 0 0.999999999699967 +786432 0 2 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0.999999999805198 +786432 0 2 0 0 5242880 4325376 5242880 0.0375 0 -0.175 0 0.999999999741191 +786432 0 2 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0.999999999952753 +786432 0 2 0 0 5242880 4587520 5242880 0.0375 0 -0.125 0 1.00000000125426 +786432 0 2 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 1.00000000230525 +786432 0 2 0 0 5242880 4849664 5242880 0.0375 0 -0.075 0 1.00000000022745 +786432 0 2 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 1.00000000044868 +786432 0 2 0 0 5242880 5111808 5242880 0.0375 0 -0.025 0 1.00000000004778 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 2 0 0 5242880 5373952 5242880 0.0375 0 0.025 0 1.00000000004778 +786432 0 2 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 1.00000000044868 +786432 0 2 0 0 5242880 5636096 5242880 0.0375 0 0.075 0 1.00000000022745 +786432 0 2 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 1.00000000230525 +786432 0 2 0 0 5242880 5898240 5242880 0.0375 0 0.125 0 1.00000000125426 +786432 0 2 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0.999999999952753 +786432 0 2 0 0 5242880 6160384 5242880 0.0375 0 0.175 0 0.999999999741191 +786432 0 2 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0.999999999805198 +786432 0 2 0 0 5242880 6422528 5242880 0.0375 0 0.225 0 0.999999999699967 +786432 0 2 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0.99999999965724 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 3932160 5242880 0.04375 0 -0.25 0 0.999999999669696 +917504 0 2 0 0 5242880 4063232 5242880 0.04375 0 -0.225 0 0.999999999735269 +917504 0 2 0 0 5242880 4194304 5242880 0.04375 0 -0.2 0 0.999999999852133 +917504 0 2 0 0 5242880 4325376 5242880 0.04375 0 -0.175 0 0.999999999749234 +917504 0 2 0 0 5242880 4456448 5242880 0.04375 0 -0.15 0 0.999999999915148 +917504 0 2 0 0 5242880 4587520 5242880 0.04375 0 -0.125 0 1.00000000119155 +917504 0 2 0 0 5242880 4718592 5242880 0.04375 0 -0.1 0 1.0000000021537 +917504 0 2 0 0 5242880 4849664 5242880 0.04375 0 -0.075 0 1.00000000037762 +917504 0 2 0 0 5242880 4980736 5242880 0.04375 0 -0.05 0 1.00000000067385 +917504 0 2 0 0 5242880 5111808 5242880 0.04375 0 -0.025 0 1.00000000010524 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.00000000014416 +917504 0 2 0 0 5242880 5373952 5242880 0.04375 0 0.025 0 1.00000000010524 +917504 0 2 0 0 5242880 5505024 5242880 0.04375 0 0.05 0 1.00000000067385 +917504 0 2 0 0 5242880 5636096 5242880 0.04375 0 0.075 0 1.00000000037762 +917504 0 2 0 0 5242880 5767168 5242880 0.04375 0 0.1 0 1.0000000021537 +917504 0 2 0 0 5242880 5898240 5242880 0.04375 0 0.125 0 1.00000000119155 +917504 0 2 0 0 5242880 6029312 5242880 0.04375 0 0.15 0 0.999999999915148 +917504 0 2 0 0 5242880 6160384 5242880 0.04375 0 0.175 0 0.999999999749234 +917504 0 2 0 0 5242880 6291456 5242880 0.04375 0 0.2 0 0.999999999852133 +917504 0 2 0 0 5242880 6422528 5242880 0.04375 0 0.225 0 0.999999999735269 +917504 0 2 0 0 5242880 6553600 5242880 0.04375 0 0.25 0 0.999999999669696 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 0 5242880 0.05 0 -1 0 1 +1048576 0 0 0 0 5242880 524288 5242880 0.05 0 -0.9 0 1 +1048576 0 0 0 0 5242880 1048576 5242880 0.05 0 -0.8 0 1 +1048576 0 0 0 0 5242880 1572864 5242880 0.05 0 -0.7 0 1 +1048576 0 0 0 0 5242880 2097152 5242880 0.05 0 -0.6 0 1 +1048576 0 0 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 1.00000000000002 +1048576 0 0 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0.99999999999786 +1048576 0 0 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 1.00000000002592 +1048576 0 0 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0.999999999908662 +1048576 0 0 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.00000000200092 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 0 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.00000000200092 +1048576 0 0 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0.999999999908662 +1048576 0 0 0 0 5242880 6815744 5242880 0.05 0 0.3 0 1.00000000002592 +1048576 0 0 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0.99999999999786 +1048576 0 0 0 0 5242880 7864320 5242880 0.05 0 0.5 0 1.00000000000002 +1048576 0 0 0 0 5242880 8388608 5242880 0.05 0 0.6 0 1 +1048576 0 0 0 0 5242880 8912896 5242880 0.05 0 0.7 0 1 +1048576 0 0 0 0 5242880 9437184 5242880 0.05 0 0.8 0 1 +1048576 0 0 0 0 5242880 9961472 5242880 0.05 0 0.9 0 1 +1048576 0 0 0 0 5242880 10485760 5242880 0.05 0 1 0 1 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 1.00000000000002 +1048576 0 1 0 0 5242880 2883584 5242880 0.05 0 -0.45 0 0.999999999997185 +1048576 0 1 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0.99999999999786 +1048576 0 1 0 0 5242880 3407872 5242880 0.05 0 -0.35 0 1.00000000001908 +1048576 0 1 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 1.00000000002592 +1048576 0 1 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0.999999999838278 +1048576 0 1 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0.999999999908662 +1048576 0 1 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0.999999999869254 +1048576 0 1 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.00000000200092 +1048576 0 1 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 1.00000000094713 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 1 0 0 5242880 5505024 5242880 0.05 0 0.05 0 1.00000000094713 +1048576 0 1 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.00000000200092 +1048576 0 1 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0.999999999869254 +1048576 0 1 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0.999999999908662 +1048576 0 1 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0.999999999838278 +1048576 0 1 0 0 5242880 6815744 5242880 0.05 0 0.3 0 1.00000000002592 +1048576 0 1 0 0 5242880 7077888 5242880 0.05 0 0.35 0 1.00000000001908 +1048576 0 1 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0.99999999999786 +1048576 0 1 0 0 5242880 7602176 5242880 0.05 0 0.45 0 0.999999999997185 +1048576 0 1 0 0 5242880 7864320 5242880 0.05 0 0.5 0 1.00000000000002 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0.999999999838278 +1048576 0 2 0 0 5242880 4063232 5242880 0.05 0 -0.225 0 0.999999999864206 +1048576 0 2 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0.999999999908662 +1048576 0 2 0 0 5242880 4325376 5242880 0.05 0 -0.175 0 0.999999999760128 +1048576 0 2 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0.999999999869254 +1048576 0 2 0 0 5242880 4587520 5242880 0.05 0 -0.125 0 1.00000000099849 +1048576 0 2 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 1.00000000200092 +1048576 0 2 0 0 5242880 4849664 5242880 0.05 0 -0.075 0 1.00000000057078 +1048576 0 2 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 1.00000000094713 +1048576 0 2 0 0 5242880 5111808 5242880 0.05 0 -0.025 0 1.00000000020061 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 2 0 0 5242880 5373952 5242880 0.05 0 0.025 0 1.00000000020061 +1048576 0 2 0 0 5242880 5505024 5242880 0.05 0 0.05 0 1.00000000094713 +1048576 0 2 0 0 5242880 5636096 5242880 0.05 0 0.075 0 1.00000000057078 +1048576 0 2 0 0 5242880 5767168 5242880 0.05 0 0.1 0 1.00000000200092 +1048576 0 2 0 0 5242880 5898240 5242880 0.05 0 0.125 0 1.00000000099849 +1048576 0 2 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0.999999999869254 +1048576 0 2 0 0 5242880 6160384 5242880 0.05 0 0.175 0 0.999999999760128 +1048576 0 2 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0.999999999908662 +1048576 0 2 0 0 5242880 6422528 5242880 0.05 0 0.225 0 0.999999999864206 +1048576 0 2 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0.999999999838278 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 3932160 5242880 0.05625 0 -0.25 0 0.999999999864691 +1179648 0 2 0 0 5242880 4063232 5242880 0.05625 0 -0.225 0 0.999999999920328 +1179648 0 2 0 0 5242880 4194304 5242880 0.05625 0 -0.2 0 0.999999999977901 +1179648 0 2 0 0 5242880 4325376 5242880 0.05625 0 -0.175 0 0.999999999778339 +1179648 0 2 0 0 5242880 4456448 5242880 0.05625 0 -0.15 0 0.999999999825109 +1179648 0 2 0 0 5242880 4587520 5242880 0.05625 0 -0.125 0 1.0000000009088 +1179648 0 2 0 0 5242880 4718592 5242880 0.05625 0 -0.1 0 1.00000000187364 +1179648 0 2 0 0 5242880 4849664 5242880 0.05625 0 -0.075 0 1.00000000080762 +1179648 0 2 0 0 5242880 4980736 5242880 0.05625 0 -0.05 0 1.00000000126869 +1179648 0 2 0 0 5242880 5111808 5242880 0.05625 0 -0.025 0 1.0000000003447 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.00000000046233 +1179648 0 2 0 0 5242880 5373952 5242880 0.05625 0 0.025 0 1.0000000003447 +1179648 0 2 0 0 5242880 5505024 5242880 0.05625 0 0.05 0 1.00000000126869 +1179648 0 2 0 0 5242880 5636096 5242880 0.05625 0 0.075 0 1.00000000080762 +1179648 0 2 0 0 5242880 5767168 5242880 0.05625 0 0.1 0 1.00000000187364 +1179648 0 2 0 0 5242880 5898240 5242880 0.05625 0 0.125 0 1.0000000009088 +1179648 0 2 0 0 5242880 6029312 5242880 0.05625 0 0.15 0 0.999999999825109 +1179648 0 2 0 0 5242880 6160384 5242880 0.05625 0 0.175 0 0.999999999778339 +1179648 0 2 0 0 5242880 6291456 5242880 0.05625 0 0.2 0 0.999999999977901 +1179648 0 2 0 0 5242880 6422528 5242880 0.05625 0 0.225 0 0.999999999920328 +1179648 0 2 0 0 5242880 6553600 5242880 0.05625 0 0.25 0 0.999999999864691 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 2621440 5242880 0.0625 0 -0.5 0 1.00000000000016 +1310720 0 1 0 0 5242880 2883584 5242880 0.0625 0 -0.45 0 0.999999999995216 +1310720 0 1 0 0 5242880 3145728 5242880 0.0625 0 -0.4 0 0.999999999995699 +1310720 0 1 0 0 5242880 3407872 5242880 0.0625 0 -0.35 0 1.00000000002603 +1310720 0 1 0 0 5242880 3670016 5242880 0.0625 0 -0.3 0 1.00000000003931 +1310720 0 1 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0.999999999848368 +1310720 0 1 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.00000000005881 +1310720 0 1 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0.999999999779366 +1310720 0 1 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 1.00000000176887 +1310720 0 1 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 1.00000000163742 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 1 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 1.00000000163742 +1310720 0 1 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 1.00000000176887 +1310720 0 1 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0.999999999779366 +1310720 0 1 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 1.00000000005881 +1310720 0 1 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0.999999999848368 +1310720 0 1 0 0 5242880 6815744 5242880 0.0625 0 0.3 0 1.00000000003931 +1310720 0 1 0 0 5242880 7077888 5242880 0.0625 0 0.35 0 1.00000000002603 +1310720 0 1 0 0 5242880 7340032 5242880 0.0625 0 0.4 0 0.999999999995699 +1310720 0 1 0 0 5242880 7602176 5242880 0.0625 0 0.45 0 0.999999999995216 +1310720 0 1 0 0 5242880 7864320 5242880 0.0625 0 0.5 0 1.00000000000016 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0.999999999848368 +1310720 0 2 0 0 5242880 4063232 5242880 0.0625 0 -0.225 0 0.99999999995912 +1310720 0 2 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.00000000005881 +1310720 0 2 0 0 5242880 4325376 5242880 0.0625 0 -0.175 0 0.999999999807897 +1310720 0 2 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0.999999999779366 +1310720 0 2 0 0 5242880 4587520 5242880 0.0625 0 -0.125 0 1.00000000076487 +1310720 0 2 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 1.00000000176887 +1310720 0 2 0 0 5242880 4849664 5242880 0.0625 0 -0.075 0 1.00000000108602 +1310720 0 2 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 1.00000000163742 +1310720 0 2 0 0 5242880 5111808 5242880 0.0625 0 -0.025 0 1.00000000054727 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 2 0 0 5242880 5373952 5242880 0.0625 0 0.025 0 1.00000000054727 +1310720 0 2 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 1.00000000163742 +1310720 0 2 0 0 5242880 5636096 5242880 0.0625 0 0.075 0 1.00000000108602 +1310720 0 2 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 1.00000000176887 +1310720 0 2 0 0 5242880 5898240 5242880 0.0625 0 0.125 0 1.00000000076487 +1310720 0 2 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0.999999999779366 +1310720 0 2 0 0 5242880 6160384 5242880 0.0625 0 0.175 0 0.999999999807897 +1310720 0 2 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 1.00000000005881 +1310720 0 2 0 0 5242880 6422528 5242880 0.0625 0 0.225 0 0.99999999995912 +1310720 0 2 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0.999999999848368 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 3932160 5242880 0.06875 0 -0.25 0 0.999999999837646 +1441792 0 2 0 0 5242880 4063232 5242880 0.06875 0 -0.225 0 1.00000000000483 +1441792 0 2 0 0 5242880 4194304 5242880 0.06875 0 -0.2 0 1.00000000014767 +1441792 0 2 0 0 5242880 4325376 5242880 0.06875 0 -0.175 0 0.999999999846531 +1441792 0 2 0 0 5242880 4456448 5242880 0.06875 0 -0.15 0 0.999999999744461 +1441792 0 2 0 0 5242880 4587520 5242880 0.06875 0 -0.125 0 1.00000000066039 +1441792 0 2 0 0 5242880 4718592 5242880 0.06875 0 -0.1 0 1.00000000170236 +1441792 0 2 0 0 5242880 4849664 5242880 0.06875 0 -0.075 0 1.00000000140117 +1441792 0 2 0 0 5242880 4980736 5242880 0.06875 0 -0.05 0 1.00000000205035 +1441792 0 2 0 0 5242880 5111808 5242880 0.06875 0 -0.025 0 1.00000000081595 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.00000000107976 +1441792 0 2 0 0 5242880 5373952 5242880 0.06875 0 0.025 0 1.00000000081595 +1441792 0 2 0 0 5242880 5505024 5242880 0.06875 0 0.05 0 1.00000000205035 +1441792 0 2 0 0 5242880 5636096 5242880 0.06875 0 0.075 0 1.00000000140117 +1441792 0 2 0 0 5242880 5767168 5242880 0.06875 0 0.1 0 1.00000000170236 +1441792 0 2 0 0 5242880 5898240 5242880 0.06875 0 0.125 0 1.00000000066039 +1441792 0 2 0 0 5242880 6029312 5242880 0.06875 0 0.15 0 0.999999999744461 +1441792 0 2 0 0 5242880 6160384 5242880 0.06875 0 0.175 0 0.999999999846531 +1441792 0 2 0 0 5242880 6291456 5242880 0.06875 0 0.2 0 1.00000000014767 +1441792 0 2 0 0 5242880 6422528 5242880 0.06875 0 0.225 0 1.00000000000483 +1441792 0 2 0 0 5242880 6553600 5242880 0.06875 0 0.25 0 0.999999999837646 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 0 5242880 0.075 0 -1 0 1 +1572864 0 0 0 0 5242880 524288 5242880 0.075 0 -0.9 0 1 +1572864 0 0 0 0 5242880 1048576 5242880 0.075 0 -0.8 0 1 +1572864 0 0 0 0 5242880 1572864 5242880 0.075 0 -0.7 0 1 +1572864 0 0 0 0 5242880 2097152 5242880 0.075 0 -0.6 0 0.999999999999962 +1572864 0 0 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 1.0000000000004 +1572864 0 0 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0.99999999999281 +1572864 0 0 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 1.00000000005299 +1572864 0 0 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.00000000024572 +1572864 0 0 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.00000000167165 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 0 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.00000000167165 +1572864 0 0 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.00000000024572 +1572864 0 0 0 0 5242880 6815744 5242880 0.075 0 0.3 0 1.00000000005299 +1572864 0 0 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0.99999999999281 +1572864 0 0 0 0 5242880 7864320 5242880 0.075 0 0.5 0 1.0000000000004 +1572864 0 0 0 0 5242880 8388608 5242880 0.075 0 0.6 0 0.999999999999962 +1572864 0 0 0 0 5242880 8912896 5242880 0.075 0 0.7 0 1 +1572864 0 0 0 0 5242880 9437184 5242880 0.075 0 0.8 0 1 +1572864 0 0 0 0 5242880 9961472 5242880 0.075 0 0.9 0 1 +1572864 0 0 0 0 5242880 10485760 5242880 0.075 0 1 0 1 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 1.0000000000004 +1572864 0 1 0 0 5242880 2883584 5242880 0.075 0 -0.45 0 0.999999999992871 +1572864 0 1 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0.99999999999281 +1572864 0 1 0 0 5242880 3407872 5242880 0.075 0 -0.35 0 1.00000000001038 +1572864 0 1 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 1.00000000005299 +1572864 0 1 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 1.000000000064 +1572864 0 1 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.00000000024572 +1572864 0 1 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0.999999999716247 +1572864 0 1 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.00000000167165 +1572864 0 1 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 1.00000000250217 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 1 0 0 5242880 5505024 5242880 0.075 0 0.05 0 1.00000000250217 +1572864 0 1 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.00000000167165 +1572864 0 1 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0.999999999716247 +1572864 0 1 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.00000000024572 +1572864 0 1 0 0 5242880 6553600 5242880 0.075 0 0.25 0 1.000000000064 +1572864 0 1 0 0 5242880 6815744 5242880 0.075 0 0.3 0 1.00000000005299 +1572864 0 1 0 0 5242880 7077888 5242880 0.075 0 0.35 0 1.00000000001038 +1572864 0 1 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0.99999999999281 +1572864 0 1 0 0 5242880 7602176 5242880 0.075 0 0.45 0 0.999999999992871 +1572864 0 1 0 0 5242880 7864320 5242880 0.075 0 0.5 0 1.0000000000004 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 1.000000000064 +1572864 0 2 0 0 5242880 4063232 5242880 0.075 0 -0.225 0 1.00000000018864 +1572864 0 2 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 1.00000000024572 +1572864 0 2 0 0 5242880 4325376 5242880 0.075 0 -0.175 0 0.99999999987013 +1572864 0 2 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0.999999999716247 +1572864 0 2 0 0 5242880 4587520 5242880 0.075 0 -0.125 0 1.00000000060895 +1572864 0 2 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 1.00000000167165 +1572864 0 2 0 0 5242880 4849664 5242880 0.075 0 -0.075 0 1.00000000174461 +1572864 0 2 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 1.00000000250217 +1572864 0 2 0 0 5242880 5111808 5242880 0.075 0 -0.025 0 1.00000000115522 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 2 0 0 5242880 5373952 5242880 0.075 0 0.025 0 1.00000000115522 +1572864 0 2 0 0 5242880 5505024 5242880 0.075 0 0.05 0 1.00000000250217 +1572864 0 2 0 0 5242880 5636096 5242880 0.075 0 0.075 0 1.00000000174461 +1572864 0 2 0 0 5242880 5767168 5242880 0.075 0 0.1 0 1.00000000167165 +1572864 0 2 0 0 5242880 5898240 5242880 0.075 0 0.125 0 1.00000000060895 +1572864 0 2 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0.999999999716247 +1572864 0 2 0 0 5242880 6160384 5242880 0.075 0 0.175 0 0.99999999987013 +1572864 0 2 0 0 5242880 6291456 5242880 0.075 0 0.2 0 1.00000000024572 +1572864 0 2 0 0 5242880 6422528 5242880 0.075 0 0.225 0 1.00000000018864 +1572864 0 2 0 0 5242880 6553600 5242880 0.075 0 0.25 0 1.000000000064 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 3932160 5242880 0.08125 0 -0.25 0 1.00000000009816 +1703936 0 2 0 0 5242880 4063232 5242880 0.08125 0 -0.225 0 1.00000000027139 +1703936 0 2 0 0 5242880 4194304 5242880 0.08125 0 -0.2 0 1.00000000035833 +1703936 0 2 0 0 5242880 4325376 5242880 0.08125 0 -0.175 0 0.99999999993576 +1703936 0 2 0 0 5242880 4456448 5242880 0.08125 0 -0.15 0 0.999999999707798 +1703936 0 2 0 0 5242880 4587520 5242880 0.08125 0 -0.125 0 1.00000000050288 +1703936 0 2 0 0 5242880 4718592 5242880 0.08125 0 -0.1 0 1.00000000167849 +1703936 0 2 0 0 5242880 4849664 5242880 0.08125 0 -0.075 0 1.00000000210511 +1703936 0 2 0 0 5242880 4980736 5242880 0.08125 0 -0.05 0 1.00000000298471 +1703936 0 2 0 0 5242880 5111808 5242880 0.08125 0 -0.025 0 1.00000000156541 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.00000000205505 +1703936 0 2 0 0 5242880 5373952 5242880 0.08125 0 0.025 0 1.00000000156541 +1703936 0 2 0 0 5242880 5505024 5242880 0.08125 0 0.05 0 1.00000000298471 +1703936 0 2 0 0 5242880 5636096 5242880 0.08125 0 0.075 0 1.00000000210511 +1703936 0 2 0 0 5242880 5767168 5242880 0.08125 0 0.1 0 1.00000000167849 +1703936 0 2 0 0 5242880 5898240 5242880 0.08125 0 0.125 0 1.00000000050288 +1703936 0 2 0 0 5242880 6029312 5242880 0.08125 0 0.15 0 0.999999999707798 +1703936 0 2 0 0 5242880 6160384 5242880 0.08125 0 0.175 0 0.99999999993576 +1703936 0 2 0 0 5242880 6291456 5242880 0.08125 0 0.2 0 1.00000000035833 +1703936 0 2 0 0 5242880 6422528 5242880 0.08125 0 0.225 0 1.00000000027139 +1703936 0 2 0 0 5242880 6553600 5242880 0.08125 0 0.25 0 1.00000000009816 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 2621440 5242880 0.0875 0 -0.5 0 1.00000000000087 +1835008 0 1 0 0 5242880 2883584 5242880 0.0875 0 -0.45 0 0.999999999991356 +1835008 0 1 0 0 5242880 3145728 5242880 0.0875 0 -0.4 0 0.999999999990733 +1835008 0 1 0 0 5242880 3407872 5242880 0.0875 0 -0.35 0 1.00000000001404 +1835008 0 1 0 0 5242880 3670016 5242880 0.0875 0 -0.3 0 1.00000000006281 +1835008 0 1 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.00000000008321 +1835008 0 1 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 1.00000000048371 +1835008 0 1 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0.999999999714756 +1835008 0 1 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 1.00000000171941 +1835008 0 1 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 1.0000000034867 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 1 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 1.0000000034867 +1835008 0 1 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 1.00000000171941 +1835008 0 1 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0.999999999714756 +1835008 0 1 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 1.00000000048371 +1835008 0 1 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 1.00000000008321 +1835008 0 1 0 0 5242880 6815744 5242880 0.0875 0 0.3 0 1.00000000006281 +1835008 0 1 0 0 5242880 7077888 5242880 0.0875 0 0.35 0 1.00000000001404 +1835008 0 1 0 0 5242880 7340032 5242880 0.0875 0 0.4 0 0.999999999990733 +1835008 0 1 0 0 5242880 7602176 5242880 0.0875 0 0.45 0 0.999999999991356 +1835008 0 1 0 0 5242880 7864320 5242880 0.0875 0 0.5 0 1.00000000000087 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.00000000008321 +1835008 0 2 0 0 5242880 4063232 5242880 0.0875 0 -0.225 0 1.00000000033279 +1835008 0 2 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 1.00000000048371 +1835008 0 2 0 0 5242880 4325376 5242880 0.0875 0 -0.175 0 0.999999999998976 +1835008 0 2 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0.999999999714756 +1835008 0 2 0 0 5242880 4587520 5242880 0.0875 0 -0.125 0 1.00000000055857 +1835008 0 2 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 1.00000000171941 +1835008 0 2 0 0 5242880 4849664 5242880 0.0875 0 -0.075 0 1.00000000246804 +1835008 0 2 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 1.0000000034867 +1835008 0 2 0 0 5242880 5111808 5242880 0.0875 0 -0.025 0 1.00000000204188 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 2 0 0 5242880 5373952 5242880 0.0875 0 0.025 0 1.00000000204188 +1835008 0 2 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 1.0000000034867 +1835008 0 2 0 0 5242880 5636096 5242880 0.0875 0 0.075 0 1.00000000246804 +1835008 0 2 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 1.00000000171941 +1835008 0 2 0 0 5242880 5898240 5242880 0.0875 0 0.125 0 1.00000000055857 +1835008 0 2 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0.999999999714756 +1835008 0 2 0 0 5242880 6160384 5242880 0.0875 0 0.175 0 0.999999999998976 +1835008 0 2 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 1.00000000048371 +1835008 0 2 0 0 5242880 6422528 5242880 0.0875 0 0.225 0 1.00000000033279 +1835008 0 2 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 1.00000000008321 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 3932160 5242880 0.09375 0 -0.25 0 1.00000000006939 +1966080 0 2 0 0 5242880 4063232 5242880 0.09375 0 -0.225 0 1.00000000039637 +1966080 0 2 0 0 5242880 4194304 5242880 0.09375 0 -0.2 0 1.00000000061474 +1966080 0 2 0 0 5242880 4325376 5242880 0.09375 0 -0.175 0 1.00000000010307 +1966080 0 2 0 0 5242880 4456448 5242880 0.09375 0 -0.15 0 0.99999999974855 +1966080 0 2 0 0 5242880 4587520 5242880 0.09375 0 -0.125 0 1.00000000046383 +1966080 0 2 0 0 5242880 4718592 5242880 0.09375 0 -0.1 0 1.00000000178245 +1966080 0 2 0 0 5242880 4849664 5242880 0.09375 0 -0.075 0 1.0000000028168 +1966080 0 2 0 0 5242880 4980736 5242880 0.09375 0 -0.05 0 1.0000000039935 +1966080 0 2 0 0 5242880 5111808 5242880 0.09375 0 -0.025 0 1.00000000257445 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.0000000033708 +1966080 0 2 0 0 5242880 5373952 5242880 0.09375 0 0.025 0 1.00000000257445 +1966080 0 2 0 0 5242880 5505024 5242880 0.09375 0 0.05 0 1.0000000039935 +1966080 0 2 0 0 5242880 5636096 5242880 0.09375 0 0.075 0 1.0000000028168 +1966080 0 2 0 0 5242880 5767168 5242880 0.09375 0 0.1 0 1.00000000178245 +1966080 0 2 0 0 5242880 5898240 5242880 0.09375 0 0.125 0 1.00000000046383 +1966080 0 2 0 0 5242880 6029312 5242880 0.09375 0 0.15 0 0.99999999974855 +1966080 0 2 0 0 5242880 6160384 5242880 0.09375 0 0.175 0 1.00000000010307 +1966080 0 2 0 0 5242880 6291456 5242880 0.09375 0 0.2 0 1.00000000061474 +1966080 0 2 0 0 5242880 6422528 5242880 0.09375 0 0.225 0 1.00000000039637 +1966080 0 2 0 0 5242880 6553600 5242880 0.09375 0 0.25 0 1.00000000006939 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 0 5242880 0.1 0 -1 0 1 +2097152 0 0 0 0 5242880 524288 5242880 0.1 0 -0.9 0 1 +2097152 0 0 0 0 5242880 1048576 5242880 0.1 0 -0.8 0 0.999999999999999 +2097152 0 0 0 0 5242880 1572864 5242880 0.1 0 -0.7 0 1.00000000000001 +2097152 0 0 0 0 5242880 2097152 5242880 0.1 0 -0.6 0 0.999999999999814 +2097152 0 0 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 1.00000000000152 +2097152 0 0 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0.999999999988956 +2097152 0 0 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 1.00000000007015 +2097152 0 0 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.00000000075378 +2097152 0 0 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.00000000186308 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 0 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.00000000186308 +2097152 0 0 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.00000000075378 +2097152 0 0 0 0 5242880 6815744 5242880 0.1 0 0.3 0 1.00000000007015 +2097152 0 0 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0.999999999988956 +2097152 0 0 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.00000000000152 +2097152 0 0 0 0 5242880 8388608 5242880 0.1 0 0.6 0 0.999999999999814 +2097152 0 0 0 0 5242880 8912896 5242880 0.1 0 0.7 0 1.00000000000001 +2097152 0 0 0 0 5242880 9437184 5242880 0.1 0 0.8 0 0.999999999999999 +2097152 0 0 0 0 5242880 9961472 5242880 0.1 0 0.9 0 1 +2097152 0 0 0 0 5242880 10485760 5242880 0.1 0 1 0 1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 1.00000000000152 +2097152 0 1 0 0 5242880 2883584 5242880 0.1 0 -0.45 0 0.999999999990269 +2097152 0 1 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0.999999999988956 +2097152 0 1 0 0 5242880 3407872 5242880 0.1 0 -0.35 0 0.999999999986041 +2097152 0 1 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 1.00000000007015 +2097152 0 1 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 1.00000000034771 +2097152 0 1 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.00000000075378 +2097152 0 1 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0.999999999805372 +2097152 0 1 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.00000000186308 +2097152 0 1 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 1.00000000448718 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 1 0 0 5242880 5505024 5242880 0.1 0 0.05 0 1.00000000448718 +2097152 0 1 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.00000000186308 +2097152 0 1 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0.999999999805372 +2097152 0 1 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.00000000075378 +2097152 0 1 0 0 5242880 6553600 5242880 0.1 0 0.25 0 1.00000000034771 +2097152 0 1 0 0 5242880 6815744 5242880 0.1 0 0.3 0 1.00000000007015 +2097152 0 1 0 0 5242880 7077888 5242880 0.1 0 0.35 0 0.999999999986041 +2097152 0 1 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0.999999999988956 +2097152 0 1 0 0 5242880 7602176 5242880 0.1 0 0.45 0 0.999999999990269 +2097152 0 1 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.00000000000152 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 1.00000000034771 +2097152 0 2 0 0 5242880 4063232 5242880 0.1 0 -0.225 0 1.00000000062737 +2097152 0 2 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 1.00000000075378 +2097152 0 2 0 0 5242880 4325376 5242880 0.1 0 -0.175 0 1.00000000017635 +2097152 0 2 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0.999999999805372 +2097152 0 2 0 0 5242880 4587520 5242880 0.1 0 -0.125 0 1.00000000061094 +2097152 0 2 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 1.00000000186308 +2097152 0 2 0 0 5242880 4849664 5242880 0.1 0 -0.075 0 1.00000000313278 +2097152 0 2 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 1.00000000448718 +2097152 0 2 0 0 5242880 5111808 5242880 0.1 0 -0.025 0 1.00000000314711 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 2 0 0 5242880 5373952 5242880 0.1 0 0.025 0 1.00000000314711 +2097152 0 2 0 0 5242880 5505024 5242880 0.1 0 0.05 0 1.00000000448718 +2097152 0 2 0 0 5242880 5636096 5242880 0.1 0 0.075 0 1.00000000313278 +2097152 0 2 0 0 5242880 5767168 5242880 0.1 0 0.1 0 1.00000000186308 +2097152 0 2 0 0 5242880 5898240 5242880 0.1 0 0.125 0 1.00000000061094 +2097152 0 2 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0.999999999805372 +2097152 0 2 0 0 5242880 6160384 5242880 0.1 0 0.175 0 1.00000000017635 +2097152 0 2 0 0 5242880 6291456 5242880 0.1 0 0.2 0 1.00000000075378 +2097152 0 2 0 0 5242880 6422528 5242880 0.1 0 0.225 0 1.00000000062737 +2097152 0 2 0 0 5242880 6553600 5242880 0.1 0 0.25 0 1.00000000034771 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phit.z.asc b/Carpet/CarpetInterp/test/waveinterp/phit.z.asc new file mode 100644 index 000000000..33a83eade --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phit.z.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phit z (phit) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 0 0 0 0 -1 1 +0 0 0 0 0 5242880 5242880 524288 0 0 0 -0.9 1 +0 0 0 0 0 5242880 5242880 1048576 0 0 0 -0.8 1 +0 0 0 0 0 5242880 5242880 1572864 0 0 0 -0.7 1 +0 0 0 0 0 5242880 5242880 2097152 0 0 0 -0.6 1 +0 0 0 0 0 5242880 5242880 2621440 0 0 0 -0.5 1 +0 0 0 0 0 5242880 5242880 3145728 0 0 0 -0.4 1 +0 0 0 0 0 5242880 5242880 3670016 0 0 0 -0.3 1 +0 0 0 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 0 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 0 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 0 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 0 0 0 5242880 5242880 6815744 0 0 0 0.3 1 +0 0 0 0 0 5242880 5242880 7340032 0 0 0 0.4 1 +0 0 0 0 0 5242880 5242880 7864320 0 0 0 0.5 1 +0 0 0 0 0 5242880 5242880 8388608 0 0 0 0.6 1 +0 0 0 0 0 5242880 5242880 8912896 0 0 0 0.7 1 +0 0 0 0 0 5242880 5242880 9437184 0 0 0 0.8 1 +0 0 0 0 0 5242880 5242880 9961472 0 0 0 0.9 1 +0 0 0 0 0 5242880 5242880 10485760 0 0 0 1 1 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 2621440 0 0 0 -0.5 1 +0 0 1 0 0 5242880 5242880 2883584 0 0 0 -0.45 1 +0 0 1 0 0 5242880 5242880 3145728 0 0 0 -0.4 1 +0 0 1 0 0 5242880 5242880 3407872 0 0 0 -0.35 1 +0 0 1 0 0 5242880 5242880 3670016 0 0 0 -0.3 1 +0 0 1 0 0 5242880 5242880 3932160 0 0 0 -0.25 1 +0 0 1 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 1 0 0 5242880 5242880 4456448 0 0 0 -0.15 1 +0 0 1 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 1 0 0 5242880 5242880 4980736 0 0 0 -0.05 1 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 1 0 0 5242880 5242880 5505024 0 0 0 0.05 1 +0 0 1 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 1 0 0 5242880 5242880 6029312 0 0 0 0.15 1 +0 0 1 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 1 0 0 5242880 5242880 6553600 0 0 0 0.25 1 +0 0 1 0 0 5242880 5242880 6815744 0 0 0 0.3 1 +0 0 1 0 0 5242880 5242880 7077888 0 0 0 0.35 1 +0 0 1 0 0 5242880 5242880 7340032 0 0 0 0.4 1 +0 0 1 0 0 5242880 5242880 7602176 0 0 0 0.45 1 +0 0 1 0 0 5242880 5242880 7864320 0 0 0 0.5 1 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 3932160 0 0 0 -0.25 1 +0 0 2 0 0 5242880 5242880 4063232 0 0 0 -0.225 1 +0 0 2 0 0 5242880 5242880 4194304 0 0 0 -0.2 1 +0 0 2 0 0 5242880 5242880 4325376 0 0 0 -0.175 1 +0 0 2 0 0 5242880 5242880 4456448 0 0 0 -0.15 1 +0 0 2 0 0 5242880 5242880 4587520 0 0 0 -0.125 1 +0 0 2 0 0 5242880 5242880 4718592 0 0 0 -0.1 1 +0 0 2 0 0 5242880 5242880 4849664 0 0 0 -0.075 1 +0 0 2 0 0 5242880 5242880 4980736 0 0 0 -0.05 1 +0 0 2 0 0 5242880 5242880 5111808 0 0 0 -0.025 1 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 1 +0 0 2 0 0 5242880 5242880 5373952 0 0 0 0.025 1 +0 0 2 0 0 5242880 5242880 5505024 0 0 0 0.05 1 +0 0 2 0 0 5242880 5242880 5636096 0 0 0 0.075 1 +0 0 2 0 0 5242880 5242880 5767168 0 0 0 0.1 1 +0 0 2 0 0 5242880 5242880 5898240 0 0 0 0.125 1 +0 0 2 0 0 5242880 5242880 6029312 0 0 0 0.15 1 +0 0 2 0 0 5242880 5242880 6160384 0 0 0 0.175 1 +0 0 2 0 0 5242880 5242880 6291456 0 0 0 0.2 1 +0 0 2 0 0 5242880 5242880 6422528 0 0 0 0.225 1 +0 0 2 0 0 5242880 5242880 6553600 0 0 0 0.25 1 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 3932160 0.00625 0 0 -0.25 1 +131072 0 2 0 0 5242880 5242880 4063232 0.00625 0 0 -0.225 1 +131072 0 2 0 0 5242880 5242880 4194304 0.00625 0 0 -0.2 1 +131072 0 2 0 0 5242880 5242880 4325376 0.00625 0 0 -0.175 1 +131072 0 2 0 0 5242880 5242880 4456448 0.00625 0 0 -0.15 1 +131072 0 2 0 0 5242880 5242880 4587520 0.00625 0 0 -0.125 1 +131072 0 2 0 0 5242880 5242880 4718592 0.00625 0 0 -0.1 1 +131072 0 2 0 0 5242880 5242880 4849664 0.00625 0 0 -0.075 1 +131072 0 2 0 0 5242880 5242880 4980736 0.00625 0 0 -0.05 1 +131072 0 2 0 0 5242880 5242880 5111808 0.00625 0 0 -0.025 1 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 1 +131072 0 2 0 0 5242880 5242880 5373952 0.00625 0 0 0.025 1 +131072 0 2 0 0 5242880 5242880 5505024 0.00625 0 0 0.05 1 +131072 0 2 0 0 5242880 5242880 5636096 0.00625 0 0 0.075 1 +131072 0 2 0 0 5242880 5242880 5767168 0.00625 0 0 0.1 1 +131072 0 2 0 0 5242880 5242880 5898240 0.00625 0 0 0.125 1 +131072 0 2 0 0 5242880 5242880 6029312 0.00625 0 0 0.15 1 +131072 0 2 0 0 5242880 5242880 6160384 0.00625 0 0 0.175 1 +131072 0 2 0 0 5242880 5242880 6291456 0.00625 0 0 0.2 1 +131072 0 2 0 0 5242880 5242880 6422528 0.00625 0 0 0.225 1 +131072 0 2 0 0 5242880 5242880 6553600 0.00625 0 0 0.25 1 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 2621440 0.0125 0 0 -0.5 1 +262144 0 1 0 0 5242880 5242880 2883584 0.0125 0 0 -0.45 1 +262144 0 1 0 0 5242880 5242880 3145728 0.0125 0 0 -0.4 1 +262144 0 1 0 0 5242880 5242880 3407872 0.0125 0 0 -0.35 1 +262144 0 1 0 0 5242880 5242880 3670016 0.0125 0 0 -0.3 1 +262144 0 1 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 1 +262144 0 1 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 1 +262144 0 1 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 1 +262144 0 1 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 1.00000000277135 +262144 0 1 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 1.00000000000728 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 1 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 1.00000000000728 +262144 0 1 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 1.00000000277135 +262144 0 1 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 1 +262144 0 1 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 1 +262144 0 1 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 1 +262144 0 1 0 0 5242880 5242880 6815744 0.0125 0 0 0.3 1 +262144 0 1 0 0 5242880 5242880 7077888 0.0125 0 0 0.35 1 +262144 0 1 0 0 5242880 5242880 7340032 0.0125 0 0 0.4 1 +262144 0 1 0 0 5242880 5242880 7602176 0.0125 0 0 0.45 1 +262144 0 1 0 0 5242880 5242880 7864320 0.0125 0 0 0.5 1 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 1 +262144 0 2 0 0 5242880 5242880 4063232 0.0125 0 0 -0.225 1 +262144 0 2 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 1 +262144 0 2 0 0 5242880 5242880 4325376 0.0125 0 0 -0.175 0.999999999826791 +262144 0 2 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 1 +262144 0 2 0 0 5242880 5242880 4587520 0.0125 0 0 -0.125 1.00000000155843 +262144 0 2 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 1.00000000277135 +262144 0 2 0 0 5242880 5242880 4849664 0.0125 0 0 -0.075 0.999999999998383 +262144 0 2 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 1.00000000000728 +262144 0 2 0 0 5242880 5242880 5111808 0.0125 0 0 -0.025 1 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 1 +262144 0 2 0 0 5242880 5242880 5373952 0.0125 0 0 0.025 1 +262144 0 2 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 1.00000000000728 +262144 0 2 0 0 5242880 5242880 5636096 0.0125 0 0 0.075 0.999999999998383 +262144 0 2 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 1.00000000277135 +262144 0 2 0 0 5242880 5242880 5898240 0.0125 0 0 0.125 1.00000000155843 +262144 0 2 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 1 +262144 0 2 0 0 5242880 5242880 6160384 0.0125 0 0 0.175 0.999999999826791 +262144 0 2 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 1 +262144 0 2 0 0 5242880 5242880 6422528 0.0125 0 0 0.225 1 +262144 0 2 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 1 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 3932160 0.01875 0 0 -0.25 1 +393216 0 2 0 0 5242880 5242880 4063232 0.01875 0 0 -0.225 0.999999999945108 +393216 0 2 0 0 5242880 5242880 4194304 0.01875 0 0 -0.2 0.999999999902543 +393216 0 2 0 0 5242880 5242880 4325376 0.01875 0 0 -0.175 0.99999999974986 +393216 0 2 0 0 5242880 5242880 4456448 0.01875 0 0 -0.15 1.00000000000116 +393216 0 2 0 0 5242880 5242880 4587520 0.01875 0 0 -0.125 1.00000000176809 +393216 0 2 0 0 5242880 5242880 4718592 0.01875 0 0 -0.1 1.00000000270433 +393216 0 2 0 0 5242880 5242880 4849664 0.01875 0 0 -0.075 1.00000000000657 +393216 0 2 0 0 5242880 5242880 4980736 0.01875 0 0 -0.05 1.00000000005092 +393216 0 2 0 0 5242880 5242880 5111808 0.01875 0 0 -0.025 1.00000000000043 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 1.00000000000068 +393216 0 2 0 0 5242880 5242880 5373952 0.01875 0 0 0.025 1.00000000000043 +393216 0 2 0 0 5242880 5242880 5505024 0.01875 0 0 0.05 1.00000000005092 +393216 0 2 0 0 5242880 5242880 5636096 0.01875 0 0 0.075 1.00000000000657 +393216 0 2 0 0 5242880 5242880 5767168 0.01875 0 0 0.1 1.00000000270433 +393216 0 2 0 0 5242880 5242880 5898240 0.01875 0 0 0.125 1.00000000176809 +393216 0 2 0 0 5242880 5242880 6029312 0.01875 0 0 0.15 1.00000000000116 +393216 0 2 0 0 5242880 5242880 6160384 0.01875 0 0 0.175 0.99999999974986 +393216 0 2 0 0 5242880 5242880 6291456 0.01875 0 0 0.2 0.999999999902543 +393216 0 2 0 0 5242880 5242880 6422528 0.01875 0 0 0.225 0.999999999945108 +393216 0 2 0 0 5242880 5242880 6553600 0.01875 0 0 0.25 1 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 0 0.025 0 0 -1 1 +524288 0 0 0 0 5242880 5242880 524288 0.025 0 0 -0.9 1 +524288 0 0 0 0 5242880 5242880 1048576 0.025 0 0 -0.8 1 +524288 0 0 0 0 5242880 5242880 1572864 0.025 0 0 -0.7 1 +524288 0 0 0 0 5242880 5242880 2097152 0.025 0 0 -0.6 1 +524288 0 0 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 1 +524288 0 0 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 1 +524288 0 0 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 1 +524288 0 0 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0.999999999740114 +524288 0 0 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.00000000258949 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 0 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.00000000258949 +524288 0 0 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0.999999999740114 +524288 0 0 0 0 5242880 5242880 6815744 0.025 0 0 0.3 1 +524288 0 0 0 0 5242880 5242880 7340032 0.025 0 0 0.4 1 +524288 0 0 0 0 5242880 5242880 7864320 0.025 0 0 0.5 1 +524288 0 0 0 0 5242880 5242880 8388608 0.025 0 0 0.6 1 +524288 0 0 0 0 5242880 5242880 8912896 0.025 0 0 0.7 1 +524288 0 0 0 0 5242880 5242880 9437184 0.025 0 0 0.8 1 +524288 0 0 0 0 5242880 5242880 9961472 0.025 0 0 0.9 1 +524288 0 0 0 0 5242880 5242880 10485760 0.025 0 0 1 1 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 1 +524288 0 1 0 0 5242880 5242880 2883584 0.025 0 0 -0.45 1 +524288 0 1 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 1 +524288 0 1 0 0 5242880 5242880 3407872 0.025 0 0 -0.35 1.00000000001624 +524288 0 1 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 1 +524288 0 1 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0.999999999691971 +524288 0 1 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0.999999999740114 +524288 0 1 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 1.0000000000031 +524288 0 1 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.00000000258949 +524288 0 1 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 1.00000000013846 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 1 0 0 5242880 5242880 5505024 0.025 0 0 0.05 1.00000000013846 +524288 0 1 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.00000000258949 +524288 0 1 0 0 5242880 5242880 6029312 0.025 0 0 0.15 1.0000000000031 +524288 0 1 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0.999999999740114 +524288 0 1 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0.999999999691971 +524288 0 1 0 0 5242880 5242880 6815744 0.025 0 0 0.3 1 +524288 0 1 0 0 5242880 5242880 7077888 0.025 0 0 0.35 1.00000000001624 +524288 0 1 0 0 5242880 5242880 7340032 0.025 0 0 0.4 1 +524288 0 1 0 0 5242880 5242880 7602176 0.025 0 0 0.45 1 +524288 0 1 0 0 5242880 5242880 7864320 0.025 0 0 0.5 1 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0.999999999691971 +524288 0 2 0 0 5242880 5242880 4063232 0.025 0 0 -0.225 0.999999999680354 +524288 0 2 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0.999999999740114 +524288 0 2 0 0 5242880 5242880 4325376 0.025 0 0 -0.175 0.999999999712965 +524288 0 2 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 1.0000000000031 +524288 0 2 0 0 5242880 5242880 4587520 0.025 0 0 -0.125 1.00000000146592 +524288 0 2 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 1.00000000258949 +524288 0 2 0 0 5242880 5242880 4849664 0.025 0 0 -0.075 1.00000000004511 +524288 0 2 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 1.00000000013846 +524288 0 2 0 0 5242880 5242880 5111808 0.025 0 0 -0.025 1.00000000000435 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 1.0000000000064 +524288 0 2 0 0 5242880 5242880 5373952 0.025 0 0 0.025 1.00000000000435 +524288 0 2 0 0 5242880 5242880 5505024 0.025 0 0 0.05 1.00000000013846 +524288 0 2 0 0 5242880 5242880 5636096 0.025 0 0 0.075 1.00000000004511 +524288 0 2 0 0 5242880 5242880 5767168 0.025 0 0 0.1 1.00000000258949 +524288 0 2 0 0 5242880 5242880 5898240 0.025 0 0 0.125 1.00000000146592 +524288 0 2 0 0 5242880 5242880 6029312 0.025 0 0 0.15 1.0000000000031 +524288 0 2 0 0 5242880 5242880 6160384 0.025 0 0 0.175 0.999999999712965 +524288 0 2 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0.999999999740114 +524288 0 2 0 0 5242880 5242880 6422528 0.025 0 0 0.225 0.999999999680354 +524288 0 2 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0.999999999691971 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 3932160 0.03125 0 0 -0.25 0.999999999640443 +655360 0 2 0 0 5242880 5242880 4063232 0.03125 0 0 -0.225 0.999999999647753 +655360 0 2 0 0 5242880 5242880 4194304 0.03125 0 0 -0.2 0.999999999732034 +655360 0 2 0 0 5242880 5242880 4325376 0.03125 0 0 -0.175 0.999999999702523 +655360 0 2 0 0 5242880 5242880 4456448 0.03125 0 0 -0.15 0.999999999984606 +655360 0 2 0 0 5242880 5242880 4587520 0.03125 0 0 -0.125 1.00000000144041 +655360 0 2 0 0 5242880 5242880 4718592 0.03125 0 0 -0.1 1.00000000246101 +655360 0 2 0 0 5242880 5242880 4849664 0.03125 0 0 -0.075 1.00000000011784 +655360 0 2 0 0 5242880 5242880 4980736 0.03125 0 0 -0.05 1.00000000027064 +655360 0 2 0 0 5242880 5242880 5111808 0.03125 0 0 -0.025 1.00000000001744 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 1.00000000002479 +655360 0 2 0 0 5242880 5242880 5373952 0.03125 0 0 0.025 1.00000000001744 +655360 0 2 0 0 5242880 5242880 5505024 0.03125 0 0 0.05 1.00000000027064 +655360 0 2 0 0 5242880 5242880 5636096 0.03125 0 0 0.075 1.00000000011784 +655360 0 2 0 0 5242880 5242880 5767168 0.03125 0 0 0.1 1.00000000246101 +655360 0 2 0 0 5242880 5242880 5898240 0.03125 0 0 0.125 1.00000000144041 +655360 0 2 0 0 5242880 5242880 6029312 0.03125 0 0 0.15 0.999999999984606 +655360 0 2 0 0 5242880 5242880 6160384 0.03125 0 0 0.175 0.999999999702523 +655360 0 2 0 0 5242880 5242880 6291456 0.03125 0 0 0.2 0.999999999732034 +655360 0 2 0 0 5242880 5242880 6422528 0.03125 0 0 0.225 0.999999999647753 +655360 0 2 0 0 5242880 5242880 6553600 0.03125 0 0 0.25 0.999999999640443 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 2621440 0.0375 0 0 -0.5 1.00000000000001 +786432 0 1 0 0 5242880 5242880 2883584 0.0375 0 0 -0.45 0.999999999998945 +786432 0 1 0 0 5242880 5242880 3145728 0.0375 0 0 -0.4 0.999999999999198 +786432 0 1 0 0 5242880 5242880 3407872 0.0375 0 0 -0.35 1.00000000002395 +786432 0 1 0 0 5242880 5242880 3670016 0.0375 0 0 -0.3 1.00000000000972 +786432 0 1 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0.99999999965724 +786432 0 1 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0.999999999805198 +786432 0 1 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0.999999999952753 +786432 0 1 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 1.00000000230525 +786432 0 1 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 1.00000000044868 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 1 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 1.00000000044868 +786432 0 1 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 1.00000000230525 +786432 0 1 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0.999999999952753 +786432 0 1 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0.999999999805198 +786432 0 1 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0.99999999965724 +786432 0 1 0 0 5242880 5242880 6815744 0.0375 0 0 0.3 1.00000000000972 +786432 0 1 0 0 5242880 5242880 7077888 0.0375 0 0 0.35 1.00000000002395 +786432 0 1 0 0 5242880 5242880 7340032 0.0375 0 0 0.4 0.999999999999198 +786432 0 1 0 0 5242880 5242880 7602176 0.0375 0 0 0.45 0.999999999998945 +786432 0 1 0 0 5242880 5242880 7864320 0.0375 0 0 0.5 1.00000000000001 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0.99999999965724 +786432 0 2 0 0 5242880 5242880 4063232 0.0375 0 0 -0.225 0.999999999699967 +786432 0 2 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0.999999999805198 +786432 0 2 0 0 5242880 5242880 4325376 0.0375 0 0 -0.175 0.999999999741191 +786432 0 2 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0.999999999952753 +786432 0 2 0 0 5242880 5242880 4587520 0.0375 0 0 -0.125 1.00000000125426 +786432 0 2 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 1.00000000230525 +786432 0 2 0 0 5242880 5242880 4849664 0.0375 0 0 -0.075 1.00000000022745 +786432 0 2 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 1.00000000044868 +786432 0 2 0 0 5242880 5242880 5111808 0.0375 0 0 -0.025 1.00000000004778 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 1.00000000006647 +786432 0 2 0 0 5242880 5242880 5373952 0.0375 0 0 0.025 1.00000000004778 +786432 0 2 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 1.00000000044868 +786432 0 2 0 0 5242880 5242880 5636096 0.0375 0 0 0.075 1.00000000022745 +786432 0 2 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 1.00000000230525 +786432 0 2 0 0 5242880 5242880 5898240 0.0375 0 0 0.125 1.00000000125426 +786432 0 2 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0.999999999952753 +786432 0 2 0 0 5242880 5242880 6160384 0.0375 0 0 0.175 0.999999999741191 +786432 0 2 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0.999999999805198 +786432 0 2 0 0 5242880 5242880 6422528 0.0375 0 0 0.225 0.999999999699967 +786432 0 2 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0.99999999965724 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 3932160 0.04375 0 0 -0.25 0.999999999669696 +917504 0 2 0 0 5242880 5242880 4063232 0.04375 0 0 -0.225 0.999999999735269 +917504 0 2 0 0 5242880 5242880 4194304 0.04375 0 0 -0.2 0.999999999852133 +917504 0 2 0 0 5242880 5242880 4325376 0.04375 0 0 -0.175 0.999999999749234 +917504 0 2 0 0 5242880 5242880 4456448 0.04375 0 0 -0.15 0.999999999915148 +917504 0 2 0 0 5242880 5242880 4587520 0.04375 0 0 -0.125 1.00000000119155 +917504 0 2 0 0 5242880 5242880 4718592 0.04375 0 0 -0.1 1.0000000021537 +917504 0 2 0 0 5242880 5242880 4849664 0.04375 0 0 -0.075 1.00000000037762 +917504 0 2 0 0 5242880 5242880 4980736 0.04375 0 0 -0.05 1.00000000067385 +917504 0 2 0 0 5242880 5242880 5111808 0.04375 0 0 -0.025 1.00000000010524 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 1.00000000014416 +917504 0 2 0 0 5242880 5242880 5373952 0.04375 0 0 0.025 1.00000000010524 +917504 0 2 0 0 5242880 5242880 5505024 0.04375 0 0 0.05 1.00000000067385 +917504 0 2 0 0 5242880 5242880 5636096 0.04375 0 0 0.075 1.00000000037762 +917504 0 2 0 0 5242880 5242880 5767168 0.04375 0 0 0.1 1.0000000021537 +917504 0 2 0 0 5242880 5242880 5898240 0.04375 0 0 0.125 1.00000000119155 +917504 0 2 0 0 5242880 5242880 6029312 0.04375 0 0 0.15 0.999999999915148 +917504 0 2 0 0 5242880 5242880 6160384 0.04375 0 0 0.175 0.999999999749234 +917504 0 2 0 0 5242880 5242880 6291456 0.04375 0 0 0.2 0.999999999852133 +917504 0 2 0 0 5242880 5242880 6422528 0.04375 0 0 0.225 0.999999999735269 +917504 0 2 0 0 5242880 5242880 6553600 0.04375 0 0 0.25 0.999999999669696 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 0 0.05 0 0 -1 1 +1048576 0 0 0 0 5242880 5242880 524288 0.05 0 0 -0.9 1 +1048576 0 0 0 0 5242880 5242880 1048576 0.05 0 0 -0.8 1 +1048576 0 0 0 0 5242880 5242880 1572864 0.05 0 0 -0.7 1 +1048576 0 0 0 0 5242880 5242880 2097152 0.05 0 0 -0.6 1 +1048576 0 0 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 1.00000000000002 +1048576 0 0 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0.99999999999786 +1048576 0 0 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 1.00000000002592 +1048576 0 0 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0.999999999908662 +1048576 0 0 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.00000000200092 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 0 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.00000000200092 +1048576 0 0 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0.999999999908662 +1048576 0 0 0 0 5242880 5242880 6815744 0.05 0 0 0.3 1.00000000002592 +1048576 0 0 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0.99999999999786 +1048576 0 0 0 0 5242880 5242880 7864320 0.05 0 0 0.5 1.00000000000002 +1048576 0 0 0 0 5242880 5242880 8388608 0.05 0 0 0.6 1 +1048576 0 0 0 0 5242880 5242880 8912896 0.05 0 0 0.7 1 +1048576 0 0 0 0 5242880 5242880 9437184 0.05 0 0 0.8 1 +1048576 0 0 0 0 5242880 5242880 9961472 0.05 0 0 0.9 1 +1048576 0 0 0 0 5242880 5242880 10485760 0.05 0 0 1 1 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 1.00000000000002 +1048576 0 1 0 0 5242880 5242880 2883584 0.05 0 0 -0.45 0.999999999997185 +1048576 0 1 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0.99999999999786 +1048576 0 1 0 0 5242880 5242880 3407872 0.05 0 0 -0.35 1.00000000001908 +1048576 0 1 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 1.00000000002592 +1048576 0 1 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0.999999999838278 +1048576 0 1 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0.999999999908662 +1048576 0 1 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0.999999999869254 +1048576 0 1 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.00000000200092 +1048576 0 1 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 1.00000000094713 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 1 0 0 5242880 5242880 5505024 0.05 0 0 0.05 1.00000000094713 +1048576 0 1 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.00000000200092 +1048576 0 1 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0.999999999869254 +1048576 0 1 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0.999999999908662 +1048576 0 1 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0.999999999838278 +1048576 0 1 0 0 5242880 5242880 6815744 0.05 0 0 0.3 1.00000000002592 +1048576 0 1 0 0 5242880 5242880 7077888 0.05 0 0 0.35 1.00000000001908 +1048576 0 1 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0.99999999999786 +1048576 0 1 0 0 5242880 5242880 7602176 0.05 0 0 0.45 0.999999999997185 +1048576 0 1 0 0 5242880 5242880 7864320 0.05 0 0 0.5 1.00000000000002 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0.999999999838278 +1048576 0 2 0 0 5242880 5242880 4063232 0.05 0 0 -0.225 0.999999999864206 +1048576 0 2 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0.999999999908662 +1048576 0 2 0 0 5242880 5242880 4325376 0.05 0 0 -0.175 0.999999999760128 +1048576 0 2 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0.999999999869254 +1048576 0 2 0 0 5242880 5242880 4587520 0.05 0 0 -0.125 1.00000000099849 +1048576 0 2 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 1.00000000200092 +1048576 0 2 0 0 5242880 5242880 4849664 0.05 0 0 -0.075 1.00000000057078 +1048576 0 2 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 1.00000000094713 +1048576 0 2 0 0 5242880 5242880 5111808 0.05 0 0 -0.025 1.00000000020061 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 1.00000000027159 +1048576 0 2 0 0 5242880 5242880 5373952 0.05 0 0 0.025 1.00000000020061 +1048576 0 2 0 0 5242880 5242880 5505024 0.05 0 0 0.05 1.00000000094713 +1048576 0 2 0 0 5242880 5242880 5636096 0.05 0 0 0.075 1.00000000057078 +1048576 0 2 0 0 5242880 5242880 5767168 0.05 0 0 0.1 1.00000000200092 +1048576 0 2 0 0 5242880 5242880 5898240 0.05 0 0 0.125 1.00000000099849 +1048576 0 2 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0.999999999869254 +1048576 0 2 0 0 5242880 5242880 6160384 0.05 0 0 0.175 0.999999999760128 +1048576 0 2 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0.999999999908662 +1048576 0 2 0 0 5242880 5242880 6422528 0.05 0 0 0.225 0.999999999864206 +1048576 0 2 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0.999999999838278 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 3932160 0.05625 0 0 -0.25 0.999999999864691 +1179648 0 2 0 0 5242880 5242880 4063232 0.05625 0 0 -0.225 0.999999999920328 +1179648 0 2 0 0 5242880 5242880 4194304 0.05625 0 0 -0.2 0.999999999977901 +1179648 0 2 0 0 5242880 5242880 4325376 0.05625 0 0 -0.175 0.999999999778339 +1179648 0 2 0 0 5242880 5242880 4456448 0.05625 0 0 -0.15 0.999999999825109 +1179648 0 2 0 0 5242880 5242880 4587520 0.05625 0 0 -0.125 1.0000000009088 +1179648 0 2 0 0 5242880 5242880 4718592 0.05625 0 0 -0.1 1.00000000187364 +1179648 0 2 0 0 5242880 5242880 4849664 0.05625 0 0 -0.075 1.00000000080762 +1179648 0 2 0 0 5242880 5242880 4980736 0.05625 0 0 -0.05 1.00000000126869 +1179648 0 2 0 0 5242880 5242880 5111808 0.05625 0 0 -0.025 1.0000000003447 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 1.00000000046233 +1179648 0 2 0 0 5242880 5242880 5373952 0.05625 0 0 0.025 1.0000000003447 +1179648 0 2 0 0 5242880 5242880 5505024 0.05625 0 0 0.05 1.00000000126869 +1179648 0 2 0 0 5242880 5242880 5636096 0.05625 0 0 0.075 1.00000000080762 +1179648 0 2 0 0 5242880 5242880 5767168 0.05625 0 0 0.1 1.00000000187364 +1179648 0 2 0 0 5242880 5242880 5898240 0.05625 0 0 0.125 1.0000000009088 +1179648 0 2 0 0 5242880 5242880 6029312 0.05625 0 0 0.15 0.999999999825109 +1179648 0 2 0 0 5242880 5242880 6160384 0.05625 0 0 0.175 0.999999999778339 +1179648 0 2 0 0 5242880 5242880 6291456 0.05625 0 0 0.2 0.999999999977901 +1179648 0 2 0 0 5242880 5242880 6422528 0.05625 0 0 0.225 0.999999999920328 +1179648 0 2 0 0 5242880 5242880 6553600 0.05625 0 0 0.25 0.999999999864691 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 2621440 0.0625 0 0 -0.5 1.00000000000016 +1310720 0 1 0 0 5242880 5242880 2883584 0.0625 0 0 -0.45 0.999999999995216 +1310720 0 1 0 0 5242880 5242880 3145728 0.0625 0 0 -0.4 0.999999999995699 +1310720 0 1 0 0 5242880 5242880 3407872 0.0625 0 0 -0.35 1.00000000002603 +1310720 0 1 0 0 5242880 5242880 3670016 0.0625 0 0 -0.3 1.00000000003931 +1310720 0 1 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0.999999999848368 +1310720 0 1 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.00000000005881 +1310720 0 1 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0.999999999779366 +1310720 0 1 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 1.00000000176887 +1310720 0 1 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 1.00000000163742 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 1 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 1.00000000163742 +1310720 0 1 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 1.00000000176887 +1310720 0 1 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0.999999999779366 +1310720 0 1 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 1.00000000005881 +1310720 0 1 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0.999999999848368 +1310720 0 1 0 0 5242880 5242880 6815744 0.0625 0 0 0.3 1.00000000003931 +1310720 0 1 0 0 5242880 5242880 7077888 0.0625 0 0 0.35 1.00000000002603 +1310720 0 1 0 0 5242880 5242880 7340032 0.0625 0 0 0.4 0.999999999995699 +1310720 0 1 0 0 5242880 5242880 7602176 0.0625 0 0 0.45 0.999999999995216 +1310720 0 1 0 0 5242880 5242880 7864320 0.0625 0 0 0.5 1.00000000000016 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0.999999999848368 +1310720 0 2 0 0 5242880 5242880 4063232 0.0625 0 0 -0.225 0.99999999995912 +1310720 0 2 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.00000000005881 +1310720 0 2 0 0 5242880 5242880 4325376 0.0625 0 0 -0.175 0.999999999807897 +1310720 0 2 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0.999999999779366 +1310720 0 2 0 0 5242880 5242880 4587520 0.0625 0 0 -0.125 1.00000000076487 +1310720 0 2 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 1.00000000176887 +1310720 0 2 0 0 5242880 5242880 4849664 0.0625 0 0 -0.075 1.00000000108602 +1310720 0 2 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 1.00000000163742 +1310720 0 2 0 0 5242880 5242880 5111808 0.0625 0 0 -0.025 1.00000000054727 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 1.00000000072855 +1310720 0 2 0 0 5242880 5242880 5373952 0.0625 0 0 0.025 1.00000000054727 +1310720 0 2 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 1.00000000163742 +1310720 0 2 0 0 5242880 5242880 5636096 0.0625 0 0 0.075 1.00000000108602 +1310720 0 2 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 1.00000000176887 +1310720 0 2 0 0 5242880 5242880 5898240 0.0625 0 0 0.125 1.00000000076487 +1310720 0 2 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0.999999999779366 +1310720 0 2 0 0 5242880 5242880 6160384 0.0625 0 0 0.175 0.999999999807897 +1310720 0 2 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 1.00000000005881 +1310720 0 2 0 0 5242880 5242880 6422528 0.0625 0 0 0.225 0.99999999995912 +1310720 0 2 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0.999999999848368 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 3932160 0.06875 0 0 -0.25 0.999999999837646 +1441792 0 2 0 0 5242880 5242880 4063232 0.06875 0 0 -0.225 1.00000000000483 +1441792 0 2 0 0 5242880 5242880 4194304 0.06875 0 0 -0.2 1.00000000014767 +1441792 0 2 0 0 5242880 5242880 4325376 0.06875 0 0 -0.175 0.999999999846531 +1441792 0 2 0 0 5242880 5242880 4456448 0.06875 0 0 -0.15 0.999999999744461 +1441792 0 2 0 0 5242880 5242880 4587520 0.06875 0 0 -0.125 1.00000000066039 +1441792 0 2 0 0 5242880 5242880 4718592 0.06875 0 0 -0.1 1.00000000170236 +1441792 0 2 0 0 5242880 5242880 4849664 0.06875 0 0 -0.075 1.00000000140117 +1441792 0 2 0 0 5242880 5242880 4980736 0.06875 0 0 -0.05 1.00000000205035 +1441792 0 2 0 0 5242880 5242880 5111808 0.06875 0 0 -0.025 1.00000000081595 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 1.00000000107976 +1441792 0 2 0 0 5242880 5242880 5373952 0.06875 0 0 0.025 1.00000000081595 +1441792 0 2 0 0 5242880 5242880 5505024 0.06875 0 0 0.05 1.00000000205035 +1441792 0 2 0 0 5242880 5242880 5636096 0.06875 0 0 0.075 1.00000000140117 +1441792 0 2 0 0 5242880 5242880 5767168 0.06875 0 0 0.1 1.00000000170236 +1441792 0 2 0 0 5242880 5242880 5898240 0.06875 0 0 0.125 1.00000000066039 +1441792 0 2 0 0 5242880 5242880 6029312 0.06875 0 0 0.15 0.999999999744461 +1441792 0 2 0 0 5242880 5242880 6160384 0.06875 0 0 0.175 0.999999999846531 +1441792 0 2 0 0 5242880 5242880 6291456 0.06875 0 0 0.2 1.00000000014767 +1441792 0 2 0 0 5242880 5242880 6422528 0.06875 0 0 0.225 1.00000000000483 +1441792 0 2 0 0 5242880 5242880 6553600 0.06875 0 0 0.25 0.999999999837646 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 0 0.075 0 0 -1 1 +1572864 0 0 0 0 5242880 5242880 524288 0.075 0 0 -0.9 1 +1572864 0 0 0 0 5242880 5242880 1048576 0.075 0 0 -0.8 1 +1572864 0 0 0 0 5242880 5242880 1572864 0.075 0 0 -0.7 1 +1572864 0 0 0 0 5242880 5242880 2097152 0.075 0 0 -0.6 0.999999999999962 +1572864 0 0 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 1.0000000000004 +1572864 0 0 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0.99999999999281 +1572864 0 0 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 1.00000000005299 +1572864 0 0 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.00000000024572 +1572864 0 0 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.00000000167165 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 0 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.00000000167165 +1572864 0 0 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.00000000024572 +1572864 0 0 0 0 5242880 5242880 6815744 0.075 0 0 0.3 1.00000000005299 +1572864 0 0 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0.99999999999281 +1572864 0 0 0 0 5242880 5242880 7864320 0.075 0 0 0.5 1.0000000000004 +1572864 0 0 0 0 5242880 5242880 8388608 0.075 0 0 0.6 0.999999999999962 +1572864 0 0 0 0 5242880 5242880 8912896 0.075 0 0 0.7 1 +1572864 0 0 0 0 5242880 5242880 9437184 0.075 0 0 0.8 1 +1572864 0 0 0 0 5242880 5242880 9961472 0.075 0 0 0.9 1 +1572864 0 0 0 0 5242880 5242880 10485760 0.075 0 0 1 1 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 1.0000000000004 +1572864 0 1 0 0 5242880 5242880 2883584 0.075 0 0 -0.45 0.999999999992871 +1572864 0 1 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0.99999999999281 +1572864 0 1 0 0 5242880 5242880 3407872 0.075 0 0 -0.35 1.00000000001038 +1572864 0 1 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 1.00000000005299 +1572864 0 1 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 1.000000000064 +1572864 0 1 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.00000000024572 +1572864 0 1 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0.999999999716247 +1572864 0 1 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.00000000167165 +1572864 0 1 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 1.00000000250217 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 1 0 0 5242880 5242880 5505024 0.075 0 0 0.05 1.00000000250217 +1572864 0 1 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.00000000167165 +1572864 0 1 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0.999999999716247 +1572864 0 1 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.00000000024572 +1572864 0 1 0 0 5242880 5242880 6553600 0.075 0 0 0.25 1.000000000064 +1572864 0 1 0 0 5242880 5242880 6815744 0.075 0 0 0.3 1.00000000005299 +1572864 0 1 0 0 5242880 5242880 7077888 0.075 0 0 0.35 1.00000000001038 +1572864 0 1 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0.99999999999281 +1572864 0 1 0 0 5242880 5242880 7602176 0.075 0 0 0.45 0.999999999992871 +1572864 0 1 0 0 5242880 5242880 7864320 0.075 0 0 0.5 1.0000000000004 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 1.000000000064 +1572864 0 2 0 0 5242880 5242880 4063232 0.075 0 0 -0.225 1.00000000018864 +1572864 0 2 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 1.00000000024572 +1572864 0 2 0 0 5242880 5242880 4325376 0.075 0 0 -0.175 0.99999999987013 +1572864 0 2 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0.999999999716247 +1572864 0 2 0 0 5242880 5242880 4587520 0.075 0 0 -0.125 1.00000000060895 +1572864 0 2 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 1.00000000167165 +1572864 0 2 0 0 5242880 5242880 4849664 0.075 0 0 -0.075 1.00000000174461 +1572864 0 2 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 1.00000000250217 +1572864 0 2 0 0 5242880 5242880 5111808 0.075 0 0 -0.025 1.00000000115522 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 1.00000000152164 +1572864 0 2 0 0 5242880 5242880 5373952 0.075 0 0 0.025 1.00000000115522 +1572864 0 2 0 0 5242880 5242880 5505024 0.075 0 0 0.05 1.00000000250217 +1572864 0 2 0 0 5242880 5242880 5636096 0.075 0 0 0.075 1.00000000174461 +1572864 0 2 0 0 5242880 5242880 5767168 0.075 0 0 0.1 1.00000000167165 +1572864 0 2 0 0 5242880 5242880 5898240 0.075 0 0 0.125 1.00000000060895 +1572864 0 2 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0.999999999716247 +1572864 0 2 0 0 5242880 5242880 6160384 0.075 0 0 0.175 0.99999999987013 +1572864 0 2 0 0 5242880 5242880 6291456 0.075 0 0 0.2 1.00000000024572 +1572864 0 2 0 0 5242880 5242880 6422528 0.075 0 0 0.225 1.00000000018864 +1572864 0 2 0 0 5242880 5242880 6553600 0.075 0 0 0.25 1.000000000064 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 3932160 0.08125 0 0 -0.25 1.00000000009816 +1703936 0 2 0 0 5242880 5242880 4063232 0.08125 0 0 -0.225 1.00000000027139 +1703936 0 2 0 0 5242880 5242880 4194304 0.08125 0 0 -0.2 1.00000000035833 +1703936 0 2 0 0 5242880 5242880 4325376 0.08125 0 0 -0.175 0.99999999993576 +1703936 0 2 0 0 5242880 5242880 4456448 0.08125 0 0 -0.15 0.999999999707798 +1703936 0 2 0 0 5242880 5242880 4587520 0.08125 0 0 -0.125 1.00000000050288 +1703936 0 2 0 0 5242880 5242880 4718592 0.08125 0 0 -0.1 1.00000000167849 +1703936 0 2 0 0 5242880 5242880 4849664 0.08125 0 0 -0.075 1.00000000210511 +1703936 0 2 0 0 5242880 5242880 4980736 0.08125 0 0 -0.05 1.00000000298471 +1703936 0 2 0 0 5242880 5242880 5111808 0.08125 0 0 -0.025 1.00000000156541 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 1.00000000205505 +1703936 0 2 0 0 5242880 5242880 5373952 0.08125 0 0 0.025 1.00000000156541 +1703936 0 2 0 0 5242880 5242880 5505024 0.08125 0 0 0.05 1.00000000298471 +1703936 0 2 0 0 5242880 5242880 5636096 0.08125 0 0 0.075 1.00000000210511 +1703936 0 2 0 0 5242880 5242880 5767168 0.08125 0 0 0.1 1.00000000167849 +1703936 0 2 0 0 5242880 5242880 5898240 0.08125 0 0 0.125 1.00000000050288 +1703936 0 2 0 0 5242880 5242880 6029312 0.08125 0 0 0.15 0.999999999707798 +1703936 0 2 0 0 5242880 5242880 6160384 0.08125 0 0 0.175 0.99999999993576 +1703936 0 2 0 0 5242880 5242880 6291456 0.08125 0 0 0.2 1.00000000035833 +1703936 0 2 0 0 5242880 5242880 6422528 0.08125 0 0 0.225 1.00000000027139 +1703936 0 2 0 0 5242880 5242880 6553600 0.08125 0 0 0.25 1.00000000009816 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 2621440 0.0875 0 0 -0.5 1.00000000000087 +1835008 0 1 0 0 5242880 5242880 2883584 0.0875 0 0 -0.45 0.999999999991356 +1835008 0 1 0 0 5242880 5242880 3145728 0.0875 0 0 -0.4 0.999999999990733 +1835008 0 1 0 0 5242880 5242880 3407872 0.0875 0 0 -0.35 1.00000000001404 +1835008 0 1 0 0 5242880 5242880 3670016 0.0875 0 0 -0.3 1.00000000006281 +1835008 0 1 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.00000000008321 +1835008 0 1 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 1.00000000048371 +1835008 0 1 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0.999999999714756 +1835008 0 1 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 1.00000000171941 +1835008 0 1 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 1.0000000034867 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 1 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 1.0000000034867 +1835008 0 1 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 1.00000000171941 +1835008 0 1 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0.999999999714756 +1835008 0 1 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 1.00000000048371 +1835008 0 1 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 1.00000000008321 +1835008 0 1 0 0 5242880 5242880 6815744 0.0875 0 0 0.3 1.00000000006281 +1835008 0 1 0 0 5242880 5242880 7077888 0.0875 0 0 0.35 1.00000000001404 +1835008 0 1 0 0 5242880 5242880 7340032 0.0875 0 0 0.4 0.999999999990733 +1835008 0 1 0 0 5242880 5242880 7602176 0.0875 0 0 0.45 0.999999999991356 +1835008 0 1 0 0 5242880 5242880 7864320 0.0875 0 0 0.5 1.00000000000087 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.00000000008321 +1835008 0 2 0 0 5242880 5242880 4063232 0.0875 0 0 -0.225 1.00000000033279 +1835008 0 2 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 1.00000000048371 +1835008 0 2 0 0 5242880 5242880 4325376 0.0875 0 0 -0.175 0.999999999998976 +1835008 0 2 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0.999999999714756 +1835008 0 2 0 0 5242880 5242880 4587520 0.0875 0 0 -0.125 1.00000000055857 +1835008 0 2 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 1.00000000171941 +1835008 0 2 0 0 5242880 5242880 4849664 0.0875 0 0 -0.075 1.00000000246804 +1835008 0 2 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 1.0000000034867 +1835008 0 2 0 0 5242880 5242880 5111808 0.0875 0 0 -0.025 1.00000000204188 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 1.00000000267514 +1835008 0 2 0 0 5242880 5242880 5373952 0.0875 0 0 0.025 1.00000000204188 +1835008 0 2 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 1.0000000034867 +1835008 0 2 0 0 5242880 5242880 5636096 0.0875 0 0 0.075 1.00000000246804 +1835008 0 2 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 1.00000000171941 +1835008 0 2 0 0 5242880 5242880 5898240 0.0875 0 0 0.125 1.00000000055857 +1835008 0 2 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0.999999999714756 +1835008 0 2 0 0 5242880 5242880 6160384 0.0875 0 0 0.175 0.999999999998976 +1835008 0 2 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 1.00000000048371 +1835008 0 2 0 0 5242880 5242880 6422528 0.0875 0 0 0.225 1.00000000033279 +1835008 0 2 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 1.00000000008321 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 3932160 0.09375 0 0 -0.25 1.00000000006939 +1966080 0 2 0 0 5242880 5242880 4063232 0.09375 0 0 -0.225 1.00000000039637 +1966080 0 2 0 0 5242880 5242880 4194304 0.09375 0 0 -0.2 1.00000000061474 +1966080 0 2 0 0 5242880 5242880 4325376 0.09375 0 0 -0.175 1.00000000010307 +1966080 0 2 0 0 5242880 5242880 4456448 0.09375 0 0 -0.15 0.99999999974855 +1966080 0 2 0 0 5242880 5242880 4587520 0.09375 0 0 -0.125 1.00000000046383 +1966080 0 2 0 0 5242880 5242880 4718592 0.09375 0 0 -0.1 1.00000000178245 +1966080 0 2 0 0 5242880 5242880 4849664 0.09375 0 0 -0.075 1.0000000028168 +1966080 0 2 0 0 5242880 5242880 4980736 0.09375 0 0 -0.05 1.0000000039935 +1966080 0 2 0 0 5242880 5242880 5111808 0.09375 0 0 -0.025 1.00000000257445 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 1.0000000033708 +1966080 0 2 0 0 5242880 5242880 5373952 0.09375 0 0 0.025 1.00000000257445 +1966080 0 2 0 0 5242880 5242880 5505024 0.09375 0 0 0.05 1.0000000039935 +1966080 0 2 0 0 5242880 5242880 5636096 0.09375 0 0 0.075 1.0000000028168 +1966080 0 2 0 0 5242880 5242880 5767168 0.09375 0 0 0.1 1.00000000178245 +1966080 0 2 0 0 5242880 5242880 5898240 0.09375 0 0 0.125 1.00000000046383 +1966080 0 2 0 0 5242880 5242880 6029312 0.09375 0 0 0.15 0.99999999974855 +1966080 0 2 0 0 5242880 5242880 6160384 0.09375 0 0 0.175 1.00000000010307 +1966080 0 2 0 0 5242880 5242880 6291456 0.09375 0 0 0.2 1.00000000061474 +1966080 0 2 0 0 5242880 5242880 6422528 0.09375 0 0 0.225 1.00000000039637 +1966080 0 2 0 0 5242880 5242880 6553600 0.09375 0 0 0.25 1.00000000006939 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 0 0.1 0 0 -1 1 +2097152 0 0 0 0 5242880 5242880 524288 0.1 0 0 -0.9 1 +2097152 0 0 0 0 5242880 5242880 1048576 0.1 0 0 -0.8 0.999999999999999 +2097152 0 0 0 0 5242880 5242880 1572864 0.1 0 0 -0.7 1.00000000000001 +2097152 0 0 0 0 5242880 5242880 2097152 0.1 0 0 -0.6 0.999999999999814 +2097152 0 0 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 1.00000000000152 +2097152 0 0 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0.999999999988956 +2097152 0 0 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 1.00000000007015 +2097152 0 0 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.00000000075378 +2097152 0 0 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.00000000186308 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 0 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.00000000186308 +2097152 0 0 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.00000000075378 +2097152 0 0 0 0 5242880 5242880 6815744 0.1 0 0 0.3 1.00000000007015 +2097152 0 0 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0.999999999988956 +2097152 0 0 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.00000000000152 +2097152 0 0 0 0 5242880 5242880 8388608 0.1 0 0 0.6 0.999999999999814 +2097152 0 0 0 0 5242880 5242880 8912896 0.1 0 0 0.7 1.00000000000001 +2097152 0 0 0 0 5242880 5242880 9437184 0.1 0 0 0.8 0.999999999999999 +2097152 0 0 0 0 5242880 5242880 9961472 0.1 0 0 0.9 1 +2097152 0 0 0 0 5242880 5242880 10485760 0.1 0 0 1 1 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 1.00000000000152 +2097152 0 1 0 0 5242880 5242880 2883584 0.1 0 0 -0.45 0.999999999990269 +2097152 0 1 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0.999999999988956 +2097152 0 1 0 0 5242880 5242880 3407872 0.1 0 0 -0.35 0.999999999986041 +2097152 0 1 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 1.00000000007015 +2097152 0 1 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 1.00000000034771 +2097152 0 1 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.00000000075378 +2097152 0 1 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0.999999999805372 +2097152 0 1 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.00000000186308 +2097152 0 1 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 1.00000000448718 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 1 0 0 5242880 5242880 5505024 0.1 0 0 0.05 1.00000000448718 +2097152 0 1 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.00000000186308 +2097152 0 1 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0.999999999805372 +2097152 0 1 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.00000000075378 +2097152 0 1 0 0 5242880 5242880 6553600 0.1 0 0 0.25 1.00000000034771 +2097152 0 1 0 0 5242880 5242880 6815744 0.1 0 0 0.3 1.00000000007015 +2097152 0 1 0 0 5242880 5242880 7077888 0.1 0 0 0.35 0.999999999986041 +2097152 0 1 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0.999999999988956 +2097152 0 1 0 0 5242880 5242880 7602176 0.1 0 0 0.45 0.999999999990269 +2097152 0 1 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.00000000000152 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 1.00000000034771 +2097152 0 2 0 0 5242880 5242880 4063232 0.1 0 0 -0.225 1.00000000062737 +2097152 0 2 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 1.00000000075378 +2097152 0 2 0 0 5242880 5242880 4325376 0.1 0 0 -0.175 1.00000000017635 +2097152 0 2 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0.999999999805372 +2097152 0 2 0 0 5242880 5242880 4587520 0.1 0 0 -0.125 1.00000000061094 +2097152 0 2 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 1.00000000186308 +2097152 0 2 0 0 5242880 5242880 4849664 0.1 0 0 -0.075 1.00000000313278 +2097152 0 2 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 1.00000000448718 +2097152 0 2 0 0 5242880 5242880 5111808 0.1 0 0 -0.025 1.00000000314711 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 1.00000000412429 +2097152 0 2 0 0 5242880 5242880 5373952 0.1 0 0 0.025 1.00000000314711 +2097152 0 2 0 0 5242880 5242880 5505024 0.1 0 0 0.05 1.00000000448718 +2097152 0 2 0 0 5242880 5242880 5636096 0.1 0 0 0.075 1.00000000313278 +2097152 0 2 0 0 5242880 5242880 5767168 0.1 0 0 0.1 1.00000000186308 +2097152 0 2 0 0 5242880 5242880 5898240 0.1 0 0 0.125 1.00000000061094 +2097152 0 2 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0.999999999805372 +2097152 0 2 0 0 5242880 5242880 6160384 0.1 0 0 0.175 1.00000000017635 +2097152 0 2 0 0 5242880 5242880 6291456 0.1 0 0 0.2 1.00000000075378 +2097152 0 2 0 0 5242880 5242880 6422528 0.1 0 0 0.225 1.00000000062737 +2097152 0 2 0 0 5242880 5242880 6553600 0.1 0 0 0.25 1.00000000034771 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phix..asc b/Carpet/CarpetInterp/test/waveinterp/phix..asc new file mode 100644 index 000000000..3c42790ef --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix..asc @@ -0,0 +1,157 @@ +# WAVEMOL::phix (phix) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.average.asc b/Carpet/CarpetInterp/test/waveinterp/phix.average.asc new file mode 100644 index 000000000..81e5044d2 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.average.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 -5.85334791673991e-30 +262144 0.0125 7.61546596377734e-31 +393216 0.01875 6.39963409360546e-32 +524288 0.025 4.22987217379507e-30 +655360 0.03125 -5.14968398928276e-30 +786432 0.0375 -1.12574148960532e-30 +917504 0.04375 7.24489855354977e-30 +1048576 0.05 -8.03001236947098e-30 +1179648 0.05625 9.07949319625439e-30 +1310720 0.0625 3.81917146501438e-30 +1441792 0.06875 -1.60190039718705e-29 +1572864 0.075 -3.19476833700931e-29 +1703936 0.08125 -4.15571924870429e-30 +1835008 0.0875 1.62347574294484e-29 +1966080 0.09375 -1.00382550189374e-29 +2097152 0.1 2.83859763830203e-29 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.count.asc b/Carpet/CarpetInterp/test/waveinterp/phix.count.asc new file mode 100644 index 000000000..40a5bcbfb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.count.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000 +393216 0.01875 8000 +524288 0.025 8000 +655360 0.03125 8000 +786432 0.0375 8000 +917504 0.04375 8000 +1048576 0.05 8000 +1179648 0.05625 8000 +1310720 0.0625 8000 +1441792 0.06875 8000 +1572864 0.075 8000 +1703936 0.08125 8000 +1835008 0.0875 8000 +1966080 0.09375 8000 +2097152 0.1 8000 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.maximum.asc b/Carpet/CarpetInterp/test/waveinterp/phix.maximum.asc new file mode 100644 index 000000000..9e14adf44 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.maximum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.minimum.asc b/Carpet/CarpetInterp/test/waveinterp/phix.minimum.asc new file mode 100644 index 000000000..ab06be2cb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.minimum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 -2.52330210059881e-08 +262144 0.0125 -2.59751686828268e-09 +393216 0.01875 -1.94813765121201e-09 +524288 0.025 -1.13718142310167e-09 +655360 0.03125 -1.49819814627278e-09 +786432 0.0375 -1.92004376518377e-09 +917504 0.04375 -2.25411963198039e-09 +1048576 0.05 -2.51675670350412e-09 +1179648 0.05625 -2.6865148826614e-09 +1310720 0.0625 -2.77054086848342e-09 +1441792 0.06875 -2.7710016315662e-09 +1572864 0.075 -2.71062697591515e-09 +1703936 0.08125 -2.68229908058895e-09 +1835008 0.0875 -2.6295740571891e-09 +1966080 0.09375 -2.53181084986157e-09 +2097152 0.1 -2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.norm1.asc b/Carpet/CarpetInterp/test/waveinterp/phix.norm1.asc new file mode 100644 index 000000000..3914ee0c3 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.norm1.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 1.8276409322037e-11 +262144 0.0125 7.34649051893126e-12 +393216 0.01875 5.91041345682556e-12 +524288 0.025 1.24242890027224e-12 +655360 0.03125 2.57713743237751e-12 +786432 0.0375 2.36124801524171e-12 +917504 0.04375 2.980572995517e-12 +1048576 0.05 3.03589049525507e-12 +1179648 0.05625 3.36169643546458e-12 +1310720 0.0625 3.61334864722834e-12 +1441792 0.06875 3.84089322924323e-12 +1572864 0.075 3.76844870942373e-12 +1703936 0.08125 3.84025109025803e-12 +1835008 0.0875 3.86147640814427e-12 +1966080 0.09375 3.97285273972382e-12 +2097152 0.1 4.30036623573871e-12 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.norm2.asc b/Carpet/CarpetInterp/test/waveinterp/phix.norm2.asc new file mode 100644 index 000000000..f6100c672 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.norm2.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 5.18343779507329e-10 +262144 0.0125 1.13025459173354e-10 +393216 0.01875 8.58024498955012e-11 +524288 0.025 2.48311121202448e-11 +655360 0.03125 3.76969874645362e-11 +786432 0.0375 4.28591265832086e-11 +917504 0.04375 5.05689775131339e-11 +1048576 0.05 5.53837109993038e-11 +1179648 0.05625 5.9781605763834e-11 +1310720 0.0625 6.21626122183979e-11 +1441792 0.06875 6.40118017073291e-11 +1572864 0.075 6.41185856980848e-11 +1703936 0.08125 6.40670662348222e-11 +1835008 0.0875 6.32168941306762e-11 +1966080 0.09375 6.25609573472936e-11 +2097152 0.1 6.19448146789359e-11 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.norm_inf.asc b/Carpet/CarpetInterp/test/waveinterp/phix.norm_inf.asc new file mode 100644 index 000000000..9e14adf44 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.norm_inf.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.sum.asc b/Carpet/CarpetInterp/test/waveinterp/phix.sum.asc new file mode 100644 index 000000000..b8432b414 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.sum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phix (phix) +# iteration time data +0 0 0 +131072 0.00625 -4.68267833339193e-26 +262144 0.0125 6.09237277102187e-27 +393216 0.01875 5.11970727488437e-28 +524288 0.025 3.38389773903605e-26 +655360 0.03125 -4.11974719142621e-26 +786432 0.0375 -9.00593191684253e-27 +917504 0.04375 5.79591884283982e-26 +1048576 0.05 -6.42400989557679e-26 +1179648 0.05625 7.26359455700351e-26 +1310720 0.0625 3.0553371720115e-26 +1441792 0.06875 -1.28152031774964e-25 +1572864 0.075 -2.55581466960745e-25 +1703936 0.08125 -3.32457539896343e-26 +1835008 0.0875 1.29878059435587e-25 +1966080 0.09375 -8.0306040151499e-26 +2097152 0.1 2.27087811064162e-25 diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.x.asc b/Carpet/CarpetInterp/test/waveinterp/phix.x.asc new file mode 100644 index 000000000..89a09cd7a --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.x.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phix x (phix) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 5242880 5242880 0 -1 0 0 0 +0 0 0 0 0 524288 5242880 5242880 0 -0.9 0 0 0 +0 0 0 0 0 1048576 5242880 5242880 0 -0.8 0 0 0 +0 0 0 0 0 1572864 5242880 5242880 0 -0.7 0 0 0 +0 0 0 0 0 2097152 5242880 5242880 0 -0.6 0 0 0 +0 0 0 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 0 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 0 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 0 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 0 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 0 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 0 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 0 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 0 0 0 7864320 5242880 5242880 0 0.5 0 0 0 +0 0 0 0 0 8388608 5242880 5242880 0 0.6 0 0 0 +0 0 0 0 0 8912896 5242880 5242880 0 0.7 0 0 0 +0 0 0 0 0 9437184 5242880 5242880 0 0.8 0 0 0 +0 0 0 0 0 9961472 5242880 5242880 0 0.9 0 0 0 +0 0 0 0 0 10485760 5242880 5242880 0 1 0 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 1 0 0 2883584 5242880 5242880 0 -0.45 0 0 0 +0 0 1 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 1 0 0 3407872 5242880 5242880 0 -0.35 0 0 0 +0 0 1 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 1 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 1 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 1 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 1 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 1 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 1 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 1 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 1 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 1 0 0 6553600 5242880 5242880 0 0.25 0 0 0 +0 0 1 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 1 0 0 7077888 5242880 5242880 0 0.35 0 0 0 +0 0 1 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 1 0 0 7602176 5242880 5242880 0 0.45 0 0 0 +0 0 1 0 0 7864320 5242880 5242880 0 0.5 0 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 2 0 0 4063232 5242880 5242880 0 -0.225 0 0 0 +0 0 2 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 2 0 0 4325376 5242880 5242880 0 -0.175 0 0 0 +0 0 2 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 2 0 0 4587520 5242880 5242880 0 -0.125 0 0 0 +0 0 2 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 2 0 0 4849664 5242880 5242880 0 -0.075 0 0 0 +0 0 2 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 2 0 0 5111808 5242880 5242880 0 -0.025 0 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5373952 5242880 5242880 0 0.025 0 0 0 +0 0 2 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 2 0 0 5636096 5242880 5242880 0 0.075 0 0 0 +0 0 2 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 2 0 0 5898240 5242880 5242880 0 0.125 0 0 0 +0 0 2 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 2 0 0 6160384 5242880 5242880 0 0.175 0 0 0 +0 0 2 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 2 0 0 6422528 5242880 5242880 0 0.225 0 0 0 +0 0 2 0 0 6553600 5242880 5242880 0 0.25 0 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 3932160 5242880 5242880 0.00625 -0.25 0 0 8.51287040805251e-10 +131072 0 2 0 0 4063232 5242880 5242880 0.00625 -0.225 0 0 4.78848960452953e-10 +131072 0 2 0 0 4194304 5242880 5242880 0.00625 -0.2 0 0 0 +131072 0 2 0 0 4325376 5242880 5242880 0.00625 -0.175 0 0 2.43032142559095e-09 +131072 0 2 0 0 4456448 5242880 5242880 0.00625 -0.15 0 0 0 +131072 0 2 0 0 4587520 5242880 5242880 0.00625 -0.125 0 0 -2.23517417907715e-08 +131072 0 2 0 0 4718592 5242880 5242880 0.00625 -0.1 0 0 0 +131072 0 2 0 0 4849664 5242880 5242880 0.00625 -0.075 0 0 0 +131072 0 2 0 0 4980736 5242880 5242880 0.00625 -0.05 0 0 0 +131072 0 2 0 0 5111808 5242880 5242880 0.00625 -0.025 0 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5373952 5242880 5242880 0.00625 0.025 0 0 0 +131072 0 2 0 0 5505024 5242880 5242880 0.00625 0.05 0 0 0 +131072 0 2 0 0 5636096 5242880 5242880 0.00625 0.075 0 0 0 +131072 0 2 0 0 5767168 5242880 5242880 0.00625 0.1 0 0 0 +131072 0 2 0 0 5898240 5242880 5242880 0.00625 0.125 0 0 2.23517417907715e-08 +131072 0 2 0 0 6029312 5242880 5242880 0.00625 0.15 0 0 0 +131072 0 2 0 0 6160384 5242880 5242880 0.00625 0.175 0 0 -2.43032142559095e-09 +131072 0 2 0 0 6291456 5242880 5242880 0.00625 0.2 0 0 0 +131072 0 2 0 0 6422528 5242880 5242880 0.00625 0.225 0 0 -4.78848960452953e-10 +131072 0 2 0 0 6553600 5242880 5242880 0.00625 0.25 0 0 -8.51287040805251e-10 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 2621440 5242880 5242880 0.0125 -0.5 0 0 0 +262144 0 1 0 0 2883584 5242880 5242880 0.0125 -0.45 0 0 0 +262144 0 1 0 0 3145728 5242880 5242880 0.0125 -0.4 0 0 0 +262144 0 1 0 0 3407872 5242880 5242880 0.0125 -0.35 0 0 1.94025536558925e-11 +262144 0 1 0 0 3670016 5242880 5242880 0.0125 -0.3 0 0 0 +262144 0 1 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 2.27009877548067e-09 +262144 0 1 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 1 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 1 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 3.88051095886096e-11 +262144 0 1 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 1 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 -3.88051095886096e-11 +262144 0 1 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 1 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 1 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 -2.27009877548067e-09 +262144 0 1 0 0 6815744 5242880 5242880 0.0125 0.3 0 0 0 +262144 0 1 0 0 7077888 5242880 5242880 0.0125 0.35 0 0 -1.94025536558925e-11 +262144 0 1 0 0 7340032 5242880 5242880 0.0125 0.4 0 0 0 +262144 0 1 0 0 7602176 5242880 5242880 0.0125 0.45 0 0 0 +262144 0 1 0 0 7864320 5242880 5242880 0.0125 0.5 0 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 2.27009877548067e-09 +262144 0 2 0 0 4063232 5242880 5242880 0.0125 -0.225 0 0 1.27693056120788e-09 +262144 0 2 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 2 0 0 4325376 5242880 5242880 0.0125 -0.175 0 0 -1.4430649281683e-10 +262144 0 2 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 2 0 0 4587520 5242880 5242880 0.0125 -0.125 0 0 2.18278741435929e-11 +262144 0 2 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 3.88051095886096e-11 +262144 0 2 0 0 4849664 5242880 5242880 0.0125 -0.075 0 0 -1.74622982740402e-10 +262144 0 2 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 2 0 0 5111808 5242880 5242880 0.0125 -0.025 0 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5373952 5242880 5242880 0.0125 0.025 0 0 0 +262144 0 2 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 2 0 0 5636096 5242880 5242880 0.0125 0.075 0 0 1.74622982740402e-10 +262144 0 2 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 -3.88051095886096e-11 +262144 0 2 0 0 5898240 5242880 5242880 0.0125 0.125 0 0 -2.18278741435929e-11 +262144 0 2 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 2 0 0 6160384 5242880 5242880 0.0125 0.175 0 0 1.4430649281683e-10 +262144 0 2 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 2 0 0 6422528 5242880 5242880 0.0125 0.225 0 0 -1.27693056120788e-09 +262144 0 2 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 -2.27009877548067e-09 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 3932160 5242880 5242880 0.01875 -0.25 0 0 1.7025740816105e-09 +393216 0 2 0 0 4063232 5242880 5242880 0.01875 -0.225 0 0 9.59262773157592e-10 +393216 0 2 0 0 4194304 5242880 5242880 0.01875 -0.2 0 0 1.80060419699424e-11 +393216 0 2 0 0 4325376 5242880 5242880 0.01875 -0.175 0 0 -2.20306178830874e-11 +393216 0 2 0 0 4456448 5242880 5242880 0.01875 -0.15 0 0 1.37016741702522e-10 +393216 0 2 0 0 4587520 5242880 5242880 0.01875 -0.125 0 0 1.09369182438833e-10 +393216 0 2 0 0 4718592 5242880 5242880 0.01875 -0.1 0 0 -1.55569968944095e-10 +393216 0 2 0 0 4849664 5242880 5242880 0.01875 -0.075 0 0 -5.14533776696524e-10 +393216 0 2 0 0 4980736 5242880 5242880 0.01875 -0.05 0 0 -1.05031724058809e-14 +393216 0 2 0 0 5111808 5242880 5242880 0.01875 -0.025 0 0 -3.1663930736651e-12 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5373952 5242880 5242880 0.01875 0.025 0 0 3.1663930736651e-12 +393216 0 2 0 0 5505024 5242880 5242880 0.01875 0.05 0 0 1.05031724058809e-14 +393216 0 2 0 0 5636096 5242880 5242880 0.01875 0.075 0 0 5.14533776696524e-10 +393216 0 2 0 0 5767168 5242880 5242880 0.01875 0.1 0 0 1.55569968944095e-10 +393216 0 2 0 0 5898240 5242880 5242880 0.01875 0.125 0 0 -1.09369182438833e-10 +393216 0 2 0 0 6029312 5242880 5242880 0.01875 0.15 0 0 -1.37016741702522e-10 +393216 0 2 0 0 6160384 5242880 5242880 0.01875 0.175 0 0 2.20306178830874e-11 +393216 0 2 0 0 6291456 5242880 5242880 0.01875 0.2 0 0 -1.80060419699424e-11 +393216 0 2 0 0 6422528 5242880 5242880 0.01875 0.225 0 0 -9.59262773157592e-10 +393216 0 2 0 0 6553600 5242880 5242880 0.01875 0.25 0 0 -1.7025740816105e-09 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 5242880 5242880 0.025 -1 0 0 0 +524288 0 0 0 0 524288 5242880 5242880 0.025 -0.9 0 0 0 +524288 0 0 0 0 1048576 5242880 5242880 0.025 -0.8 0 0 0 +524288 0 0 0 0 1572864 5242880 5242880 0.025 -0.7 0 0 0 +524288 0 0 0 0 2097152 5242880 5242880 0.025 -0.6 0 0 0 +524288 0 0 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 0 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 0 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 0 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 4.80161119198463e-11 +524288 0 0 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 -3.71976833594504e-10 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5767168 5242880 5242880 0.025 0.1 0 0 3.71976833594504e-10 +524288 0 0 0 0 6291456 5242880 5242880 0.025 0.2 0 0 -4.80161119198463e-11 +524288 0 0 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 0 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 0 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 +524288 0 0 0 0 8388608 5242880 5242880 0.025 0.6 0 0 0 +524288 0 0 0 0 8912896 5242880 5242880 0.025 0.7 0 0 0 +524288 0 0 0 0 9437184 5242880 5242880 0.025 0.8 0 0 0 +524288 0 0 0 0 9961472 5242880 5242880 0.025 0.9 0 0 0 +524288 0 0 0 0 10485760 5242880 5242880 0.025 1 0 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 1 0 0 2883584 5242880 5242880 0.025 -0.45 0 0 0 +524288 0 1 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 1 0 0 3407872 5242880 5242880 0.025 -0.35 0 0 -3.0010069949904e-12 +524288 0 1 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 1 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 5.02576150545701e-11 +524288 0 1 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 4.80161119198463e-11 +524288 0 1 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 3.65377977873393e-10 +524288 0 1 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 -3.71976833594504e-10 +524288 0 1 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 -2.64427137593633e-12 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5505024 5242880 5242880 0.025 0.05 0 0 2.64427137593633e-12 +524288 0 1 0 0 5767168 5242880 5242880 0.025 0.1 0 0 3.71976833594504e-10 +524288 0 1 0 0 6029312 5242880 5242880 0.025 0.15 0 0 -3.65377977873393e-10 +524288 0 1 0 0 6291456 5242880 5242880 0.025 0.2 0 0 -4.80161119198463e-11 +524288 0 1 0 0 6553600 5242880 5242880 0.025 0.25 0 0 -5.02576150545701e-11 +524288 0 1 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 1 0 0 7077888 5242880 5242880 0.025 0.35 0 0 3.0010069949904e-12 +524288 0 1 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 1 0 0 7602176 5242880 5242880 0.025 0.45 0 0 0 +524288 0 1 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 5.02576150545701e-11 +524288 0 2 0 0 4063232 5242880 5242880 0.025 -0.225 0 0 3.24428478060221e-11 +524288 0 2 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 4.80161119198463e-11 +524288 0 2 0 0 4325376 5242880 5242880 0.025 -0.175 0 0 2.52641626667443e-10 +524288 0 2 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 3.65377977873393e-10 +524288 0 2 0 0 4587520 5242880 5242880 0.025 -0.125 0 0 -6.54759637711926e-12 +524288 0 2 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 -3.71976833594504e-10 +524288 0 2 0 0 4849664 5242880 5242880 0.025 -0.075 0 0 -8.34775128651562e-10 +524288 0 2 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 -2.64427137593633e-12 +524288 0 2 0 0 5111808 5242880 5242880 0.025 -0.025 0 0 -1.42062519155791e-11 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5373952 5242880 5242880 0.025 0.025 0 0 1.42062519155791e-11 +524288 0 2 0 0 5505024 5242880 5242880 0.025 0.05 0 0 2.64427137593633e-12 +524288 0 2 0 0 5636096 5242880 5242880 0.025 0.075 0 0 8.34775128651562e-10 +524288 0 2 0 0 5767168 5242880 5242880 0.025 0.1 0 0 3.71976833594504e-10 +524288 0 2 0 0 5898240 5242880 5242880 0.025 0.125 0 0 6.54759637711926e-12 +524288 0 2 0 0 6029312 5242880 5242880 0.025 0.15 0 0 -3.65377977873393e-10 +524288 0 2 0 0 6160384 5242880 5242880 0.025 0.175 0 0 -2.52641626667443e-10 +524288 0 2 0 0 6291456 5242880 5242880 0.025 0.2 0 0 -4.80161119198463e-11 +524288 0 2 0 0 6422528 5242880 5242880 0.025 0.225 0 0 -3.24428478060221e-11 +524288 0 2 0 0 6553600 5242880 5242880 0.025 0.25 0 0 -5.02576150545701e-11 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 3932160 5242880 5242880 0.03125 -0.25 0 0 -2.03283184165604e-10 +655360 0 2 0 0 4063232 5242880 5242880 0.03125 -0.225 0 0 -1.10218192534204e-10 +655360 0 2 0 0 4194304 5242880 5242880 0.03125 -0.2 0 0 6.71560801759896e-11 +655360 0 2 0 0 4325376 5242880 5242880 0.03125 -0.175 0 0 3.81864711955078e-10 +655360 0 2 0 0 4456448 5242880 5242880 0.03125 -0.15 0 0 5.43200962509205e-10 +655360 0 2 0 0 4587520 5242880 5242880 0.03125 -0.125 0 0 7.64770232818818e-11 +655360 0 2 0 0 4718592 5242880 5242880 0.03125 -0.1 0 0 -5.39370936802896e-10 +655360 0 2 0 0 4849664 5242880 5242880 0.03125 -0.075 0 0 -1.12595637443332e-09 +655360 0 2 0 0 4980736 5242880 5242880 0.03125 -0.05 0 0 -1.12561372260049e-11 +655360 0 2 0 0 5111808 5242880 5242880 0.03125 -0.025 0 0 -3.75721814771524e-11 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5373952 5242880 5242880 0.03125 0.025 0 0 3.75721814771524e-11 +655360 0 2 0 0 5505024 5242880 5242880 0.03125 0.05 0 0 1.12561372260049e-11 +655360 0 2 0 0 5636096 5242880 5242880 0.03125 0.075 0 0 1.12595637443332e-09 +655360 0 2 0 0 5767168 5242880 5242880 0.03125 0.1 0 0 5.39370936802896e-10 +655360 0 2 0 0 5898240 5242880 5242880 0.03125 0.125 0 0 -7.64770232818818e-11 +655360 0 2 0 0 6029312 5242880 5242880 0.03125 0.15 0 0 -5.43200962509205e-10 +655360 0 2 0 0 6160384 5242880 5242880 0.03125 0.175 0 0 -3.81864711955078e-10 +655360 0 2 0 0 6291456 5242880 5242880 0.03125 0.2 0 0 -6.71560801759896e-11 +655360 0 2 0 0 6422528 5242880 5242880 0.03125 0.225 0 0 1.10218192534204e-10 +655360 0 2 0 0 6553600 5242880 5242880 0.03125 0.25 0 0 2.03283184165604e-10 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 2621440 5242880 5242880 0.0375 -0.5 0 0 -3.17246229286638e-14 +786432 0 1 0 0 2883584 5242880 5242880 0.0375 -0.45 0 0 1.04805866676244e-12 +786432 0 1 0 0 3145728 5242880 5242880 0.0375 -0.4 0 0 4.56771773182929e-13 +786432 0 1 0 0 3407872 5242880 5242880 0.0375 -0.35 0 0 -1.77414430260585e-11 +786432 0 1 0 0 3670016 5242880 5242880 0.0375 -0.3 0 0 -1.29435143159107e-11 +786432 0 1 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 1.14095870609471e-10 +786432 0 1 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 8.3050656629613e-11 +786432 0 1 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 7.1777994427776e-10 +786432 0 1 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 -6.90806513844085e-10 +786432 0 1 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 -2.86001292093552e-11 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 2.86001292093552e-11 +786432 0 1 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 6.90806513844085e-10 +786432 0 1 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 -7.1777994427776e-10 +786432 0 1 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 -8.3050656629613e-11 +786432 0 1 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 -1.14095870609471e-10 +786432 0 1 0 0 6815744 5242880 5242880 0.0375 0.3 0 0 1.29435143159107e-11 +786432 0 1 0 0 7077888 5242880 5242880 0.0375 0.35 0 0 1.77414430260585e-11 +786432 0 1 0 0 7340032 5242880 5242880 0.0375 0.4 0 0 -4.56771773182929e-13 +786432 0 1 0 0 7602176 5242880 5242880 0.0375 0.45 0 0 -1.04805866676244e-12 +786432 0 1 0 0 7864320 5242880 5242880 0.0375 0.5 0 0 3.17246229286638e-14 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 1.14095870609471e-10 +786432 0 2 0 0 4063232 5242880 5242880 0.0375 -0.225 0 0 6.68426446993694e-11 +786432 0 2 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 8.3050656629613e-11 +786432 0 2 0 0 4325376 5242880 5242880 0.0375 -0.175 0 0 4.8651162821256e-10 +786432 0 2 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 7.1777994427776e-10 +786432 0 2 0 0 4587520 5242880 5242880 0.0375 -0.125 0 0 1.17693966551757e-11 +786432 0 2 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 -6.90806513844085e-10 +786432 0 2 0 0 4849664 5242880 5242880 0.0375 -0.075 0 0 -1.37983248438278e-09 +786432 0 2 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 -2.86001292093552e-11 +786432 0 2 0 0 5111808 5242880 5242880 0.0375 -0.025 0 0 -7.6696357598216e-11 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5373952 5242880 5242880 0.0375 0.025 0 0 7.6696357598216e-11 +786432 0 2 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 2.86001292093552e-11 +786432 0 2 0 0 5636096 5242880 5242880 0.0375 0.075 0 0 1.37983248438278e-09 +786432 0 2 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 6.90806513844085e-10 +786432 0 2 0 0 5898240 5242880 5242880 0.0375 0.125 0 0 -1.17693966551757e-11 +786432 0 2 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 -7.1777994427776e-10 +786432 0 2 0 0 6160384 5242880 5242880 0.0375 0.175 0 0 -4.8651162821256e-10 +786432 0 2 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 -8.3050656629613e-11 +786432 0 2 0 0 6422528 5242880 5242880 0.0375 0.225 0 0 -6.68426446993694e-11 +786432 0 2 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 -1.14095870609471e-10 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 3932160 5242880 5242880 0.04375 -0.25 0 0 1.55692360393826e-10 +917504 0 2 0 0 4063232 5242880 5242880 0.04375 -0.225 0 0 8.98292153340505e-11 +917504 0 2 0 0 4194304 5242880 5242880 0.04375 -0.2 0 0 9.87482959985408e-11 +917504 0 2 0 0 4325376 5242880 5242880 0.04375 -0.175 0 0 5.82061050143167e-10 +917504 0 2 0 0 4456448 5242880 5242880 0.04375 -0.15 0 0 8.7534961223934e-10 +917504 0 2 0 0 4587520 5242880 5242880 0.04375 -0.125 0 0 9.97820270600842e-11 +917504 0 2 0 0 4718592 5242880 5242880 0.04375 -0.1 0 0 -7.99350738378557e-10 +917504 0 2 0 0 4849664 5242880 5242880 0.04375 -0.075 0 0 -1.58914841471199e-09 +917504 0 2 0 0 4980736 5242880 5242880 0.04375 -0.05 0 0 -5.6796509625053e-11 +917504 0 2 0 0 5111808 5242880 5242880 0.04375 -0.025 0 0 -1.33697386495157e-10 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5373952 5242880 5242880 0.04375 0.025 0 0 1.33697386495157e-10 +917504 0 2 0 0 5505024 5242880 5242880 0.04375 0.05 0 0 5.6796509625053e-11 +917504 0 2 0 0 5636096 5242880 5242880 0.04375 0.075 0 0 1.58914841471199e-09 +917504 0 2 0 0 5767168 5242880 5242880 0.04375 0.1 0 0 7.99350738378557e-10 +917504 0 2 0 0 5898240 5242880 5242880 0.04375 0.125 0 0 -9.97820270600842e-11 +917504 0 2 0 0 6029312 5242880 5242880 0.04375 0.15 0 0 -8.7534961223934e-10 +917504 0 2 0 0 6160384 5242880 5242880 0.04375 0.175 0 0 -5.82061050143167e-10 +917504 0 2 0 0 6291456 5242880 5242880 0.04375 0.2 0 0 -9.87482959985408e-11 +917504 0 2 0 0 6422528 5242880 5242880 0.04375 0.225 0 0 -8.98292153340505e-11 +917504 0 2 0 0 6553600 5242880 5242880 0.04375 0.25 0 0 -1.55692360393826e-10 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 5242880 5242880 0.05 -1 0 0 0 +1048576 0 0 0 0 524288 5242880 5242880 0.05 -0.9 0 0 0 +1048576 0 0 0 0 1048576 5242880 5242880 0.05 -0.8 0 0 0 +1048576 0 0 0 0 1572864 5242880 5242880 0.05 -0.7 0 0 0 +1048576 0 0 0 0 2097152 5242880 5242880 0.05 -0.6 0 0 0 +1048576 0 0 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 -8.45989944764369e-14 +1048576 0 0 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 1.21805806182114e-12 +1048576 0 0 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 -3.45160381757618e-11 +1048576 0 0 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.13232846710165e-10 +1048576 0 0 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 -8.77529424125889e-10 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5767168 5242880 5242880 0.05 0.1 0 0 8.77529424125889e-10 +1048576 0 0 0 0 6291456 5242880 5242880 0.05 0.2 0 0 -1.13232846710165e-10 +1048576 0 0 0 0 6815744 5242880 5242880 0.05 0.3 0 0 3.45160381757618e-11 +1048576 0 0 0 0 7340032 5242880 5242880 0.05 0.4 0 0 -1.21805806182114e-12 +1048576 0 0 0 0 7864320 5242880 5242880 0.05 0.5 0 0 8.45989944764369e-14 +1048576 0 0 0 0 8388608 5242880 5242880 0.05 0.6 0 0 0 +1048576 0 0 0 0 8912896 5242880 5242880 0.05 0.7 0 0 0 +1048576 0 0 0 0 9437184 5242880 5242880 0.05 0.8 0 0 0 +1048576 0 0 0 0 9961472 5242880 5242880 0.05 0.9 0 0 0 +1048576 0 0 0 0 10485760 5242880 5242880 0.05 1 0 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 -8.45989944764369e-14 +1048576 0 1 0 0 2883584 5242880 5242880 0.05 -0.45 0 0 2.79482311136651e-12 +1048576 0 1 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 1.21805806182114e-12 +1048576 0 1 0 0 3407872 5242880 5242880 0.05 -0.35 0 0 -2.58018792963222e-11 +1048576 0 1 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 -3.45160381757618e-11 +1048576 0 1 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 9.90476651796061e-11 +1048576 0 1 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.13232846710165e-10 +1048576 0 1 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 1.02049840337385e-09 +1048576 0 1 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 -8.77529424125889e-10 +1048576 0 1 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 -9.69948542780171e-11 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5505024 5242880 5242880 0.05 0.05 0 0 9.69948542780171e-11 +1048576 0 1 0 0 5767168 5242880 5242880 0.05 0.1 0 0 8.77529424125889e-10 +1048576 0 1 0 0 6029312 5242880 5242880 0.05 0.15 0 0 -1.02049840337385e-09 +1048576 0 1 0 0 6291456 5242880 5242880 0.05 0.2 0 0 -1.13232846710165e-10 +1048576 0 1 0 0 6553600 5242880 5242880 0.05 0.25 0 0 -9.90476651796061e-11 +1048576 0 1 0 0 6815744 5242880 5242880 0.05 0.3 0 0 3.45160381757618e-11 +1048576 0 1 0 0 7077888 5242880 5242880 0.05 0.35 0 0 2.58018792963222e-11 +1048576 0 1 0 0 7340032 5242880 5242880 0.05 0.4 0 0 -1.21805806182114e-12 +1048576 0 1 0 0 7602176 5242880 5242880 0.05 0.45 0 0 -2.79482311136651e-12 +1048576 0 1 0 0 7864320 5242880 5242880 0.05 0.5 0 0 8.45989944764369e-14 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 9.90476651796061e-11 +1048576 0 2 0 0 4063232 5242880 5242880 0.05 -0.225 0 0 5.77838901131156e-11 +1048576 0 2 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 1.13232846710165e-10 +1048576 0 2 0 0 4325376 5242880 5242880 0.05 -0.175 0 0 6.86378938106402e-10 +1048576 0 2 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 1.02049840337385e-09 +1048576 0 2 0 0 4587520 5242880 5242880 0.05 -0.125 0 0 7.940517629997e-11 +1048576 0 2 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 -8.77529424125889e-10 +1048576 0 2 0 0 4849664 5242880 5242880 0.05 -0.075 0 0 -1.74812777216834e-09 +1048576 0 2 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 -9.69948542780171e-11 +1048576 0 2 0 0 5111808 5242880 5242880 0.05 -0.025 0 0 -2.09176403050589e-10 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5373952 5242880 5242880 0.05 0.025 0 0 2.09176403050589e-10 +1048576 0 2 0 0 5505024 5242880 5242880 0.05 0.05 0 0 9.69948542780171e-11 +1048576 0 2 0 0 5636096 5242880 5242880 0.05 0.075 0 0 1.74812777216834e-09 +1048576 0 2 0 0 5767168 5242880 5242880 0.05 0.1 0 0 8.77529424125889e-10 +1048576 0 2 0 0 5898240 5242880 5242880 0.05 0.125 0 0 -7.940517629997e-11 +1048576 0 2 0 0 6029312 5242880 5242880 0.05 0.15 0 0 -1.02049840337385e-09 +1048576 0 2 0 0 6160384 5242880 5242880 0.05 0.175 0 0 -6.86378938106402e-10 +1048576 0 2 0 0 6291456 5242880 5242880 0.05 0.2 0 0 -1.13232846710165e-10 +1048576 0 2 0 0 6422528 5242880 5242880 0.05 0.225 0 0 -5.77838901131156e-11 +1048576 0 2 0 0 6553600 5242880 5242880 0.05 0.25 0 0 -9.90476651796061e-11 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 3932160 5242880 5242880 0.05625 -0.25 0 0 1.16100548303662e-10 +1179648 0 2 0 0 4063232 5242880 5242880 0.05625 -0.225 0 0 6.10234773446789e-11 +1179648 0 2 0 0 4194304 5242880 5242880 0.05625 -0.2 0 0 1.15569069071564e-10 +1179648 0 2 0 0 4325376 5242880 5242880 0.05625 -0.175 0 0 7.57218084160716e-10 +1179648 0 2 0 0 4456448 5242880 5242880 0.05625 -0.15 0 0 1.14978515973243e-09 +1179648 0 2 0 0 4587520 5242880 5242880 0.05625 -0.125 0 0 1.76389248042821e-10 +1179648 0 2 0 0 4718592 5242880 5242880 0.05625 -0.1 0 0 -9.02082302374948e-10 +1179648 0 2 0 0 4849664 5242880 5242880 0.05625 -0.075 0 0 -1.85227602700344e-09 +1179648 0 2 0 0 4980736 5242880 5242880 0.05625 -0.05 0 0 -1.4924199145024e-10 +1179648 0 2 0 0 5111808 5242880 5242880 0.05625 -0.025 0 0 -3.02089459928527e-10 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5373952 5242880 5242880 0.05625 0.025 0 0 3.02089459928527e-10 +1179648 0 2 0 0 5505024 5242880 5242880 0.05625 0.05 0 0 1.4924199145024e-10 +1179648 0 2 0 0 5636096 5242880 5242880 0.05625 0.075 0 0 1.85227602700344e-09 +1179648 0 2 0 0 5767168 5242880 5242880 0.05625 0.1 0 0 9.02082302374948e-10 +1179648 0 2 0 0 5898240 5242880 5242880 0.05625 0.125 0 0 -1.76389248042821e-10 +1179648 0 2 0 0 6029312 5242880 5242880 0.05625 0.15 0 0 -1.14978515973243e-09 +1179648 0 2 0 0 6160384 5242880 5242880 0.05625 0.175 0 0 -7.57218084160716e-10 +1179648 0 2 0 0 6291456 5242880 5242880 0.05625 0.2 0 0 -1.15569069071564e-10 +1179648 0 2 0 0 6422528 5242880 5242880 0.05625 0.225 0 0 -6.10234773446789e-11 +1179648 0 2 0 0 6553600 5242880 5242880 0.05625 0.25 0 0 -1.16100548303662e-10 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 2621440 5242880 5242880 0.0625 -0.5 0 0 -3.04437898501764e-13 +1310720 0 1 0 0 2883584 5242880 5242880 0.0625 -0.45 0 0 4.38967709837784e-12 +1310720 0 1 0 0 3145728 5242880 5242880 0.0625 -0.4 0 0 3.11205401726244e-12 +1310720 0 1 0 0 3407872 5242880 5242880 0.0625 -0.35 0 0 -3.66809800849549e-11 +1310720 0 1 0 0 3670016 5242880 5242880 0.0625 -0.3 0 0 -4.49737374078052e-11 +1310720 0 1 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 1.49538088653709e-10 +1310720 0 1 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.09402042980378e-10 +1310720 0 1 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 1.26435693396469e-09 +1310720 0 1 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 -8.82571386343993e-10 +1310720 0 1 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 -2.12154000385952e-10 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 2.12154000385952e-10 +1310720 0 1 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 8.82571386343993e-10 +1310720 0 1 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 -1.26435693396469e-09 +1310720 0 1 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 -1.09402042980378e-10 +1310720 0 1 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 -1.49538088653709e-10 +1310720 0 1 0 0 6815744 5242880 5242880 0.0625 0.3 0 0 4.49737374078052e-11 +1310720 0 1 0 0 7077888 5242880 5242880 0.0625 0.35 0 0 3.66809800849549e-11 +1310720 0 1 0 0 7340032 5242880 5242880 0.0625 0.4 0 0 -3.11205401726244e-12 +1310720 0 1 0 0 7602176 5242880 5242880 0.0625 0.45 0 0 -4.38967709837784e-12 +1310720 0 1 0 0 7864320 5242880 5242880 0.0625 0.5 0 0 3.04437898501764e-13 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 1.49538088653709e-10 +1310720 0 2 0 0 4063232 5242880 5242880 0.0625 -0.225 0 0 6.94423742593689e-11 +1310720 0 2 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 1.09402042980378e-10 +1310720 0 2 0 0 4325376 5242880 5242880 0.0625 -0.175 0 0 8.18554005637242e-10 +1310720 0 2 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 1.26435693396469e-09 +1310720 0 2 0 0 4587520 5242880 5242880 0.0625 -0.125 0 0 2.21176367874489e-10 +1310720 0 2 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 -8.82571386343993e-10 +1310720 0 2 0 0 4849664 5242880 5242880 0.0625 -0.075 0 0 -1.89863267700356e-09 +1310720 0 2 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 -2.12154000385952e-10 +1310720 0 2 0 0 5111808 5242880 5242880 0.0625 -0.025 0 0 -4.09720003295237e-10 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5373952 5242880 5242880 0.0625 0.025 0 0 4.09720003295237e-10 +1310720 0 2 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 2.12154000385952e-10 +1310720 0 2 0 0 5636096 5242880 5242880 0.0625 0.075 0 0 1.89863267700356e-09 +1310720 0 2 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 8.82571386343993e-10 +1310720 0 2 0 0 5898240 5242880 5242880 0.0625 0.125 0 0 -2.21176367874489e-10 +1310720 0 2 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 -1.26435693396469e-09 +1310720 0 2 0 0 6160384 5242880 5242880 0.0625 0.175 0 0 -8.18554005637242e-10 +1310720 0 2 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 -1.09402042980378e-10 +1310720 0 2 0 0 6422528 5242880 5242880 0.0625 0.225 0 0 -6.94423742593689e-11 +1310720 0 2 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 -1.49538088653709e-10 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 3932160 5242880 5242880 0.06875 -0.25 0 0 1.81307149993657e-10 +1441792 0 2 0 0 4063232 5242880 5242880 0.06875 -0.225 0 0 7.7773652278003e-11 +1441792 0 2 0 0 4194304 5242880 5242880 0.06875 -0.2 0 0 1.03259930987754e-10 +1441792 0 2 0 0 4325376 5242880 5242880 0.06875 -0.175 0 0 8.64003737307137e-10 +1441792 0 2 0 0 4456448 5242880 5242880 0.06875 -0.15 0 0 1.36522779944452e-09 +1441792 0 2 0 0 4587520 5242880 5242880 0.06875 -0.125 0 0 3.34266718489435e-10 +1441792 0 2 0 0 4718592 5242880 5242880 0.06875 -0.1 0 0 -8.06391597015418e-10 +1441792 0 2 0 0 4849664 5242880 5242880 0.06875 -0.075 0 0 -1.88530306181415e-09 +1441792 0 2 0 0 4980736 5242880 5242880 0.06875 -0.05 0 0 -2.82855130521546e-10 +1441792 0 2 0 0 5111808 5242880 5242880 0.06875 -0.025 0 0 -5.27734009270198e-10 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5373952 5242880 5242880 0.06875 0.025 0 0 5.27734009270198e-10 +1441792 0 2 0 0 5505024 5242880 5242880 0.06875 0.05 0 0 2.82855130521546e-10 +1441792 0 2 0 0 5636096 5242880 5242880 0.06875 0.075 0 0 1.88530306181415e-09 +1441792 0 2 0 0 5767168 5242880 5242880 0.06875 0.1 0 0 8.06391597015418e-10 +1441792 0 2 0 0 5898240 5242880 5242880 0.06875 0.125 0 0 -3.34266718489435e-10 +1441792 0 2 0 0 6029312 5242880 5242880 0.06875 0.15 0 0 -1.36522779944452e-09 +1441792 0 2 0 0 6160384 5242880 5242880 0.06875 0.175 0 0 -8.64003737307137e-10 +1441792 0 2 0 0 6291456 5242880 5242880 0.06875 0.2 0 0 -1.03259930987754e-10 +1441792 0 2 0 0 6422528 5242880 5242880 0.06875 0.225 0 0 -7.7773652278003e-11 +1441792 0 2 0 0 6553600 5242880 5242880 0.06875 0.25 0 0 -1.81307149993657e-10 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 5242880 5242880 0.075 -1 0 0 0 +1572864 0 0 0 0 524288 5242880 5242880 0.075 -0.9 0 0 0 +1572864 0 0 0 0 1048576 5242880 5242880 0.075 -0.8 0 0 0 +1572864 0 0 0 0 1572864 5242880 5242880 0.075 -0.7 0 0 -1.35771024053118e-15 +1572864 0 0 0 0 2097152 5242880 5242880 0.075 -0.6 0 0 1.98637402822518e-14 +1572864 0 0 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 -6.42636407051829e-13 +1572864 0 0 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 5.86269458905756e-12 +1572864 0 0 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 -5.08978900692902e-11 +1572864 0 0 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 9.43000122433091e-11 +1572864 0 0 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 -6.75829822660567e-10 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5767168 5242880 5242880 0.075 0.1 0 0 6.75829822660567e-10 +1572864 0 0 0 0 6291456 5242880 5242880 0.075 0.2 0 0 -9.43000122433091e-11 +1572864 0 0 0 0 6815744 5242880 5242880 0.075 0.3 0 0 5.08978900692902e-11 +1572864 0 0 0 0 7340032 5242880 5242880 0.075 0.4 0 0 -5.86269458905756e-12 +1572864 0 0 0 0 7864320 5242880 5242880 0.075 0.5 0 0 6.42636407051829e-13 +1572864 0 0 0 0 8388608 5242880 5242880 0.075 0.6 0 0 -1.98637402822518e-14 +1572864 0 0 0 0 8912896 5242880 5242880 0.075 0.7 0 0 1.35771024053118e-15 +1572864 0 0 0 0 9437184 5242880 5242880 0.075 0.8 0 0 0 +1572864 0 0 0 0 9961472 5242880 5242880 0.075 0.9 0 0 0 +1572864 0 0 0 0 10485760 5242880 5242880 0.075 1 0 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 -6.42636407051829e-13 +1572864 0 1 0 0 2883584 5242880 5242880 0.075 -0.45 0 0 6.11615937294123e-12 +1572864 0 1 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 5.86269458905756e-12 +1572864 0 1 0 0 3407872 5242880 5242880 0.075 -0.35 0 0 -3.1185883447397e-11 +1572864 0 1 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 -5.08978900692902e-11 +1572864 0 1 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 6.6286639227355e-11 +1572864 0 1 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 9.43000122433091e-11 +1572864 0 1 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 1.45205973171395e-09 +1572864 0 1 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 -6.75829822660567e-10 +1572864 0 1 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 -3.56851564501752e-10 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5505024 5242880 5242880 0.075 0.05 0 0 3.56851564501752e-10 +1572864 0 1 0 0 5767168 5242880 5242880 0.075 0.1 0 0 6.75829822660567e-10 +1572864 0 1 0 0 6029312 5242880 5242880 0.075 0.15 0 0 -1.45205973171395e-09 +1572864 0 1 0 0 6291456 5242880 5242880 0.075 0.2 0 0 -9.43000122433091e-11 +1572864 0 1 0 0 6553600 5242880 5242880 0.075 0.25 0 0 -6.6286639227355e-11 +1572864 0 1 0 0 6815744 5242880 5242880 0.075 0.3 0 0 5.08978900692902e-11 +1572864 0 1 0 0 7077888 5242880 5242880 0.075 0.35 0 0 3.1185883447397e-11 +1572864 0 1 0 0 7340032 5242880 5242880 0.075 0.4 0 0 -5.86269458905756e-12 +1572864 0 1 0 0 7602176 5242880 5242880 0.075 0.45 0 0 -6.11615937294123e-12 +1572864 0 1 0 0 7864320 5242880 5242880 0.075 0.5 0 0 6.42636407051829e-13 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 6.6286639227355e-11 +1572864 0 2 0 0 4063232 5242880 5242880 0.075 -0.225 0 0 2.75737634945702e-12 +1572864 0 2 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 9.43000122433091e-11 +1572864 0 2 0 0 4325376 5242880 5242880 0.075 -0.175 0 0 9.07923804940536e-10 +1572864 0 2 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 1.45205973171395e-09 +1572864 0 2 0 0 4587520 5242880 5242880 0.075 -0.125 0 0 4.53038795858683e-10 +1572864 0 2 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 -6.75829822660567e-10 +1572864 0 2 0 0 4849664 5242880 5242880 0.075 -0.075 0 0 -1.8117351507918e-09 +1572864 0 2 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 -3.56851564501752e-10 +1572864 0 2 0 0 5111808 5242880 5242880 0.075 -0.025 0 0 -6.50323827196727e-10 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5373952 5242880 5242880 0.075 0.025 0 0 6.50323827196727e-10 +1572864 0 2 0 0 5505024 5242880 5242880 0.075 0.05 0 0 3.56851564501752e-10 +1572864 0 2 0 0 5636096 5242880 5242880 0.075 0.075 0 0 1.8117351507918e-09 +1572864 0 2 0 0 5767168 5242880 5242880 0.075 0.1 0 0 6.75829822660567e-10 +1572864 0 2 0 0 5898240 5242880 5242880 0.075 0.125 0 0 -4.53038795858683e-10 +1572864 0 2 0 0 6029312 5242880 5242880 0.075 0.15 0 0 -1.45205973171395e-09 +1572864 0 2 0 0 6160384 5242880 5242880 0.075 0.175 0 0 -9.07923804940536e-10 +1572864 0 2 0 0 6291456 5242880 5242880 0.075 0.2 0 0 -9.43000122433091e-11 +1572864 0 2 0 0 6422528 5242880 5242880 0.075 0.225 0 0 -2.75737634945702e-12 +1572864 0 2 0 0 6553600 5242880 5242880 0.075 0.25 0 0 -6.6286639227355e-11 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 3932160 5242880 5242880 0.08125 -0.25 0 0 6.96062224198494e-11 +1703936 0 2 0 0 4063232 5242880 5242880 0.08125 -0.225 0 0 -1.10388286118339e-11 +1703936 0 2 0 0 4194304 5242880 5242880 0.08125 -0.2 0 0 7.52374759716012e-11 +1703936 0 2 0 0 4325376 5242880 5242880 0.08125 -0.175 0 0 9.3008305679465e-10 +1703936 0 2 0 0 4456448 5242880 5242880 0.08125 -0.15 0 0 1.52889975737573e-09 +1703936 0 2 0 0 4587520 5242880 5242880 0.08125 -0.125 0 0 5.89320989216024e-10 +1703936 0 2 0 0 4718592 5242880 5242880 0.08125 -0.1 0 0 -4.94475691873812e-10 +1703936 0 2 0 0 4849664 5242880 5242880 0.08125 -0.075 0 0 -1.67817614897074e-09 +1703936 0 2 0 0 4980736 5242880 5242880 0.08125 -0.05 0 0 -4.281106418443e-10 +1703936 0 2 0 0 5111808 5242880 5242880 0.08125 -0.025 0 0 -7.70426056284634e-10 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5373952 5242880 5242880 0.08125 0.025 0 0 7.70426056284634e-10 +1703936 0 2 0 0 5505024 5242880 5242880 0.08125 0.05 0 0 4.281106418443e-10 +1703936 0 2 0 0 5636096 5242880 5242880 0.08125 0.075 0 0 1.67817614897074e-09 +1703936 0 2 0 0 5767168 5242880 5242880 0.08125 0.1 0 0 4.94475691873812e-10 +1703936 0 2 0 0 5898240 5242880 5242880 0.08125 0.125 0 0 -5.89320989216024e-10 +1703936 0 2 0 0 6029312 5242880 5242880 0.08125 0.15 0 0 -1.52889975737573e-09 +1703936 0 2 0 0 6160384 5242880 5242880 0.08125 0.175 0 0 -9.3008305679465e-10 +1703936 0 2 0 0 6291456 5242880 5242880 0.08125 0.2 0 0 -7.52374759716012e-11 +1703936 0 2 0 0 6422528 5242880 5242880 0.08125 0.225 0 0 1.10388286118339e-11 +1703936 0 2 0 0 6553600 5242880 5242880 0.08125 0.25 0 0 -6.96062224198494e-11 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 2621440 5242880 5242880 0.0875 -0.5 0 0 -1.14959691072114e-12 +1835008 0 1 0 0 2883584 5242880 5242880 0.0875 -0.45 0 0 7.22601572039165e-12 +1835008 0 1 0 0 3145728 5242880 5242880 0.0875 -0.4 0 0 9.22265678178953e-12 +1835008 0 1 0 0 3407872 5242880 5242880 0.0875 -0.35 0 0 -2.91131087878753e-11 +1835008 0 1 0 0 3670016 5242880 5242880 0.0875 -0.3 0 0 -4.30227031662326e-11 +1835008 0 1 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.02889344216125e-10 +1835008 0 1 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 4.8500592431111e-11 +1835008 0 1 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 1.59439886756226e-09 +1835008 0 1 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 -2.54991675922393e-10 +1835008 0 1 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 -4.89255647569594e-10 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 4.89255647569594e-10 +1835008 0 1 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 2.54991675922393e-10 +1835008 0 1 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 -1.59439886756226e-09 +1835008 0 1 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 -4.8500592431111e-11 +1835008 0 1 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 -1.02889344216125e-10 +1835008 0 1 0 0 6815744 5242880 5242880 0.0875 0.3 0 0 4.30227031662326e-11 +1835008 0 1 0 0 7077888 5242880 5242880 0.0875 0.35 0 0 2.91131087878753e-11 +1835008 0 1 0 0 7340032 5242880 5242880 0.0875 0.4 0 0 -9.22265678178953e-12 +1835008 0 1 0 0 7602176 5242880 5242880 0.0875 0.45 0 0 -7.22601572039165e-12 +1835008 0 1 0 0 7864320 5242880 5242880 0.0875 0.5 0 0 1.14959691072114e-12 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 1.02889344216125e-10 +1835008 0 2 0 0 4063232 5242880 5242880 0.0875 -0.225 0 0 -1.18041709106814e-11 +1835008 0 2 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 4.8500592431111e-11 +1835008 0 2 0 0 4325376 5242880 5242880 0.0875 -0.175 0 0 9.33637341977913e-10 +1835008 0 2 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 1.59439886756226e-09 +1835008 0 2 0 0 4587520 5242880 5242880 0.0875 -0.125 0 0 7.8096373624358e-10 +1835008 0 2 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 -2.54991675922393e-10 +1835008 0 2 0 0 4849664 5242880 5242880 0.0875 -0.075 0 0 -1.48597429731427e-09 +1835008 0 2 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 -4.89255647569594e-10 +1835008 0 2 0 0 5111808 5242880 5242880 0.0875 -0.025 0 0 -8.8000695156835e-10 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5373952 5242880 5242880 0.0875 0.025 0 0 8.8000695156835e-10 +1835008 0 2 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 4.89255647569594e-10 +1835008 0 2 0 0 5636096 5242880 5242880 0.0875 0.075 0 0 1.48597429731427e-09 +1835008 0 2 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 2.54991675922393e-10 +1835008 0 2 0 0 5898240 5242880 5242880 0.0875 0.125 0 0 -7.8096373624358e-10 +1835008 0 2 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 -1.59439886756226e-09 +1835008 0 2 0 0 6160384 5242880 5242880 0.0875 0.175 0 0 -9.33637341977913e-10 +1835008 0 2 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 -4.8500592431111e-11 +1835008 0 2 0 0 6422528 5242880 5242880 0.0875 0.225 0 0 1.18041709106814e-11 +1835008 0 2 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 -1.02889344216125e-10 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 3932160 5242880 5242880 0.09375 -0.25 0 0 1.34436501201734e-10 +1966080 0 2 0 0 4063232 5242880 5242880 0.09375 -0.225 0 0 -1.03885846193062e-11 +1966080 0 2 0 0 4194304 5242880 5242880 0.09375 -0.2 0 0 2.69188612372906e-11 +1966080 0 2 0 0 4325376 5242880 5242880 0.09375 -0.175 0 0 9.38286274781054e-10 +1966080 0 2 0 0 4456448 5242880 5242880 0.09375 -0.15 0 0 1.65348419736237e-09 +1966080 0 2 0 0 4587520 5242880 5242880 0.09375 -0.125 0 0 9.42916074141038e-10 +1966080 0 2 0 0 4718592 5242880 5242880 0.09375 -0.1 0 0 2.10926091407752e-11 +1966080 0 2 0 0 4849664 5242880 5242880 0.09375 -0.075 0 0 -1.23712620703209e-09 +1966080 0 2 0 0 4980736 5242880 5242880 0.09375 -0.05 0 0 -5.31834245624345e-10 +1966080 0 2 0 0 5111808 5242880 5242880 0.09375 -0.025 0 0 -9.7040738870439e-10 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5373952 5242880 5242880 0.09375 0.025 0 0 9.7040738870439e-10 +1966080 0 2 0 0 5505024 5242880 5242880 0.09375 0.05 0 0 5.31834245624345e-10 +1966080 0 2 0 0 5636096 5242880 5242880 0.09375 0.075 0 0 1.23712620703209e-09 +1966080 0 2 0 0 5767168 5242880 5242880 0.09375 0.1 0 0 -2.10926091407752e-11 +1966080 0 2 0 0 5898240 5242880 5242880 0.09375 0.125 0 0 -9.42916074141038e-10 +1966080 0 2 0 0 6029312 5242880 5242880 0.09375 0.15 0 0 -1.65348419736237e-09 +1966080 0 2 0 0 6160384 5242880 5242880 0.09375 0.175 0 0 -9.38286274781054e-10 +1966080 0 2 0 0 6291456 5242880 5242880 0.09375 0.2 0 0 -2.69188612372906e-11 +1966080 0 2 0 0 6422528 5242880 5242880 0.09375 0.225 0 0 1.03885846193062e-11 +1966080 0 2 0 0 6553600 5242880 5242880 0.09375 0.25 0 0 -1.34436501201734e-10 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 5242880 5242880 0.1 -1 0 0 0 +2097152 0 0 0 0 524288 5242880 5242880 0.1 -0.9 0 0 -2.31296463463574e-17 +2097152 0 0 0 0 1048576 5242880 5242880 0.1 -0.8 0 0 3.46944695195361e-16 +2097152 0 0 0 0 1572864 5242880 5242880 0.1 -0.7 0 0 -1.33434929772136e-14 +2097152 0 0 0 0 2097152 5242880 5242880 0.1 -0.6 0 0 1.30913798320383e-13 +2097152 0 0 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 -1.80851861264486e-12 +2097152 0 0 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 1.32743815939307e-11 +2097152 0 0 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 -2.44367743632938e-11 +2097152 0 0 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 6.21578251832252e-12 +2097152 0 0 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 3.4977364523255e-10 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5767168 5242880 5242880 0.1 0.1 0 0 -3.4977364523255e-10 +2097152 0 0 0 0 6291456 5242880 5242880 0.1 0.2 0 0 -6.21578251832252e-12 +2097152 0 0 0 0 6815744 5242880 5242880 0.1 0.3 0 0 2.44367743632938e-11 +2097152 0 0 0 0 7340032 5242880 5242880 0.1 0.4 0 0 -1.32743815939307e-11 +2097152 0 0 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.80851861264486e-12 +2097152 0 0 0 0 8388608 5242880 5242880 0.1 0.6 0 0 -1.30913798320383e-13 +2097152 0 0 0 0 8912896 5242880 5242880 0.1 0.7 0 0 1.33434929772136e-14 +2097152 0 0 0 0 9437184 5242880 5242880 0.1 0.8 0 0 -3.46944695195361e-16 +2097152 0 0 0 0 9961472 5242880 5242880 0.1 0.9 0 0 2.31296463463574e-17 +2097152 0 0 0 0 10485760 5242880 5242880 0.1 1 0 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 -1.80851861264486e-12 +2097152 0 1 0 0 2883584 5242880 5242880 0.1 -0.45 0 0 7.96866421228411e-12 +2097152 0 1 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 1.32743815939307e-11 +2097152 0 1 0 0 3407872 5242880 5242880 0.1 -0.35 0 0 -6.55429992687158e-12 +2097152 0 1 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 -2.44367743632938e-11 +2097152 0 1 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 -3.29398095894514e-11 +2097152 0 1 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 6.21578251832252e-12 +2097152 0 1 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 1.70451336841312e-09 +2097152 0 1 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 3.4977364523255e-10 +2097152 0 1 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 -5.46878123804569e-10 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5505024 5242880 5242880 0.1 0.05 0 0 5.46878123804569e-10 +2097152 0 1 0 0 5767168 5242880 5242880 0.1 0.1 0 0 -3.4977364523255e-10 +2097152 0 1 0 0 6029312 5242880 5242880 0.1 0.15 0 0 -1.70451336841312e-09 +2097152 0 1 0 0 6291456 5242880 5242880 0.1 0.2 0 0 -6.21578251832252e-12 +2097152 0 1 0 0 6553600 5242880 5242880 0.1 0.25 0 0 3.29398095894514e-11 +2097152 0 1 0 0 6815744 5242880 5242880 0.1 0.3 0 0 2.44367743632938e-11 +2097152 0 1 0 0 7077888 5242880 5242880 0.1 0.35 0 0 6.55429992687158e-12 +2097152 0 1 0 0 7340032 5242880 5242880 0.1 0.4 0 0 -1.32743815939307e-11 +2097152 0 1 0 0 7602176 5242880 5242880 0.1 0.45 0 0 -7.96866421228411e-12 +2097152 0 1 0 0 7864320 5242880 5242880 0.1 0.5 0 0 1.80851861264486e-12 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 -3.29398095894514e-11 +2097152 0 2 0 0 4063232 5242880 5242880 0.1 -0.225 0 0 -1.20037052355624e-10 +2097152 0 2 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 6.21578251832252e-12 +2097152 0 2 0 0 4325376 5242880 5242880 0.1 -0.175 0 0 9.4248303267124e-10 +2097152 0 2 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 1.70451336841312e-09 +2097152 0 2 0 0 4587520 5242880 5242880 0.1 -0.125 0 0 1.18932784150608e-09 +2097152 0 2 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 3.4977364523255e-10 +2097152 0 2 0 0 4849664 5242880 5242880 0.1 -0.075 0 0 -9.3463225122233e-10 +2097152 0 2 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 -5.46878123804569e-10 +2097152 0 2 0 0 5111808 5242880 5242880 0.1 -0.025 0 0 -1.03273274654203e-09 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5373952 5242880 5242880 0.1 0.025 0 0 1.03273274654203e-09 +2097152 0 2 0 0 5505024 5242880 5242880 0.1 0.05 0 0 5.46878123804569e-10 +2097152 0 2 0 0 5636096 5242880 5242880 0.1 0.075 0 0 9.3463225122233e-10 +2097152 0 2 0 0 5767168 5242880 5242880 0.1 0.1 0 0 -3.4977364523255e-10 +2097152 0 2 0 0 5898240 5242880 5242880 0.1 0.125 0 0 -1.18932784150608e-09 +2097152 0 2 0 0 6029312 5242880 5242880 0.1 0.15 0 0 -1.70451336841312e-09 +2097152 0 2 0 0 6160384 5242880 5242880 0.1 0.175 0 0 -9.4248303267124e-10 +2097152 0 2 0 0 6291456 5242880 5242880 0.1 0.2 0 0 -6.21578251832252e-12 +2097152 0 2 0 0 6422528 5242880 5242880 0.1 0.225 0 0 1.20037052355624e-10 +2097152 0 2 0 0 6553600 5242880 5242880 0.1 0.25 0 0 3.29398095894514e-11 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.y.asc b/Carpet/CarpetInterp/test/waveinterp/phix.y.asc new file mode 100644 index 000000000..963b71ded --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.y.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phix y (phix) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 0 5242880 0 0 -1 0 0 +0 0 0 0 0 5242880 524288 5242880 0 0 -0.9 0 0 +0 0 0 0 0 5242880 1048576 5242880 0 0 -0.8 0 0 +0 0 0 0 0 5242880 1572864 5242880 0 0 -0.7 0 0 +0 0 0 0 0 5242880 2097152 5242880 0 0 -0.6 0 0 +0 0 0 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 0 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 0 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 0 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 0 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 0 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 0 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 0 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 0 0 0 5242880 7864320 5242880 0 0 0.5 0 0 +0 0 0 0 0 5242880 8388608 5242880 0 0 0.6 0 0 +0 0 0 0 0 5242880 8912896 5242880 0 0 0.7 0 0 +0 0 0 0 0 5242880 9437184 5242880 0 0 0.8 0 0 +0 0 0 0 0 5242880 9961472 5242880 0 0 0.9 0 0 +0 0 0 0 0 5242880 10485760 5242880 0 0 1 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 1 0 0 5242880 2883584 5242880 0 0 -0.45 0 0 +0 0 1 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 1 0 0 5242880 3407872 5242880 0 0 -0.35 0 0 +0 0 1 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 1 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 1 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 1 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 1 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 1 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 1 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 1 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 1 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 1 0 0 5242880 6553600 5242880 0 0 0.25 0 0 +0 0 1 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 1 0 0 5242880 7077888 5242880 0 0 0.35 0 0 +0 0 1 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 1 0 0 5242880 7602176 5242880 0 0 0.45 0 0 +0 0 1 0 0 5242880 7864320 5242880 0 0 0.5 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 2 0 0 5242880 4063232 5242880 0 0 -0.225 0 0 +0 0 2 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 2 0 0 5242880 4325376 5242880 0 0 -0.175 0 0 +0 0 2 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 2 0 0 5242880 4587520 5242880 0 0 -0.125 0 0 +0 0 2 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 2 0 0 5242880 4849664 5242880 0 0 -0.075 0 0 +0 0 2 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 2 0 0 5242880 5111808 5242880 0 0 -0.025 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5373952 5242880 0 0 0.025 0 0 +0 0 2 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 2 0 0 5242880 5636096 5242880 0 0 0.075 0 0 +0 0 2 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 2 0 0 5242880 5898240 5242880 0 0 0.125 0 0 +0 0 2 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 2 0 0 5242880 6160384 5242880 0 0 0.175 0 0 +0 0 2 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 2 0 0 5242880 6422528 5242880 0 0 0.225 0 0 +0 0 2 0 0 5242880 6553600 5242880 0 0 0.25 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 3932160 5242880 0.00625 0 -0.25 0 0 +131072 0 2 0 0 5242880 4063232 5242880 0.00625 0 -0.225 0 0 +131072 0 2 0 0 5242880 4194304 5242880 0.00625 0 -0.2 0 0 +131072 0 2 0 0 5242880 4325376 5242880 0.00625 0 -0.175 0 0 +131072 0 2 0 0 5242880 4456448 5242880 0.00625 0 -0.15 0 0 +131072 0 2 0 0 5242880 4587520 5242880 0.00625 0 -0.125 0 0 +131072 0 2 0 0 5242880 4718592 5242880 0.00625 0 -0.1 0 0 +131072 0 2 0 0 5242880 4849664 5242880 0.00625 0 -0.075 0 0 +131072 0 2 0 0 5242880 4980736 5242880 0.00625 0 -0.05 0 0 +131072 0 2 0 0 5242880 5111808 5242880 0.00625 0 -0.025 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5373952 5242880 0.00625 0 0.025 0 0 +131072 0 2 0 0 5242880 5505024 5242880 0.00625 0 0.05 0 0 +131072 0 2 0 0 5242880 5636096 5242880 0.00625 0 0.075 0 0 +131072 0 2 0 0 5242880 5767168 5242880 0.00625 0 0.1 0 0 +131072 0 2 0 0 5242880 5898240 5242880 0.00625 0 0.125 0 0 +131072 0 2 0 0 5242880 6029312 5242880 0.00625 0 0.15 0 0 +131072 0 2 0 0 5242880 6160384 5242880 0.00625 0 0.175 0 0 +131072 0 2 0 0 5242880 6291456 5242880 0.00625 0 0.2 0 0 +131072 0 2 0 0 5242880 6422528 5242880 0.00625 0 0.225 0 0 +131072 0 2 0 0 5242880 6553600 5242880 0.00625 0 0.25 0 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 2621440 5242880 0.0125 0 -0.5 0 0 +262144 0 1 0 0 5242880 2883584 5242880 0.0125 0 -0.45 0 0 +262144 0 1 0 0 5242880 3145728 5242880 0.0125 0 -0.4 0 0 +262144 0 1 0 0 5242880 3407872 5242880 0.0125 0 -0.35 0 0 +262144 0 1 0 0 5242880 3670016 5242880 0.0125 0 -0.3 0 0 +262144 0 1 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 0 +262144 0 1 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 1 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 1 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 0 +262144 0 1 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 1 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 0 +262144 0 1 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 1 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 1 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 0 +262144 0 1 0 0 5242880 6815744 5242880 0.0125 0 0.3 0 0 +262144 0 1 0 0 5242880 7077888 5242880 0.0125 0 0.35 0 0 +262144 0 1 0 0 5242880 7340032 5242880 0.0125 0 0.4 0 0 +262144 0 1 0 0 5242880 7602176 5242880 0.0125 0 0.45 0 0 +262144 0 1 0 0 5242880 7864320 5242880 0.0125 0 0.5 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 0 +262144 0 2 0 0 5242880 4063232 5242880 0.0125 0 -0.225 0 0 +262144 0 2 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 2 0 0 5242880 4325376 5242880 0.0125 0 -0.175 0 0 +262144 0 2 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 2 0 0 5242880 4587520 5242880 0.0125 0 -0.125 0 0 +262144 0 2 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 0 +262144 0 2 0 0 5242880 4849664 5242880 0.0125 0 -0.075 0 0 +262144 0 2 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 2 0 0 5242880 5111808 5242880 0.0125 0 -0.025 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5373952 5242880 0.0125 0 0.025 0 0 +262144 0 2 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 2 0 0 5242880 5636096 5242880 0.0125 0 0.075 0 0 +262144 0 2 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 0 +262144 0 2 0 0 5242880 5898240 5242880 0.0125 0 0.125 0 0 +262144 0 2 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 2 0 0 5242880 6160384 5242880 0.0125 0 0.175 0 0 +262144 0 2 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 2 0 0 5242880 6422528 5242880 0.0125 0 0.225 0 0 +262144 0 2 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 3932160 5242880 0.01875 0 -0.25 0 0 +393216 0 2 0 0 5242880 4063232 5242880 0.01875 0 -0.225 0 0 +393216 0 2 0 0 5242880 4194304 5242880 0.01875 0 -0.2 0 0 +393216 0 2 0 0 5242880 4325376 5242880 0.01875 0 -0.175 0 0 +393216 0 2 0 0 5242880 4456448 5242880 0.01875 0 -0.15 0 0 +393216 0 2 0 0 5242880 4587520 5242880 0.01875 0 -0.125 0 0 +393216 0 2 0 0 5242880 4718592 5242880 0.01875 0 -0.1 0 0 +393216 0 2 0 0 5242880 4849664 5242880 0.01875 0 -0.075 0 0 +393216 0 2 0 0 5242880 4980736 5242880 0.01875 0 -0.05 0 0 +393216 0 2 0 0 5242880 5111808 5242880 0.01875 0 -0.025 0 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5373952 5242880 0.01875 0 0.025 0 0 +393216 0 2 0 0 5242880 5505024 5242880 0.01875 0 0.05 0 0 +393216 0 2 0 0 5242880 5636096 5242880 0.01875 0 0.075 0 0 +393216 0 2 0 0 5242880 5767168 5242880 0.01875 0 0.1 0 0 +393216 0 2 0 0 5242880 5898240 5242880 0.01875 0 0.125 0 0 +393216 0 2 0 0 5242880 6029312 5242880 0.01875 0 0.15 0 0 +393216 0 2 0 0 5242880 6160384 5242880 0.01875 0 0.175 0 0 +393216 0 2 0 0 5242880 6291456 5242880 0.01875 0 0.2 0 0 +393216 0 2 0 0 5242880 6422528 5242880 0.01875 0 0.225 0 0 +393216 0 2 0 0 5242880 6553600 5242880 0.01875 0 0.25 0 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 0 5242880 0.025 0 -1 0 0 +524288 0 0 0 0 5242880 524288 5242880 0.025 0 -0.9 0 0 +524288 0 0 0 0 5242880 1048576 5242880 0.025 0 -0.8 0 0 +524288 0 0 0 0 5242880 1572864 5242880 0.025 0 -0.7 0 0 +524288 0 0 0 0 5242880 2097152 5242880 0.025 0 -0.6 0 0 +524288 0 0 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 0 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 0 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 0 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 0 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 0 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 0 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 0 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 0 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 +524288 0 0 0 0 5242880 8388608 5242880 0.025 0 0.6 0 0 +524288 0 0 0 0 5242880 8912896 5242880 0.025 0 0.7 0 0 +524288 0 0 0 0 5242880 9437184 5242880 0.025 0 0.8 0 0 +524288 0 0 0 0 5242880 9961472 5242880 0.025 0 0.9 0 0 +524288 0 0 0 0 5242880 10485760 5242880 0.025 0 1 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 1 0 0 5242880 2883584 5242880 0.025 0 -0.45 0 0 +524288 0 1 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 1 0 0 5242880 3407872 5242880 0.025 0 -0.35 0 0 +524288 0 1 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 1 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0 +524288 0 1 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 1 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 0 +524288 0 1 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 1 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5505024 5242880 0.025 0 0.05 0 0 +524288 0 1 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 1 0 0 5242880 6029312 5242880 0.025 0 0.15 0 0 +524288 0 1 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 1 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0 +524288 0 1 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 1 0 0 5242880 7077888 5242880 0.025 0 0.35 0 0 +524288 0 1 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 1 0 0 5242880 7602176 5242880 0.025 0 0.45 0 0 +524288 0 1 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0 +524288 0 2 0 0 5242880 4063232 5242880 0.025 0 -0.225 0 0 +524288 0 2 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 2 0 0 5242880 4325376 5242880 0.025 0 -0.175 0 0 +524288 0 2 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 0 +524288 0 2 0 0 5242880 4587520 5242880 0.025 0 -0.125 0 0 +524288 0 2 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 2 0 0 5242880 4849664 5242880 0.025 0 -0.075 0 0 +524288 0 2 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 0 +524288 0 2 0 0 5242880 5111808 5242880 0.025 0 -0.025 0 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5373952 5242880 0.025 0 0.025 0 0 +524288 0 2 0 0 5242880 5505024 5242880 0.025 0 0.05 0 0 +524288 0 2 0 0 5242880 5636096 5242880 0.025 0 0.075 0 0 +524288 0 2 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 2 0 0 5242880 5898240 5242880 0.025 0 0.125 0 0 +524288 0 2 0 0 5242880 6029312 5242880 0.025 0 0.15 0 0 +524288 0 2 0 0 5242880 6160384 5242880 0.025 0 0.175 0 0 +524288 0 2 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 2 0 0 5242880 6422528 5242880 0.025 0 0.225 0 0 +524288 0 2 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 3932160 5242880 0.03125 0 -0.25 0 0 +655360 0 2 0 0 5242880 4063232 5242880 0.03125 0 -0.225 0 0 +655360 0 2 0 0 5242880 4194304 5242880 0.03125 0 -0.2 0 0 +655360 0 2 0 0 5242880 4325376 5242880 0.03125 0 -0.175 0 0 +655360 0 2 0 0 5242880 4456448 5242880 0.03125 0 -0.15 0 0 +655360 0 2 0 0 5242880 4587520 5242880 0.03125 0 -0.125 0 0 +655360 0 2 0 0 5242880 4718592 5242880 0.03125 0 -0.1 0 0 +655360 0 2 0 0 5242880 4849664 5242880 0.03125 0 -0.075 0 0 +655360 0 2 0 0 5242880 4980736 5242880 0.03125 0 -0.05 0 0 +655360 0 2 0 0 5242880 5111808 5242880 0.03125 0 -0.025 0 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5373952 5242880 0.03125 0 0.025 0 0 +655360 0 2 0 0 5242880 5505024 5242880 0.03125 0 0.05 0 0 +655360 0 2 0 0 5242880 5636096 5242880 0.03125 0 0.075 0 0 +655360 0 2 0 0 5242880 5767168 5242880 0.03125 0 0.1 0 0 +655360 0 2 0 0 5242880 5898240 5242880 0.03125 0 0.125 0 0 +655360 0 2 0 0 5242880 6029312 5242880 0.03125 0 0.15 0 0 +655360 0 2 0 0 5242880 6160384 5242880 0.03125 0 0.175 0 0 +655360 0 2 0 0 5242880 6291456 5242880 0.03125 0 0.2 0 0 +655360 0 2 0 0 5242880 6422528 5242880 0.03125 0 0.225 0 0 +655360 0 2 0 0 5242880 6553600 5242880 0.03125 0 0.25 0 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 2621440 5242880 0.0375 0 -0.5 0 0 +786432 0 1 0 0 5242880 2883584 5242880 0.0375 0 -0.45 0 0 +786432 0 1 0 0 5242880 3145728 5242880 0.0375 0 -0.4 0 0 +786432 0 1 0 0 5242880 3407872 5242880 0.0375 0 -0.35 0 0 +786432 0 1 0 0 5242880 3670016 5242880 0.0375 0 -0.3 0 0 +786432 0 1 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0 +786432 0 1 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0 +786432 0 1 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0 +786432 0 1 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 0 +786432 0 1 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 0 +786432 0 1 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 0 +786432 0 1 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0 +786432 0 1 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0 +786432 0 1 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0 +786432 0 1 0 0 5242880 6815744 5242880 0.0375 0 0.3 0 0 +786432 0 1 0 0 5242880 7077888 5242880 0.0375 0 0.35 0 0 +786432 0 1 0 0 5242880 7340032 5242880 0.0375 0 0.4 0 0 +786432 0 1 0 0 5242880 7602176 5242880 0.0375 0 0.45 0 0 +786432 0 1 0 0 5242880 7864320 5242880 0.0375 0 0.5 0 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0 +786432 0 2 0 0 5242880 4063232 5242880 0.0375 0 -0.225 0 0 +786432 0 2 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0 +786432 0 2 0 0 5242880 4325376 5242880 0.0375 0 -0.175 0 0 +786432 0 2 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0 +786432 0 2 0 0 5242880 4587520 5242880 0.0375 0 -0.125 0 0 +786432 0 2 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 0 +786432 0 2 0 0 5242880 4849664 5242880 0.0375 0 -0.075 0 0 +786432 0 2 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 0 +786432 0 2 0 0 5242880 5111808 5242880 0.0375 0 -0.025 0 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5373952 5242880 0.0375 0 0.025 0 0 +786432 0 2 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 0 +786432 0 2 0 0 5242880 5636096 5242880 0.0375 0 0.075 0 0 +786432 0 2 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 0 +786432 0 2 0 0 5242880 5898240 5242880 0.0375 0 0.125 0 0 +786432 0 2 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0 +786432 0 2 0 0 5242880 6160384 5242880 0.0375 0 0.175 0 0 +786432 0 2 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0 +786432 0 2 0 0 5242880 6422528 5242880 0.0375 0 0.225 0 0 +786432 0 2 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 3932160 5242880 0.04375 0 -0.25 0 0 +917504 0 2 0 0 5242880 4063232 5242880 0.04375 0 -0.225 0 0 +917504 0 2 0 0 5242880 4194304 5242880 0.04375 0 -0.2 0 0 +917504 0 2 0 0 5242880 4325376 5242880 0.04375 0 -0.175 0 0 +917504 0 2 0 0 5242880 4456448 5242880 0.04375 0 -0.15 0 0 +917504 0 2 0 0 5242880 4587520 5242880 0.04375 0 -0.125 0 0 +917504 0 2 0 0 5242880 4718592 5242880 0.04375 0 -0.1 0 0 +917504 0 2 0 0 5242880 4849664 5242880 0.04375 0 -0.075 0 0 +917504 0 2 0 0 5242880 4980736 5242880 0.04375 0 -0.05 0 0 +917504 0 2 0 0 5242880 5111808 5242880 0.04375 0 -0.025 0 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5373952 5242880 0.04375 0 0.025 0 0 +917504 0 2 0 0 5242880 5505024 5242880 0.04375 0 0.05 0 0 +917504 0 2 0 0 5242880 5636096 5242880 0.04375 0 0.075 0 0 +917504 0 2 0 0 5242880 5767168 5242880 0.04375 0 0.1 0 0 +917504 0 2 0 0 5242880 5898240 5242880 0.04375 0 0.125 0 0 +917504 0 2 0 0 5242880 6029312 5242880 0.04375 0 0.15 0 0 +917504 0 2 0 0 5242880 6160384 5242880 0.04375 0 0.175 0 0 +917504 0 2 0 0 5242880 6291456 5242880 0.04375 0 0.2 0 0 +917504 0 2 0 0 5242880 6422528 5242880 0.04375 0 0.225 0 0 +917504 0 2 0 0 5242880 6553600 5242880 0.04375 0 0.25 0 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 0 5242880 0.05 0 -1 0 0 +1048576 0 0 0 0 5242880 524288 5242880 0.05 0 -0.9 0 0 +1048576 0 0 0 0 5242880 1048576 5242880 0.05 0 -0.8 0 0 +1048576 0 0 0 0 5242880 1572864 5242880 0.05 0 -0.7 0 0 +1048576 0 0 0 0 5242880 2097152 5242880 0.05 0 -0.6 0 0 +1048576 0 0 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 0 +1048576 0 0 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0 +1048576 0 0 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 0 +1048576 0 0 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 0 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 0 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 0 0 0 5242880 6815744 5242880 0.05 0 0.3 0 0 +1048576 0 0 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0 +1048576 0 0 0 0 5242880 7864320 5242880 0.05 0 0.5 0 0 +1048576 0 0 0 0 5242880 8388608 5242880 0.05 0 0.6 0 0 +1048576 0 0 0 0 5242880 8912896 5242880 0.05 0 0.7 0 0 +1048576 0 0 0 0 5242880 9437184 5242880 0.05 0 0.8 0 0 +1048576 0 0 0 0 5242880 9961472 5242880 0.05 0 0.9 0 0 +1048576 0 0 0 0 5242880 10485760 5242880 0.05 0 1 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 0 +1048576 0 1 0 0 5242880 2883584 5242880 0.05 0 -0.45 0 0 +1048576 0 1 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0 +1048576 0 1 0 0 5242880 3407872 5242880 0.05 0 -0.35 0 0 +1048576 0 1 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 0 +1048576 0 1 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0 +1048576 0 1 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 1 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0 +1048576 0 1 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 1 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5505024 5242880 0.05 0 0.05 0 0 +1048576 0 1 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 1 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0 +1048576 0 1 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 1 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0 +1048576 0 1 0 0 5242880 6815744 5242880 0.05 0 0.3 0 0 +1048576 0 1 0 0 5242880 7077888 5242880 0.05 0 0.35 0 0 +1048576 0 1 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0 +1048576 0 1 0 0 5242880 7602176 5242880 0.05 0 0.45 0 0 +1048576 0 1 0 0 5242880 7864320 5242880 0.05 0 0.5 0 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0 +1048576 0 2 0 0 5242880 4063232 5242880 0.05 0 -0.225 0 0 +1048576 0 2 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 2 0 0 5242880 4325376 5242880 0.05 0 -0.175 0 0 +1048576 0 2 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0 +1048576 0 2 0 0 5242880 4587520 5242880 0.05 0 -0.125 0 0 +1048576 0 2 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 2 0 0 5242880 4849664 5242880 0.05 0 -0.075 0 0 +1048576 0 2 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 0 +1048576 0 2 0 0 5242880 5111808 5242880 0.05 0 -0.025 0 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5373952 5242880 0.05 0 0.025 0 0 +1048576 0 2 0 0 5242880 5505024 5242880 0.05 0 0.05 0 0 +1048576 0 2 0 0 5242880 5636096 5242880 0.05 0 0.075 0 0 +1048576 0 2 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 2 0 0 5242880 5898240 5242880 0.05 0 0.125 0 0 +1048576 0 2 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0 +1048576 0 2 0 0 5242880 6160384 5242880 0.05 0 0.175 0 0 +1048576 0 2 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 2 0 0 5242880 6422528 5242880 0.05 0 0.225 0 0 +1048576 0 2 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 3932160 5242880 0.05625 0 -0.25 0 0 +1179648 0 2 0 0 5242880 4063232 5242880 0.05625 0 -0.225 0 0 +1179648 0 2 0 0 5242880 4194304 5242880 0.05625 0 -0.2 0 0 +1179648 0 2 0 0 5242880 4325376 5242880 0.05625 0 -0.175 0 0 +1179648 0 2 0 0 5242880 4456448 5242880 0.05625 0 -0.15 0 0 +1179648 0 2 0 0 5242880 4587520 5242880 0.05625 0 -0.125 0 0 +1179648 0 2 0 0 5242880 4718592 5242880 0.05625 0 -0.1 0 0 +1179648 0 2 0 0 5242880 4849664 5242880 0.05625 0 -0.075 0 0 +1179648 0 2 0 0 5242880 4980736 5242880 0.05625 0 -0.05 0 0 +1179648 0 2 0 0 5242880 5111808 5242880 0.05625 0 -0.025 0 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5373952 5242880 0.05625 0 0.025 0 0 +1179648 0 2 0 0 5242880 5505024 5242880 0.05625 0 0.05 0 0 +1179648 0 2 0 0 5242880 5636096 5242880 0.05625 0 0.075 0 0 +1179648 0 2 0 0 5242880 5767168 5242880 0.05625 0 0.1 0 0 +1179648 0 2 0 0 5242880 5898240 5242880 0.05625 0 0.125 0 0 +1179648 0 2 0 0 5242880 6029312 5242880 0.05625 0 0.15 0 0 +1179648 0 2 0 0 5242880 6160384 5242880 0.05625 0 0.175 0 0 +1179648 0 2 0 0 5242880 6291456 5242880 0.05625 0 0.2 0 0 +1179648 0 2 0 0 5242880 6422528 5242880 0.05625 0 0.225 0 0 +1179648 0 2 0 0 5242880 6553600 5242880 0.05625 0 0.25 0 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 2621440 5242880 0.0625 0 -0.5 0 0 +1310720 0 1 0 0 5242880 2883584 5242880 0.0625 0 -0.45 0 0 +1310720 0 1 0 0 5242880 3145728 5242880 0.0625 0 -0.4 0 0 +1310720 0 1 0 0 5242880 3407872 5242880 0.0625 0 -0.35 0 0 +1310720 0 1 0 0 5242880 3670016 5242880 0.0625 0 -0.3 0 0 +1310720 0 1 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0 +1310720 0 1 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 0 +1310720 0 1 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0 +1310720 0 1 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 0 +1310720 0 1 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 0 +1310720 0 1 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 0 +1310720 0 1 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0 +1310720 0 1 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 0 +1310720 0 1 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0 +1310720 0 1 0 0 5242880 6815744 5242880 0.0625 0 0.3 0 0 +1310720 0 1 0 0 5242880 7077888 5242880 0.0625 0 0.35 0 0 +1310720 0 1 0 0 5242880 7340032 5242880 0.0625 0 0.4 0 0 +1310720 0 1 0 0 5242880 7602176 5242880 0.0625 0 0.45 0 0 +1310720 0 1 0 0 5242880 7864320 5242880 0.0625 0 0.5 0 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0 +1310720 0 2 0 0 5242880 4063232 5242880 0.0625 0 -0.225 0 0 +1310720 0 2 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 0 +1310720 0 2 0 0 5242880 4325376 5242880 0.0625 0 -0.175 0 0 +1310720 0 2 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0 +1310720 0 2 0 0 5242880 4587520 5242880 0.0625 0 -0.125 0 0 +1310720 0 2 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 0 +1310720 0 2 0 0 5242880 4849664 5242880 0.0625 0 -0.075 0 0 +1310720 0 2 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 0 +1310720 0 2 0 0 5242880 5111808 5242880 0.0625 0 -0.025 0 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5373952 5242880 0.0625 0 0.025 0 0 +1310720 0 2 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 0 +1310720 0 2 0 0 5242880 5636096 5242880 0.0625 0 0.075 0 0 +1310720 0 2 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 0 +1310720 0 2 0 0 5242880 5898240 5242880 0.0625 0 0.125 0 0 +1310720 0 2 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0 +1310720 0 2 0 0 5242880 6160384 5242880 0.0625 0 0.175 0 0 +1310720 0 2 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 0 +1310720 0 2 0 0 5242880 6422528 5242880 0.0625 0 0.225 0 0 +1310720 0 2 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 3932160 5242880 0.06875 0 -0.25 0 0 +1441792 0 2 0 0 5242880 4063232 5242880 0.06875 0 -0.225 0 0 +1441792 0 2 0 0 5242880 4194304 5242880 0.06875 0 -0.2 0 0 +1441792 0 2 0 0 5242880 4325376 5242880 0.06875 0 -0.175 0 0 +1441792 0 2 0 0 5242880 4456448 5242880 0.06875 0 -0.15 0 0 +1441792 0 2 0 0 5242880 4587520 5242880 0.06875 0 -0.125 0 0 +1441792 0 2 0 0 5242880 4718592 5242880 0.06875 0 -0.1 0 0 +1441792 0 2 0 0 5242880 4849664 5242880 0.06875 0 -0.075 0 0 +1441792 0 2 0 0 5242880 4980736 5242880 0.06875 0 -0.05 0 0 +1441792 0 2 0 0 5242880 5111808 5242880 0.06875 0 -0.025 0 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5373952 5242880 0.06875 0 0.025 0 0 +1441792 0 2 0 0 5242880 5505024 5242880 0.06875 0 0.05 0 0 +1441792 0 2 0 0 5242880 5636096 5242880 0.06875 0 0.075 0 0 +1441792 0 2 0 0 5242880 5767168 5242880 0.06875 0 0.1 0 0 +1441792 0 2 0 0 5242880 5898240 5242880 0.06875 0 0.125 0 0 +1441792 0 2 0 0 5242880 6029312 5242880 0.06875 0 0.15 0 0 +1441792 0 2 0 0 5242880 6160384 5242880 0.06875 0 0.175 0 0 +1441792 0 2 0 0 5242880 6291456 5242880 0.06875 0 0.2 0 0 +1441792 0 2 0 0 5242880 6422528 5242880 0.06875 0 0.225 0 0 +1441792 0 2 0 0 5242880 6553600 5242880 0.06875 0 0.25 0 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 0 5242880 0.075 0 -1 0 0 +1572864 0 0 0 0 5242880 524288 5242880 0.075 0 -0.9 0 0 +1572864 0 0 0 0 5242880 1048576 5242880 0.075 0 -0.8 0 0 +1572864 0 0 0 0 5242880 1572864 5242880 0.075 0 -0.7 0 0 +1572864 0 0 0 0 5242880 2097152 5242880 0.075 0 -0.6 0 0 +1572864 0 0 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 0 +1572864 0 0 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0 +1572864 0 0 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 0 +1572864 0 0 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 0 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 0 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 0 0 0 5242880 6815744 5242880 0.075 0 0.3 0 0 +1572864 0 0 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0 +1572864 0 0 0 0 5242880 7864320 5242880 0.075 0 0.5 0 0 +1572864 0 0 0 0 5242880 8388608 5242880 0.075 0 0.6 0 0 +1572864 0 0 0 0 5242880 8912896 5242880 0.075 0 0.7 0 0 +1572864 0 0 0 0 5242880 9437184 5242880 0.075 0 0.8 0 0 +1572864 0 0 0 0 5242880 9961472 5242880 0.075 0 0.9 0 0 +1572864 0 0 0 0 5242880 10485760 5242880 0.075 0 1 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 0 +1572864 0 1 0 0 5242880 2883584 5242880 0.075 0 -0.45 0 0 +1572864 0 1 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0 +1572864 0 1 0 0 5242880 3407872 5242880 0.075 0 -0.35 0 0 +1572864 0 1 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 0 +1572864 0 1 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 0 +1572864 0 1 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 1 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0 +1572864 0 1 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 1 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5505024 5242880 0.075 0 0.05 0 0 +1572864 0 1 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 1 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0 +1572864 0 1 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 1 0 0 5242880 6553600 5242880 0.075 0 0.25 0 0 +1572864 0 1 0 0 5242880 6815744 5242880 0.075 0 0.3 0 0 +1572864 0 1 0 0 5242880 7077888 5242880 0.075 0 0.35 0 0 +1572864 0 1 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0 +1572864 0 1 0 0 5242880 7602176 5242880 0.075 0 0.45 0 0 +1572864 0 1 0 0 5242880 7864320 5242880 0.075 0 0.5 0 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 0 +1572864 0 2 0 0 5242880 4063232 5242880 0.075 0 -0.225 0 0 +1572864 0 2 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 2 0 0 5242880 4325376 5242880 0.075 0 -0.175 0 0 +1572864 0 2 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0 +1572864 0 2 0 0 5242880 4587520 5242880 0.075 0 -0.125 0 0 +1572864 0 2 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 2 0 0 5242880 4849664 5242880 0.075 0 -0.075 0 0 +1572864 0 2 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 0 +1572864 0 2 0 0 5242880 5111808 5242880 0.075 0 -0.025 0 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5373952 5242880 0.075 0 0.025 0 0 +1572864 0 2 0 0 5242880 5505024 5242880 0.075 0 0.05 0 0 +1572864 0 2 0 0 5242880 5636096 5242880 0.075 0 0.075 0 0 +1572864 0 2 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 2 0 0 5242880 5898240 5242880 0.075 0 0.125 0 0 +1572864 0 2 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0 +1572864 0 2 0 0 5242880 6160384 5242880 0.075 0 0.175 0 0 +1572864 0 2 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 2 0 0 5242880 6422528 5242880 0.075 0 0.225 0 0 +1572864 0 2 0 0 5242880 6553600 5242880 0.075 0 0.25 0 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 3932160 5242880 0.08125 0 -0.25 0 0 +1703936 0 2 0 0 5242880 4063232 5242880 0.08125 0 -0.225 0 0 +1703936 0 2 0 0 5242880 4194304 5242880 0.08125 0 -0.2 0 0 +1703936 0 2 0 0 5242880 4325376 5242880 0.08125 0 -0.175 0 0 +1703936 0 2 0 0 5242880 4456448 5242880 0.08125 0 -0.15 0 0 +1703936 0 2 0 0 5242880 4587520 5242880 0.08125 0 -0.125 0 0 +1703936 0 2 0 0 5242880 4718592 5242880 0.08125 0 -0.1 0 0 +1703936 0 2 0 0 5242880 4849664 5242880 0.08125 0 -0.075 0 0 +1703936 0 2 0 0 5242880 4980736 5242880 0.08125 0 -0.05 0 0 +1703936 0 2 0 0 5242880 5111808 5242880 0.08125 0 -0.025 0 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5373952 5242880 0.08125 0 0.025 0 0 +1703936 0 2 0 0 5242880 5505024 5242880 0.08125 0 0.05 0 0 +1703936 0 2 0 0 5242880 5636096 5242880 0.08125 0 0.075 0 0 +1703936 0 2 0 0 5242880 5767168 5242880 0.08125 0 0.1 0 0 +1703936 0 2 0 0 5242880 5898240 5242880 0.08125 0 0.125 0 0 +1703936 0 2 0 0 5242880 6029312 5242880 0.08125 0 0.15 0 0 +1703936 0 2 0 0 5242880 6160384 5242880 0.08125 0 0.175 0 0 +1703936 0 2 0 0 5242880 6291456 5242880 0.08125 0 0.2 0 0 +1703936 0 2 0 0 5242880 6422528 5242880 0.08125 0 0.225 0 0 +1703936 0 2 0 0 5242880 6553600 5242880 0.08125 0 0.25 0 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 2621440 5242880 0.0875 0 -0.5 0 0 +1835008 0 1 0 0 5242880 2883584 5242880 0.0875 0 -0.45 0 0 +1835008 0 1 0 0 5242880 3145728 5242880 0.0875 0 -0.4 0 0 +1835008 0 1 0 0 5242880 3407872 5242880 0.0875 0 -0.35 0 0 +1835008 0 1 0 0 5242880 3670016 5242880 0.0875 0 -0.3 0 0 +1835008 0 1 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 0 +1835008 0 1 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 0 +1835008 0 1 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0 +1835008 0 1 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 0 +1835008 0 1 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 0 +1835008 0 1 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 0 +1835008 0 1 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0 +1835008 0 1 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 0 +1835008 0 1 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 0 +1835008 0 1 0 0 5242880 6815744 5242880 0.0875 0 0.3 0 0 +1835008 0 1 0 0 5242880 7077888 5242880 0.0875 0 0.35 0 0 +1835008 0 1 0 0 5242880 7340032 5242880 0.0875 0 0.4 0 0 +1835008 0 1 0 0 5242880 7602176 5242880 0.0875 0 0.45 0 0 +1835008 0 1 0 0 5242880 7864320 5242880 0.0875 0 0.5 0 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 0 +1835008 0 2 0 0 5242880 4063232 5242880 0.0875 0 -0.225 0 0 +1835008 0 2 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 0 +1835008 0 2 0 0 5242880 4325376 5242880 0.0875 0 -0.175 0 0 +1835008 0 2 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0 +1835008 0 2 0 0 5242880 4587520 5242880 0.0875 0 -0.125 0 0 +1835008 0 2 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 0 +1835008 0 2 0 0 5242880 4849664 5242880 0.0875 0 -0.075 0 0 +1835008 0 2 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 0 +1835008 0 2 0 0 5242880 5111808 5242880 0.0875 0 -0.025 0 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5373952 5242880 0.0875 0 0.025 0 0 +1835008 0 2 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 0 +1835008 0 2 0 0 5242880 5636096 5242880 0.0875 0 0.075 0 0 +1835008 0 2 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 0 +1835008 0 2 0 0 5242880 5898240 5242880 0.0875 0 0.125 0 0 +1835008 0 2 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0 +1835008 0 2 0 0 5242880 6160384 5242880 0.0875 0 0.175 0 0 +1835008 0 2 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 0 +1835008 0 2 0 0 5242880 6422528 5242880 0.0875 0 0.225 0 0 +1835008 0 2 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 3932160 5242880 0.09375 0 -0.25 0 0 +1966080 0 2 0 0 5242880 4063232 5242880 0.09375 0 -0.225 0 0 +1966080 0 2 0 0 5242880 4194304 5242880 0.09375 0 -0.2 0 0 +1966080 0 2 0 0 5242880 4325376 5242880 0.09375 0 -0.175 0 0 +1966080 0 2 0 0 5242880 4456448 5242880 0.09375 0 -0.15 0 0 +1966080 0 2 0 0 5242880 4587520 5242880 0.09375 0 -0.125 0 0 +1966080 0 2 0 0 5242880 4718592 5242880 0.09375 0 -0.1 0 0 +1966080 0 2 0 0 5242880 4849664 5242880 0.09375 0 -0.075 0 0 +1966080 0 2 0 0 5242880 4980736 5242880 0.09375 0 -0.05 0 0 +1966080 0 2 0 0 5242880 5111808 5242880 0.09375 0 -0.025 0 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5373952 5242880 0.09375 0 0.025 0 0 +1966080 0 2 0 0 5242880 5505024 5242880 0.09375 0 0.05 0 0 +1966080 0 2 0 0 5242880 5636096 5242880 0.09375 0 0.075 0 0 +1966080 0 2 0 0 5242880 5767168 5242880 0.09375 0 0.1 0 0 +1966080 0 2 0 0 5242880 5898240 5242880 0.09375 0 0.125 0 0 +1966080 0 2 0 0 5242880 6029312 5242880 0.09375 0 0.15 0 0 +1966080 0 2 0 0 5242880 6160384 5242880 0.09375 0 0.175 0 0 +1966080 0 2 0 0 5242880 6291456 5242880 0.09375 0 0.2 0 0 +1966080 0 2 0 0 5242880 6422528 5242880 0.09375 0 0.225 0 0 +1966080 0 2 0 0 5242880 6553600 5242880 0.09375 0 0.25 0 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 0 5242880 0.1 0 -1 0 0 +2097152 0 0 0 0 5242880 524288 5242880 0.1 0 -0.9 0 0 +2097152 0 0 0 0 5242880 1048576 5242880 0.1 0 -0.8 0 0 +2097152 0 0 0 0 5242880 1572864 5242880 0.1 0 -0.7 0 0 +2097152 0 0 0 0 5242880 2097152 5242880 0.1 0 -0.6 0 0 +2097152 0 0 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 0 +2097152 0 0 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0 +2097152 0 0 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 0 +2097152 0 0 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 0 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 0 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 0 0 0 5242880 6815744 5242880 0.1 0 0.3 0 0 +2097152 0 0 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0 +2097152 0 0 0 0 5242880 7864320 5242880 0.1 0 0.5 0 0 +2097152 0 0 0 0 5242880 8388608 5242880 0.1 0 0.6 0 0 +2097152 0 0 0 0 5242880 8912896 5242880 0.1 0 0.7 0 0 +2097152 0 0 0 0 5242880 9437184 5242880 0.1 0 0.8 0 0 +2097152 0 0 0 0 5242880 9961472 5242880 0.1 0 0.9 0 0 +2097152 0 0 0 0 5242880 10485760 5242880 0.1 0 1 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 0 +2097152 0 1 0 0 5242880 2883584 5242880 0.1 0 -0.45 0 0 +2097152 0 1 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0 +2097152 0 1 0 0 5242880 3407872 5242880 0.1 0 -0.35 0 0 +2097152 0 1 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 0 +2097152 0 1 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 0 +2097152 0 1 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 1 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0 +2097152 0 1 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 1 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5505024 5242880 0.1 0 0.05 0 0 +2097152 0 1 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 1 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0 +2097152 0 1 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 1 0 0 5242880 6553600 5242880 0.1 0 0.25 0 0 +2097152 0 1 0 0 5242880 6815744 5242880 0.1 0 0.3 0 0 +2097152 0 1 0 0 5242880 7077888 5242880 0.1 0 0.35 0 0 +2097152 0 1 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0 +2097152 0 1 0 0 5242880 7602176 5242880 0.1 0 0.45 0 0 +2097152 0 1 0 0 5242880 7864320 5242880 0.1 0 0.5 0 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 0 +2097152 0 2 0 0 5242880 4063232 5242880 0.1 0 -0.225 0 0 +2097152 0 2 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 2 0 0 5242880 4325376 5242880 0.1 0 -0.175 0 0 +2097152 0 2 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0 +2097152 0 2 0 0 5242880 4587520 5242880 0.1 0 -0.125 0 0 +2097152 0 2 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 2 0 0 5242880 4849664 5242880 0.1 0 -0.075 0 0 +2097152 0 2 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 0 +2097152 0 2 0 0 5242880 5111808 5242880 0.1 0 -0.025 0 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5373952 5242880 0.1 0 0.025 0 0 +2097152 0 2 0 0 5242880 5505024 5242880 0.1 0 0.05 0 0 +2097152 0 2 0 0 5242880 5636096 5242880 0.1 0 0.075 0 0 +2097152 0 2 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 2 0 0 5242880 5898240 5242880 0.1 0 0.125 0 0 +2097152 0 2 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0 +2097152 0 2 0 0 5242880 6160384 5242880 0.1 0 0.175 0 0 +2097152 0 2 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 2 0 0 5242880 6422528 5242880 0.1 0 0.225 0 0 +2097152 0 2 0 0 5242880 6553600 5242880 0.1 0 0.25 0 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phix.z.asc b/Carpet/CarpetInterp/test/waveinterp/phix.z.asc new file mode 100644 index 000000000..530732f83 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phix.z.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phix z (phix) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 0 0 0 0 -1 0 +0 0 0 0 0 5242880 5242880 524288 0 0 0 -0.9 0 +0 0 0 0 0 5242880 5242880 1048576 0 0 0 -0.8 0 +0 0 0 0 0 5242880 5242880 1572864 0 0 0 -0.7 0 +0 0 0 0 0 5242880 5242880 2097152 0 0 0 -0.6 0 +0 0 0 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 0 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 0 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 0 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 0 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 0 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 0 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 0 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 0 0 0 5242880 5242880 7864320 0 0 0 0.5 0 +0 0 0 0 0 5242880 5242880 8388608 0 0 0 0.6 0 +0 0 0 0 0 5242880 5242880 8912896 0 0 0 0.7 0 +0 0 0 0 0 5242880 5242880 9437184 0 0 0 0.8 0 +0 0 0 0 0 5242880 5242880 9961472 0 0 0 0.9 0 +0 0 0 0 0 5242880 5242880 10485760 0 0 0 1 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 1 0 0 5242880 5242880 2883584 0 0 0 -0.45 0 +0 0 1 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 1 0 0 5242880 5242880 3407872 0 0 0 -0.35 0 +0 0 1 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 1 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 1 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 1 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 1 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 1 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 1 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 1 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 1 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 1 0 0 5242880 5242880 6553600 0 0 0 0.25 0 +0 0 1 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 1 0 0 5242880 5242880 7077888 0 0 0 0.35 0 +0 0 1 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 1 0 0 5242880 5242880 7602176 0 0 0 0.45 0 +0 0 1 0 0 5242880 5242880 7864320 0 0 0 0.5 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 2 0 0 5242880 5242880 4063232 0 0 0 -0.225 0 +0 0 2 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 2 0 0 5242880 5242880 4325376 0 0 0 -0.175 0 +0 0 2 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 2 0 0 5242880 5242880 4587520 0 0 0 -0.125 0 +0 0 2 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 2 0 0 5242880 5242880 4849664 0 0 0 -0.075 0 +0 0 2 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 2 0 0 5242880 5242880 5111808 0 0 0 -0.025 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5242880 5373952 0 0 0 0.025 0 +0 0 2 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 2 0 0 5242880 5242880 5636096 0 0 0 0.075 0 +0 0 2 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 2 0 0 5242880 5242880 5898240 0 0 0 0.125 0 +0 0 2 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 2 0 0 5242880 5242880 6160384 0 0 0 0.175 0 +0 0 2 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 2 0 0 5242880 5242880 6422528 0 0 0 0.225 0 +0 0 2 0 0 5242880 5242880 6553600 0 0 0 0.25 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 3932160 0.00625 0 0 -0.25 0 +131072 0 2 0 0 5242880 5242880 4063232 0.00625 0 0 -0.225 0 +131072 0 2 0 0 5242880 5242880 4194304 0.00625 0 0 -0.2 0 +131072 0 2 0 0 5242880 5242880 4325376 0.00625 0 0 -0.175 0 +131072 0 2 0 0 5242880 5242880 4456448 0.00625 0 0 -0.15 0 +131072 0 2 0 0 5242880 5242880 4587520 0.00625 0 0 -0.125 0 +131072 0 2 0 0 5242880 5242880 4718592 0.00625 0 0 -0.1 0 +131072 0 2 0 0 5242880 5242880 4849664 0.00625 0 0 -0.075 0 +131072 0 2 0 0 5242880 5242880 4980736 0.00625 0 0 -0.05 0 +131072 0 2 0 0 5242880 5242880 5111808 0.00625 0 0 -0.025 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5242880 5373952 0.00625 0 0 0.025 0 +131072 0 2 0 0 5242880 5242880 5505024 0.00625 0 0 0.05 0 +131072 0 2 0 0 5242880 5242880 5636096 0.00625 0 0 0.075 0 +131072 0 2 0 0 5242880 5242880 5767168 0.00625 0 0 0.1 0 +131072 0 2 0 0 5242880 5242880 5898240 0.00625 0 0 0.125 0 +131072 0 2 0 0 5242880 5242880 6029312 0.00625 0 0 0.15 0 +131072 0 2 0 0 5242880 5242880 6160384 0.00625 0 0 0.175 0 +131072 0 2 0 0 5242880 5242880 6291456 0.00625 0 0 0.2 0 +131072 0 2 0 0 5242880 5242880 6422528 0.00625 0 0 0.225 0 +131072 0 2 0 0 5242880 5242880 6553600 0.00625 0 0 0.25 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 2621440 0.0125 0 0 -0.5 0 +262144 0 1 0 0 5242880 5242880 2883584 0.0125 0 0 -0.45 0 +262144 0 1 0 0 5242880 5242880 3145728 0.0125 0 0 -0.4 0 +262144 0 1 0 0 5242880 5242880 3407872 0.0125 0 0 -0.35 0 +262144 0 1 0 0 5242880 5242880 3670016 0.0125 0 0 -0.3 0 +262144 0 1 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 0 +262144 0 1 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 1 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 1 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 0 +262144 0 1 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 1 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 0 +262144 0 1 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 1 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 1 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 0 +262144 0 1 0 0 5242880 5242880 6815744 0.0125 0 0 0.3 0 +262144 0 1 0 0 5242880 5242880 7077888 0.0125 0 0 0.35 0 +262144 0 1 0 0 5242880 5242880 7340032 0.0125 0 0 0.4 0 +262144 0 1 0 0 5242880 5242880 7602176 0.0125 0 0 0.45 0 +262144 0 1 0 0 5242880 5242880 7864320 0.0125 0 0 0.5 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 0 +262144 0 2 0 0 5242880 5242880 4063232 0.0125 0 0 -0.225 0 +262144 0 2 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 2 0 0 5242880 5242880 4325376 0.0125 0 0 -0.175 0 +262144 0 2 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 2 0 0 5242880 5242880 4587520 0.0125 0 0 -0.125 0 +262144 0 2 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 0 +262144 0 2 0 0 5242880 5242880 4849664 0.0125 0 0 -0.075 0 +262144 0 2 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 2 0 0 5242880 5242880 5111808 0.0125 0 0 -0.025 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5242880 5373952 0.0125 0 0 0.025 0 +262144 0 2 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 2 0 0 5242880 5242880 5636096 0.0125 0 0 0.075 0 +262144 0 2 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 0 +262144 0 2 0 0 5242880 5242880 5898240 0.0125 0 0 0.125 0 +262144 0 2 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 2 0 0 5242880 5242880 6160384 0.0125 0 0 0.175 0 +262144 0 2 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 2 0 0 5242880 5242880 6422528 0.0125 0 0 0.225 0 +262144 0 2 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 3932160 0.01875 0 0 -0.25 0 +393216 0 2 0 0 5242880 5242880 4063232 0.01875 0 0 -0.225 0 +393216 0 2 0 0 5242880 5242880 4194304 0.01875 0 0 -0.2 0 +393216 0 2 0 0 5242880 5242880 4325376 0.01875 0 0 -0.175 0 +393216 0 2 0 0 5242880 5242880 4456448 0.01875 0 0 -0.15 0 +393216 0 2 0 0 5242880 5242880 4587520 0.01875 0 0 -0.125 0 +393216 0 2 0 0 5242880 5242880 4718592 0.01875 0 0 -0.1 0 +393216 0 2 0 0 5242880 5242880 4849664 0.01875 0 0 -0.075 0 +393216 0 2 0 0 5242880 5242880 4980736 0.01875 0 0 -0.05 0 +393216 0 2 0 0 5242880 5242880 5111808 0.01875 0 0 -0.025 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5242880 5373952 0.01875 0 0 0.025 0 +393216 0 2 0 0 5242880 5242880 5505024 0.01875 0 0 0.05 0 +393216 0 2 0 0 5242880 5242880 5636096 0.01875 0 0 0.075 0 +393216 0 2 0 0 5242880 5242880 5767168 0.01875 0 0 0.1 0 +393216 0 2 0 0 5242880 5242880 5898240 0.01875 0 0 0.125 0 +393216 0 2 0 0 5242880 5242880 6029312 0.01875 0 0 0.15 0 +393216 0 2 0 0 5242880 5242880 6160384 0.01875 0 0 0.175 0 +393216 0 2 0 0 5242880 5242880 6291456 0.01875 0 0 0.2 0 +393216 0 2 0 0 5242880 5242880 6422528 0.01875 0 0 0.225 0 +393216 0 2 0 0 5242880 5242880 6553600 0.01875 0 0 0.25 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 0 0.025 0 0 -1 0 +524288 0 0 0 0 5242880 5242880 524288 0.025 0 0 -0.9 0 +524288 0 0 0 0 5242880 5242880 1048576 0.025 0 0 -0.8 0 +524288 0 0 0 0 5242880 5242880 1572864 0.025 0 0 -0.7 0 +524288 0 0 0 0 5242880 5242880 2097152 0.025 0 0 -0.6 0 +524288 0 0 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 0 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 0 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 0 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 0 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 0 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 0 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 0 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 0 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 +524288 0 0 0 0 5242880 5242880 8388608 0.025 0 0 0.6 0 +524288 0 0 0 0 5242880 5242880 8912896 0.025 0 0 0.7 0 +524288 0 0 0 0 5242880 5242880 9437184 0.025 0 0 0.8 0 +524288 0 0 0 0 5242880 5242880 9961472 0.025 0 0 0.9 0 +524288 0 0 0 0 5242880 5242880 10485760 0.025 0 0 1 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 1 0 0 5242880 5242880 2883584 0.025 0 0 -0.45 0 +524288 0 1 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 1 0 0 5242880 5242880 3407872 0.025 0 0 -0.35 0 +524288 0 1 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 1 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0 +524288 0 1 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 1 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 0 +524288 0 1 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 1 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5242880 5505024 0.025 0 0 0.05 0 +524288 0 1 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 1 0 0 5242880 5242880 6029312 0.025 0 0 0.15 0 +524288 0 1 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 1 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0 +524288 0 1 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 1 0 0 5242880 5242880 7077888 0.025 0 0 0.35 0 +524288 0 1 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 1 0 0 5242880 5242880 7602176 0.025 0 0 0.45 0 +524288 0 1 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0 +524288 0 2 0 0 5242880 5242880 4063232 0.025 0 0 -0.225 0 +524288 0 2 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 2 0 0 5242880 5242880 4325376 0.025 0 0 -0.175 0 +524288 0 2 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 0 +524288 0 2 0 0 5242880 5242880 4587520 0.025 0 0 -0.125 0 +524288 0 2 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 2 0 0 5242880 5242880 4849664 0.025 0 0 -0.075 0 +524288 0 2 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 0 +524288 0 2 0 0 5242880 5242880 5111808 0.025 0 0 -0.025 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5242880 5373952 0.025 0 0 0.025 0 +524288 0 2 0 0 5242880 5242880 5505024 0.025 0 0 0.05 0 +524288 0 2 0 0 5242880 5242880 5636096 0.025 0 0 0.075 0 +524288 0 2 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 2 0 0 5242880 5242880 5898240 0.025 0 0 0.125 0 +524288 0 2 0 0 5242880 5242880 6029312 0.025 0 0 0.15 0 +524288 0 2 0 0 5242880 5242880 6160384 0.025 0 0 0.175 0 +524288 0 2 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 2 0 0 5242880 5242880 6422528 0.025 0 0 0.225 0 +524288 0 2 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 3932160 0.03125 0 0 -0.25 0 +655360 0 2 0 0 5242880 5242880 4063232 0.03125 0 0 -0.225 0 +655360 0 2 0 0 5242880 5242880 4194304 0.03125 0 0 -0.2 0 +655360 0 2 0 0 5242880 5242880 4325376 0.03125 0 0 -0.175 0 +655360 0 2 0 0 5242880 5242880 4456448 0.03125 0 0 -0.15 0 +655360 0 2 0 0 5242880 5242880 4587520 0.03125 0 0 -0.125 0 +655360 0 2 0 0 5242880 5242880 4718592 0.03125 0 0 -0.1 0 +655360 0 2 0 0 5242880 5242880 4849664 0.03125 0 0 -0.075 0 +655360 0 2 0 0 5242880 5242880 4980736 0.03125 0 0 -0.05 0 +655360 0 2 0 0 5242880 5242880 5111808 0.03125 0 0 -0.025 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5242880 5373952 0.03125 0 0 0.025 0 +655360 0 2 0 0 5242880 5242880 5505024 0.03125 0 0 0.05 0 +655360 0 2 0 0 5242880 5242880 5636096 0.03125 0 0 0.075 0 +655360 0 2 0 0 5242880 5242880 5767168 0.03125 0 0 0.1 0 +655360 0 2 0 0 5242880 5242880 5898240 0.03125 0 0 0.125 0 +655360 0 2 0 0 5242880 5242880 6029312 0.03125 0 0 0.15 0 +655360 0 2 0 0 5242880 5242880 6160384 0.03125 0 0 0.175 0 +655360 0 2 0 0 5242880 5242880 6291456 0.03125 0 0 0.2 0 +655360 0 2 0 0 5242880 5242880 6422528 0.03125 0 0 0.225 0 +655360 0 2 0 0 5242880 5242880 6553600 0.03125 0 0 0.25 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 2621440 0.0375 0 0 -0.5 0 +786432 0 1 0 0 5242880 5242880 2883584 0.0375 0 0 -0.45 0 +786432 0 1 0 0 5242880 5242880 3145728 0.0375 0 0 -0.4 0 +786432 0 1 0 0 5242880 5242880 3407872 0.0375 0 0 -0.35 0 +786432 0 1 0 0 5242880 5242880 3670016 0.0375 0 0 -0.3 0 +786432 0 1 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0 +786432 0 1 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0 +786432 0 1 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0 +786432 0 1 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 0 +786432 0 1 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 0 +786432 0 1 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 0 +786432 0 1 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0 +786432 0 1 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0 +786432 0 1 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0 +786432 0 1 0 0 5242880 5242880 6815744 0.0375 0 0 0.3 0 +786432 0 1 0 0 5242880 5242880 7077888 0.0375 0 0 0.35 0 +786432 0 1 0 0 5242880 5242880 7340032 0.0375 0 0 0.4 0 +786432 0 1 0 0 5242880 5242880 7602176 0.0375 0 0 0.45 0 +786432 0 1 0 0 5242880 5242880 7864320 0.0375 0 0 0.5 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0 +786432 0 2 0 0 5242880 5242880 4063232 0.0375 0 0 -0.225 0 +786432 0 2 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0 +786432 0 2 0 0 5242880 5242880 4325376 0.0375 0 0 -0.175 0 +786432 0 2 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0 +786432 0 2 0 0 5242880 5242880 4587520 0.0375 0 0 -0.125 0 +786432 0 2 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 0 +786432 0 2 0 0 5242880 5242880 4849664 0.0375 0 0 -0.075 0 +786432 0 2 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 0 +786432 0 2 0 0 5242880 5242880 5111808 0.0375 0 0 -0.025 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5242880 5373952 0.0375 0 0 0.025 0 +786432 0 2 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 0 +786432 0 2 0 0 5242880 5242880 5636096 0.0375 0 0 0.075 0 +786432 0 2 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 0 +786432 0 2 0 0 5242880 5242880 5898240 0.0375 0 0 0.125 0 +786432 0 2 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0 +786432 0 2 0 0 5242880 5242880 6160384 0.0375 0 0 0.175 0 +786432 0 2 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0 +786432 0 2 0 0 5242880 5242880 6422528 0.0375 0 0 0.225 0 +786432 0 2 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 3932160 0.04375 0 0 -0.25 0 +917504 0 2 0 0 5242880 5242880 4063232 0.04375 0 0 -0.225 0 +917504 0 2 0 0 5242880 5242880 4194304 0.04375 0 0 -0.2 0 +917504 0 2 0 0 5242880 5242880 4325376 0.04375 0 0 -0.175 0 +917504 0 2 0 0 5242880 5242880 4456448 0.04375 0 0 -0.15 0 +917504 0 2 0 0 5242880 5242880 4587520 0.04375 0 0 -0.125 0 +917504 0 2 0 0 5242880 5242880 4718592 0.04375 0 0 -0.1 0 +917504 0 2 0 0 5242880 5242880 4849664 0.04375 0 0 -0.075 0 +917504 0 2 0 0 5242880 5242880 4980736 0.04375 0 0 -0.05 0 +917504 0 2 0 0 5242880 5242880 5111808 0.04375 0 0 -0.025 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5242880 5373952 0.04375 0 0 0.025 0 +917504 0 2 0 0 5242880 5242880 5505024 0.04375 0 0 0.05 0 +917504 0 2 0 0 5242880 5242880 5636096 0.04375 0 0 0.075 0 +917504 0 2 0 0 5242880 5242880 5767168 0.04375 0 0 0.1 0 +917504 0 2 0 0 5242880 5242880 5898240 0.04375 0 0 0.125 0 +917504 0 2 0 0 5242880 5242880 6029312 0.04375 0 0 0.15 0 +917504 0 2 0 0 5242880 5242880 6160384 0.04375 0 0 0.175 0 +917504 0 2 0 0 5242880 5242880 6291456 0.04375 0 0 0.2 0 +917504 0 2 0 0 5242880 5242880 6422528 0.04375 0 0 0.225 0 +917504 0 2 0 0 5242880 5242880 6553600 0.04375 0 0 0.25 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 0 0.05 0 0 -1 0 +1048576 0 0 0 0 5242880 5242880 524288 0.05 0 0 -0.9 0 +1048576 0 0 0 0 5242880 5242880 1048576 0.05 0 0 -0.8 0 +1048576 0 0 0 0 5242880 5242880 1572864 0.05 0 0 -0.7 0 +1048576 0 0 0 0 5242880 5242880 2097152 0.05 0 0 -0.6 0 +1048576 0 0 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 0 +1048576 0 0 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0 +1048576 0 0 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 0 +1048576 0 0 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 0 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 0 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 0 0 0 5242880 5242880 6815744 0.05 0 0 0.3 0 +1048576 0 0 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0 +1048576 0 0 0 0 5242880 5242880 7864320 0.05 0 0 0.5 0 +1048576 0 0 0 0 5242880 5242880 8388608 0.05 0 0 0.6 0 +1048576 0 0 0 0 5242880 5242880 8912896 0.05 0 0 0.7 0 +1048576 0 0 0 0 5242880 5242880 9437184 0.05 0 0 0.8 0 +1048576 0 0 0 0 5242880 5242880 9961472 0.05 0 0 0.9 0 +1048576 0 0 0 0 5242880 5242880 10485760 0.05 0 0 1 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 0 +1048576 0 1 0 0 5242880 5242880 2883584 0.05 0 0 -0.45 0 +1048576 0 1 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0 +1048576 0 1 0 0 5242880 5242880 3407872 0.05 0 0 -0.35 0 +1048576 0 1 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 0 +1048576 0 1 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0 +1048576 0 1 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 1 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0 +1048576 0 1 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 1 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5242880 5505024 0.05 0 0 0.05 0 +1048576 0 1 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 1 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0 +1048576 0 1 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 1 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0 +1048576 0 1 0 0 5242880 5242880 6815744 0.05 0 0 0.3 0 +1048576 0 1 0 0 5242880 5242880 7077888 0.05 0 0 0.35 0 +1048576 0 1 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0 +1048576 0 1 0 0 5242880 5242880 7602176 0.05 0 0 0.45 0 +1048576 0 1 0 0 5242880 5242880 7864320 0.05 0 0 0.5 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0 +1048576 0 2 0 0 5242880 5242880 4063232 0.05 0 0 -0.225 0 +1048576 0 2 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 2 0 0 5242880 5242880 4325376 0.05 0 0 -0.175 0 +1048576 0 2 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0 +1048576 0 2 0 0 5242880 5242880 4587520 0.05 0 0 -0.125 0 +1048576 0 2 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 2 0 0 5242880 5242880 4849664 0.05 0 0 -0.075 0 +1048576 0 2 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 0 +1048576 0 2 0 0 5242880 5242880 5111808 0.05 0 0 -0.025 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5242880 5373952 0.05 0 0 0.025 0 +1048576 0 2 0 0 5242880 5242880 5505024 0.05 0 0 0.05 0 +1048576 0 2 0 0 5242880 5242880 5636096 0.05 0 0 0.075 0 +1048576 0 2 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 2 0 0 5242880 5242880 5898240 0.05 0 0 0.125 0 +1048576 0 2 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0 +1048576 0 2 0 0 5242880 5242880 6160384 0.05 0 0 0.175 0 +1048576 0 2 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 2 0 0 5242880 5242880 6422528 0.05 0 0 0.225 0 +1048576 0 2 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 3932160 0.05625 0 0 -0.25 0 +1179648 0 2 0 0 5242880 5242880 4063232 0.05625 0 0 -0.225 0 +1179648 0 2 0 0 5242880 5242880 4194304 0.05625 0 0 -0.2 0 +1179648 0 2 0 0 5242880 5242880 4325376 0.05625 0 0 -0.175 0 +1179648 0 2 0 0 5242880 5242880 4456448 0.05625 0 0 -0.15 0 +1179648 0 2 0 0 5242880 5242880 4587520 0.05625 0 0 -0.125 0 +1179648 0 2 0 0 5242880 5242880 4718592 0.05625 0 0 -0.1 0 +1179648 0 2 0 0 5242880 5242880 4849664 0.05625 0 0 -0.075 0 +1179648 0 2 0 0 5242880 5242880 4980736 0.05625 0 0 -0.05 0 +1179648 0 2 0 0 5242880 5242880 5111808 0.05625 0 0 -0.025 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5242880 5373952 0.05625 0 0 0.025 0 +1179648 0 2 0 0 5242880 5242880 5505024 0.05625 0 0 0.05 0 +1179648 0 2 0 0 5242880 5242880 5636096 0.05625 0 0 0.075 0 +1179648 0 2 0 0 5242880 5242880 5767168 0.05625 0 0 0.1 0 +1179648 0 2 0 0 5242880 5242880 5898240 0.05625 0 0 0.125 0 +1179648 0 2 0 0 5242880 5242880 6029312 0.05625 0 0 0.15 0 +1179648 0 2 0 0 5242880 5242880 6160384 0.05625 0 0 0.175 0 +1179648 0 2 0 0 5242880 5242880 6291456 0.05625 0 0 0.2 0 +1179648 0 2 0 0 5242880 5242880 6422528 0.05625 0 0 0.225 0 +1179648 0 2 0 0 5242880 5242880 6553600 0.05625 0 0 0.25 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 2621440 0.0625 0 0 -0.5 0 +1310720 0 1 0 0 5242880 5242880 2883584 0.0625 0 0 -0.45 0 +1310720 0 1 0 0 5242880 5242880 3145728 0.0625 0 0 -0.4 0 +1310720 0 1 0 0 5242880 5242880 3407872 0.0625 0 0 -0.35 0 +1310720 0 1 0 0 5242880 5242880 3670016 0.0625 0 0 -0.3 0 +1310720 0 1 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0 +1310720 0 1 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 0 +1310720 0 1 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0 +1310720 0 1 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 0 +1310720 0 1 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 0 +1310720 0 1 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 0 +1310720 0 1 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0 +1310720 0 1 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 0 +1310720 0 1 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0 +1310720 0 1 0 0 5242880 5242880 6815744 0.0625 0 0 0.3 0 +1310720 0 1 0 0 5242880 5242880 7077888 0.0625 0 0 0.35 0 +1310720 0 1 0 0 5242880 5242880 7340032 0.0625 0 0 0.4 0 +1310720 0 1 0 0 5242880 5242880 7602176 0.0625 0 0 0.45 0 +1310720 0 1 0 0 5242880 5242880 7864320 0.0625 0 0 0.5 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0 +1310720 0 2 0 0 5242880 5242880 4063232 0.0625 0 0 -0.225 0 +1310720 0 2 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 0 +1310720 0 2 0 0 5242880 5242880 4325376 0.0625 0 0 -0.175 0 +1310720 0 2 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0 +1310720 0 2 0 0 5242880 5242880 4587520 0.0625 0 0 -0.125 0 +1310720 0 2 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 0 +1310720 0 2 0 0 5242880 5242880 4849664 0.0625 0 0 -0.075 0 +1310720 0 2 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 0 +1310720 0 2 0 0 5242880 5242880 5111808 0.0625 0 0 -0.025 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5242880 5373952 0.0625 0 0 0.025 0 +1310720 0 2 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 0 +1310720 0 2 0 0 5242880 5242880 5636096 0.0625 0 0 0.075 0 +1310720 0 2 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 0 +1310720 0 2 0 0 5242880 5242880 5898240 0.0625 0 0 0.125 0 +1310720 0 2 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0 +1310720 0 2 0 0 5242880 5242880 6160384 0.0625 0 0 0.175 0 +1310720 0 2 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 0 +1310720 0 2 0 0 5242880 5242880 6422528 0.0625 0 0 0.225 0 +1310720 0 2 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 3932160 0.06875 0 0 -0.25 0 +1441792 0 2 0 0 5242880 5242880 4063232 0.06875 0 0 -0.225 0 +1441792 0 2 0 0 5242880 5242880 4194304 0.06875 0 0 -0.2 0 +1441792 0 2 0 0 5242880 5242880 4325376 0.06875 0 0 -0.175 0 +1441792 0 2 0 0 5242880 5242880 4456448 0.06875 0 0 -0.15 0 +1441792 0 2 0 0 5242880 5242880 4587520 0.06875 0 0 -0.125 0 +1441792 0 2 0 0 5242880 5242880 4718592 0.06875 0 0 -0.1 0 +1441792 0 2 0 0 5242880 5242880 4849664 0.06875 0 0 -0.075 0 +1441792 0 2 0 0 5242880 5242880 4980736 0.06875 0 0 -0.05 0 +1441792 0 2 0 0 5242880 5242880 5111808 0.06875 0 0 -0.025 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5242880 5373952 0.06875 0 0 0.025 0 +1441792 0 2 0 0 5242880 5242880 5505024 0.06875 0 0 0.05 0 +1441792 0 2 0 0 5242880 5242880 5636096 0.06875 0 0 0.075 0 +1441792 0 2 0 0 5242880 5242880 5767168 0.06875 0 0 0.1 0 +1441792 0 2 0 0 5242880 5242880 5898240 0.06875 0 0 0.125 0 +1441792 0 2 0 0 5242880 5242880 6029312 0.06875 0 0 0.15 0 +1441792 0 2 0 0 5242880 5242880 6160384 0.06875 0 0 0.175 0 +1441792 0 2 0 0 5242880 5242880 6291456 0.06875 0 0 0.2 0 +1441792 0 2 0 0 5242880 5242880 6422528 0.06875 0 0 0.225 0 +1441792 0 2 0 0 5242880 5242880 6553600 0.06875 0 0 0.25 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 0 0.075 0 0 -1 0 +1572864 0 0 0 0 5242880 5242880 524288 0.075 0 0 -0.9 0 +1572864 0 0 0 0 5242880 5242880 1048576 0.075 0 0 -0.8 0 +1572864 0 0 0 0 5242880 5242880 1572864 0.075 0 0 -0.7 0 +1572864 0 0 0 0 5242880 5242880 2097152 0.075 0 0 -0.6 0 +1572864 0 0 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 0 +1572864 0 0 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0 +1572864 0 0 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 0 +1572864 0 0 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 0 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 0 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 0 0 0 5242880 5242880 6815744 0.075 0 0 0.3 0 +1572864 0 0 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0 +1572864 0 0 0 0 5242880 5242880 7864320 0.075 0 0 0.5 0 +1572864 0 0 0 0 5242880 5242880 8388608 0.075 0 0 0.6 0 +1572864 0 0 0 0 5242880 5242880 8912896 0.075 0 0 0.7 0 +1572864 0 0 0 0 5242880 5242880 9437184 0.075 0 0 0.8 0 +1572864 0 0 0 0 5242880 5242880 9961472 0.075 0 0 0.9 0 +1572864 0 0 0 0 5242880 5242880 10485760 0.075 0 0 1 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 0 +1572864 0 1 0 0 5242880 5242880 2883584 0.075 0 0 -0.45 0 +1572864 0 1 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0 +1572864 0 1 0 0 5242880 5242880 3407872 0.075 0 0 -0.35 0 +1572864 0 1 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 0 +1572864 0 1 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 0 +1572864 0 1 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 1 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0 +1572864 0 1 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 1 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5242880 5505024 0.075 0 0 0.05 0 +1572864 0 1 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 1 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0 +1572864 0 1 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 1 0 0 5242880 5242880 6553600 0.075 0 0 0.25 0 +1572864 0 1 0 0 5242880 5242880 6815744 0.075 0 0 0.3 0 +1572864 0 1 0 0 5242880 5242880 7077888 0.075 0 0 0.35 0 +1572864 0 1 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0 +1572864 0 1 0 0 5242880 5242880 7602176 0.075 0 0 0.45 0 +1572864 0 1 0 0 5242880 5242880 7864320 0.075 0 0 0.5 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 0 +1572864 0 2 0 0 5242880 5242880 4063232 0.075 0 0 -0.225 0 +1572864 0 2 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 2 0 0 5242880 5242880 4325376 0.075 0 0 -0.175 0 +1572864 0 2 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0 +1572864 0 2 0 0 5242880 5242880 4587520 0.075 0 0 -0.125 0 +1572864 0 2 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 2 0 0 5242880 5242880 4849664 0.075 0 0 -0.075 0 +1572864 0 2 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 0 +1572864 0 2 0 0 5242880 5242880 5111808 0.075 0 0 -0.025 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5242880 5373952 0.075 0 0 0.025 0 +1572864 0 2 0 0 5242880 5242880 5505024 0.075 0 0 0.05 0 +1572864 0 2 0 0 5242880 5242880 5636096 0.075 0 0 0.075 0 +1572864 0 2 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 2 0 0 5242880 5242880 5898240 0.075 0 0 0.125 0 +1572864 0 2 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0 +1572864 0 2 0 0 5242880 5242880 6160384 0.075 0 0 0.175 0 +1572864 0 2 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 2 0 0 5242880 5242880 6422528 0.075 0 0 0.225 0 +1572864 0 2 0 0 5242880 5242880 6553600 0.075 0 0 0.25 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 3932160 0.08125 0 0 -0.25 0 +1703936 0 2 0 0 5242880 5242880 4063232 0.08125 0 0 -0.225 0 +1703936 0 2 0 0 5242880 5242880 4194304 0.08125 0 0 -0.2 0 +1703936 0 2 0 0 5242880 5242880 4325376 0.08125 0 0 -0.175 0 +1703936 0 2 0 0 5242880 5242880 4456448 0.08125 0 0 -0.15 0 +1703936 0 2 0 0 5242880 5242880 4587520 0.08125 0 0 -0.125 0 +1703936 0 2 0 0 5242880 5242880 4718592 0.08125 0 0 -0.1 0 +1703936 0 2 0 0 5242880 5242880 4849664 0.08125 0 0 -0.075 0 +1703936 0 2 0 0 5242880 5242880 4980736 0.08125 0 0 -0.05 0 +1703936 0 2 0 0 5242880 5242880 5111808 0.08125 0 0 -0.025 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5242880 5373952 0.08125 0 0 0.025 0 +1703936 0 2 0 0 5242880 5242880 5505024 0.08125 0 0 0.05 0 +1703936 0 2 0 0 5242880 5242880 5636096 0.08125 0 0 0.075 0 +1703936 0 2 0 0 5242880 5242880 5767168 0.08125 0 0 0.1 0 +1703936 0 2 0 0 5242880 5242880 5898240 0.08125 0 0 0.125 0 +1703936 0 2 0 0 5242880 5242880 6029312 0.08125 0 0 0.15 0 +1703936 0 2 0 0 5242880 5242880 6160384 0.08125 0 0 0.175 0 +1703936 0 2 0 0 5242880 5242880 6291456 0.08125 0 0 0.2 0 +1703936 0 2 0 0 5242880 5242880 6422528 0.08125 0 0 0.225 0 +1703936 0 2 0 0 5242880 5242880 6553600 0.08125 0 0 0.25 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 2621440 0.0875 0 0 -0.5 0 +1835008 0 1 0 0 5242880 5242880 2883584 0.0875 0 0 -0.45 0 +1835008 0 1 0 0 5242880 5242880 3145728 0.0875 0 0 -0.4 0 +1835008 0 1 0 0 5242880 5242880 3407872 0.0875 0 0 -0.35 0 +1835008 0 1 0 0 5242880 5242880 3670016 0.0875 0 0 -0.3 0 +1835008 0 1 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 0 +1835008 0 1 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 0 +1835008 0 1 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0 +1835008 0 1 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 0 +1835008 0 1 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 0 +1835008 0 1 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 0 +1835008 0 1 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0 +1835008 0 1 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 0 +1835008 0 1 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 0 +1835008 0 1 0 0 5242880 5242880 6815744 0.0875 0 0 0.3 0 +1835008 0 1 0 0 5242880 5242880 7077888 0.0875 0 0 0.35 0 +1835008 0 1 0 0 5242880 5242880 7340032 0.0875 0 0 0.4 0 +1835008 0 1 0 0 5242880 5242880 7602176 0.0875 0 0 0.45 0 +1835008 0 1 0 0 5242880 5242880 7864320 0.0875 0 0 0.5 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 0 +1835008 0 2 0 0 5242880 5242880 4063232 0.0875 0 0 -0.225 0 +1835008 0 2 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 0 +1835008 0 2 0 0 5242880 5242880 4325376 0.0875 0 0 -0.175 0 +1835008 0 2 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0 +1835008 0 2 0 0 5242880 5242880 4587520 0.0875 0 0 -0.125 0 +1835008 0 2 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 0 +1835008 0 2 0 0 5242880 5242880 4849664 0.0875 0 0 -0.075 0 +1835008 0 2 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 0 +1835008 0 2 0 0 5242880 5242880 5111808 0.0875 0 0 -0.025 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5242880 5373952 0.0875 0 0 0.025 0 +1835008 0 2 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 0 +1835008 0 2 0 0 5242880 5242880 5636096 0.0875 0 0 0.075 0 +1835008 0 2 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 0 +1835008 0 2 0 0 5242880 5242880 5898240 0.0875 0 0 0.125 0 +1835008 0 2 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0 +1835008 0 2 0 0 5242880 5242880 6160384 0.0875 0 0 0.175 0 +1835008 0 2 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 0 +1835008 0 2 0 0 5242880 5242880 6422528 0.0875 0 0 0.225 0 +1835008 0 2 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 3932160 0.09375 0 0 -0.25 0 +1966080 0 2 0 0 5242880 5242880 4063232 0.09375 0 0 -0.225 0 +1966080 0 2 0 0 5242880 5242880 4194304 0.09375 0 0 -0.2 0 +1966080 0 2 0 0 5242880 5242880 4325376 0.09375 0 0 -0.175 0 +1966080 0 2 0 0 5242880 5242880 4456448 0.09375 0 0 -0.15 0 +1966080 0 2 0 0 5242880 5242880 4587520 0.09375 0 0 -0.125 0 +1966080 0 2 0 0 5242880 5242880 4718592 0.09375 0 0 -0.1 0 +1966080 0 2 0 0 5242880 5242880 4849664 0.09375 0 0 -0.075 0 +1966080 0 2 0 0 5242880 5242880 4980736 0.09375 0 0 -0.05 0 +1966080 0 2 0 0 5242880 5242880 5111808 0.09375 0 0 -0.025 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5242880 5373952 0.09375 0 0 0.025 0 +1966080 0 2 0 0 5242880 5242880 5505024 0.09375 0 0 0.05 0 +1966080 0 2 0 0 5242880 5242880 5636096 0.09375 0 0 0.075 0 +1966080 0 2 0 0 5242880 5242880 5767168 0.09375 0 0 0.1 0 +1966080 0 2 0 0 5242880 5242880 5898240 0.09375 0 0 0.125 0 +1966080 0 2 0 0 5242880 5242880 6029312 0.09375 0 0 0.15 0 +1966080 0 2 0 0 5242880 5242880 6160384 0.09375 0 0 0.175 0 +1966080 0 2 0 0 5242880 5242880 6291456 0.09375 0 0 0.2 0 +1966080 0 2 0 0 5242880 5242880 6422528 0.09375 0 0 0.225 0 +1966080 0 2 0 0 5242880 5242880 6553600 0.09375 0 0 0.25 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 0 0.1 0 0 -1 0 +2097152 0 0 0 0 5242880 5242880 524288 0.1 0 0 -0.9 0 +2097152 0 0 0 0 5242880 5242880 1048576 0.1 0 0 -0.8 0 +2097152 0 0 0 0 5242880 5242880 1572864 0.1 0 0 -0.7 0 +2097152 0 0 0 0 5242880 5242880 2097152 0.1 0 0 -0.6 0 +2097152 0 0 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 0 +2097152 0 0 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0 +2097152 0 0 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 0 +2097152 0 0 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 0 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 0 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 0 0 0 5242880 5242880 6815744 0.1 0 0 0.3 0 +2097152 0 0 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0 +2097152 0 0 0 0 5242880 5242880 7864320 0.1 0 0 0.5 0 +2097152 0 0 0 0 5242880 5242880 8388608 0.1 0 0 0.6 0 +2097152 0 0 0 0 5242880 5242880 8912896 0.1 0 0 0.7 0 +2097152 0 0 0 0 5242880 5242880 9437184 0.1 0 0 0.8 0 +2097152 0 0 0 0 5242880 5242880 9961472 0.1 0 0 0.9 0 +2097152 0 0 0 0 5242880 5242880 10485760 0.1 0 0 1 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 0 +2097152 0 1 0 0 5242880 5242880 2883584 0.1 0 0 -0.45 0 +2097152 0 1 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0 +2097152 0 1 0 0 5242880 5242880 3407872 0.1 0 0 -0.35 0 +2097152 0 1 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 0 +2097152 0 1 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 0 +2097152 0 1 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 1 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0 +2097152 0 1 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 1 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5242880 5505024 0.1 0 0 0.05 0 +2097152 0 1 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 1 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0 +2097152 0 1 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 1 0 0 5242880 5242880 6553600 0.1 0 0 0.25 0 +2097152 0 1 0 0 5242880 5242880 6815744 0.1 0 0 0.3 0 +2097152 0 1 0 0 5242880 5242880 7077888 0.1 0 0 0.35 0 +2097152 0 1 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0 +2097152 0 1 0 0 5242880 5242880 7602176 0.1 0 0 0.45 0 +2097152 0 1 0 0 5242880 5242880 7864320 0.1 0 0 0.5 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 0 +2097152 0 2 0 0 5242880 5242880 4063232 0.1 0 0 -0.225 0 +2097152 0 2 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 2 0 0 5242880 5242880 4325376 0.1 0 0 -0.175 0 +2097152 0 2 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0 +2097152 0 2 0 0 5242880 5242880 4587520 0.1 0 0 -0.125 0 +2097152 0 2 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 2 0 0 5242880 5242880 4849664 0.1 0 0 -0.075 0 +2097152 0 2 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 0 +2097152 0 2 0 0 5242880 5242880 5111808 0.1 0 0 -0.025 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5242880 5373952 0.1 0 0 0.025 0 +2097152 0 2 0 0 5242880 5242880 5505024 0.1 0 0 0.05 0 +2097152 0 2 0 0 5242880 5242880 5636096 0.1 0 0 0.075 0 +2097152 0 2 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 2 0 0 5242880 5242880 5898240 0.1 0 0 0.125 0 +2097152 0 2 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0 +2097152 0 2 0 0 5242880 5242880 6160384 0.1 0 0 0.175 0 +2097152 0 2 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 2 0 0 5242880 5242880 6422528 0.1 0 0 0.225 0 +2097152 0 2 0 0 5242880 5242880 6553600 0.1 0 0 0.25 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy..asc b/Carpet/CarpetInterp/test/waveinterp/phiy..asc new file mode 100644 index 000000000..25d5ed573 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy..asc @@ -0,0 +1,157 @@ +# WAVEMOL::phiy (phiy) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.average.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.average.asc new file mode 100644 index 000000000..e3facff8a --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.average.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 -4.97771231194458e-29 +262144 0.0125 5.42393148298285e-29 +393216 0.01875 -8.45274320705629e-30 +524288 0.025 1.04255857234009e-29 +655360 0.03125 1.21169035041947e-29 +786432 0.0375 1.50291191212862e-29 +917504 0.04375 -7.67403888599e-30 +1048576 0.05 1.48818609769944e-29 +1179648 0.05625 -2.06739735659665e-29 +1310720 0.0625 -4.06520732059149e-29 +1441792 0.06875 -2.15690348705529e-29 +1572864 0.075 3.12069429800906e-29 +1703936 0.08125 1.57405360723275e-29 +1835008 0.0875 5.40961365755309e-30 +1966080 0.09375 5.98780925803483e-29 +2097152 0.1 8.62406407414767e-29 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.count.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.count.asc new file mode 100644 index 000000000..4f23278b6 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.count.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000 +393216 0.01875 8000 +524288 0.025 8000 +655360 0.03125 8000 +786432 0.0375 8000 +917504 0.04375 8000 +1048576 0.05 8000 +1179648 0.05625 8000 +1310720 0.0625 8000 +1441792 0.06875 8000 +1572864 0.075 8000 +1703936 0.08125 8000 +1835008 0.0875 8000 +1966080 0.09375 8000 +2097152 0.1 8000 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.maximum.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.maximum.asc new file mode 100644 index 000000000..bfe7f8578 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.maximum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.minimum.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.minimum.asc new file mode 100644 index 000000000..9d5a6bb7a --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.minimum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 -2.52330210059881e-08 +262144 0.0125 -2.59751686828268e-09 +393216 0.01875 -1.94813765121201e-09 +524288 0.025 -1.13718142310167e-09 +655360 0.03125 -1.49819814627278e-09 +786432 0.0375 -1.92004376518377e-09 +917504 0.04375 -2.25411963198039e-09 +1048576 0.05 -2.51675670350412e-09 +1179648 0.05625 -2.6865148826614e-09 +1310720 0.0625 -2.77054086848342e-09 +1441792 0.06875 -2.7710016315662e-09 +1572864 0.075 -2.71062697591515e-09 +1703936 0.08125 -2.68229908058895e-09 +1835008 0.0875 -2.6295740571891e-09 +1966080 0.09375 -2.53181084986157e-09 +2097152 0.1 -2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.norm1.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.norm1.asc new file mode 100644 index 000000000..d80c8aa98 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.norm1.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 1.8276409322037e-11 +262144 0.0125 7.34649051893125e-12 +393216 0.01875 5.91041345682555e-12 +524288 0.025 1.24242890027224e-12 +655360 0.03125 2.57713743237751e-12 +786432 0.0375 2.36124801524171e-12 +917504 0.04375 2.980572995517e-12 +1048576 0.05 3.03589049525507e-12 +1179648 0.05625 3.36169643546458e-12 +1310720 0.0625 3.61334864722834e-12 +1441792 0.06875 3.84089322924322e-12 +1572864 0.075 3.76844870942373e-12 +1703936 0.08125 3.84025109025803e-12 +1835008 0.0875 3.86147640814427e-12 +1966080 0.09375 3.97285273972382e-12 +2097152 0.1 4.30036623573871e-12 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.norm2.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.norm2.asc new file mode 100644 index 000000000..032a35f63 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.norm2.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 5.18343779507329e-10 +262144 0.0125 1.13025459173354e-10 +393216 0.01875 8.58024498955012e-11 +524288 0.025 2.48311121202448e-11 +655360 0.03125 3.76969874645362e-11 +786432 0.0375 4.28591265832086e-11 +917504 0.04375 5.05689775131339e-11 +1048576 0.05 5.53837109993038e-11 +1179648 0.05625 5.9781605763834e-11 +1310720 0.0625 6.2162612218398e-11 +1441792 0.06875 6.40118017073292e-11 +1572864 0.075 6.41185856980847e-11 +1703936 0.08125 6.40670662348222e-11 +1835008 0.0875 6.32168941306762e-11 +1966080 0.09375 6.25609573472936e-11 +2097152 0.1 6.19448146789359e-11 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.norm_inf.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.norm_inf.asc new file mode 100644 index 000000000..bfe7f8578 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.norm_inf.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.sum.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.sum.asc new file mode 100644 index 000000000..968fb02cf --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.sum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiy (phiy) +# iteration time data +0 0 0 +131072 0.00625 -3.98216984955567e-25 +262144 0.0125 4.33914518638628e-25 +393216 0.01875 -6.76219456564504e-26 +524288 0.025 8.34046857872071e-26 +655360 0.03125 9.69352280335579e-26 +786432 0.0375 1.2023295297029e-25 +917504 0.04375 -6.139231108792e-26 +1048576 0.05 1.19054887815955e-25 +1179648 0.05625 -1.65391788527732e-25 +1310720 0.0625 -3.2521658564732e-25 +1441792 0.06875 -1.72552278964423e-25 +1572864 0.075 2.49655543840725e-25 +1703936 0.08125 1.2592428857862e-25 +1835008 0.0875 4.32769092604247e-26 +1966080 0.09375 4.79024740642786e-25 +2097152 0.1 6.89925125931813e-25 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.x.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.x.asc new file mode 100644 index 000000000..7ff84590b --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.x.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiy x (phiy) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 5242880 5242880 0 -1 0 0 0 +0 0 0 0 0 524288 5242880 5242880 0 -0.9 0 0 0 +0 0 0 0 0 1048576 5242880 5242880 0 -0.8 0 0 0 +0 0 0 0 0 1572864 5242880 5242880 0 -0.7 0 0 0 +0 0 0 0 0 2097152 5242880 5242880 0 -0.6 0 0 0 +0 0 0 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 0 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 0 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 0 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 0 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 0 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 0 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 0 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 0 0 0 7864320 5242880 5242880 0 0.5 0 0 0 +0 0 0 0 0 8388608 5242880 5242880 0 0.6 0 0 0 +0 0 0 0 0 8912896 5242880 5242880 0 0.7 0 0 0 +0 0 0 0 0 9437184 5242880 5242880 0 0.8 0 0 0 +0 0 0 0 0 9961472 5242880 5242880 0 0.9 0 0 0 +0 0 0 0 0 10485760 5242880 5242880 0 1 0 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 1 0 0 2883584 5242880 5242880 0 -0.45 0 0 0 +0 0 1 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 1 0 0 3407872 5242880 5242880 0 -0.35 0 0 0 +0 0 1 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 1 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 1 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 1 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 1 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 1 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 1 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 1 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 1 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 1 0 0 6553600 5242880 5242880 0 0.25 0 0 0 +0 0 1 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 1 0 0 7077888 5242880 5242880 0 0.35 0 0 0 +0 0 1 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 1 0 0 7602176 5242880 5242880 0 0.45 0 0 0 +0 0 1 0 0 7864320 5242880 5242880 0 0.5 0 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 2 0 0 4063232 5242880 5242880 0 -0.225 0 0 0 +0 0 2 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 2 0 0 4325376 5242880 5242880 0 -0.175 0 0 0 +0 0 2 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 2 0 0 4587520 5242880 5242880 0 -0.125 0 0 0 +0 0 2 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 2 0 0 4849664 5242880 5242880 0 -0.075 0 0 0 +0 0 2 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 2 0 0 5111808 5242880 5242880 0 -0.025 0 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5373952 5242880 5242880 0 0.025 0 0 0 +0 0 2 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 2 0 0 5636096 5242880 5242880 0 0.075 0 0 0 +0 0 2 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 2 0 0 5898240 5242880 5242880 0 0.125 0 0 0 +0 0 2 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 2 0 0 6160384 5242880 5242880 0 0.175 0 0 0 +0 0 2 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 2 0 0 6422528 5242880 5242880 0 0.225 0 0 0 +0 0 2 0 0 6553600 5242880 5242880 0 0.25 0 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 3932160 5242880 5242880 0.00625 -0.25 0 0 0 +131072 0 2 0 0 4063232 5242880 5242880 0.00625 -0.225 0 0 0 +131072 0 2 0 0 4194304 5242880 5242880 0.00625 -0.2 0 0 0 +131072 0 2 0 0 4325376 5242880 5242880 0.00625 -0.175 0 0 0 +131072 0 2 0 0 4456448 5242880 5242880 0.00625 -0.15 0 0 0 +131072 0 2 0 0 4587520 5242880 5242880 0.00625 -0.125 0 0 0 +131072 0 2 0 0 4718592 5242880 5242880 0.00625 -0.1 0 0 0 +131072 0 2 0 0 4849664 5242880 5242880 0.00625 -0.075 0 0 0 +131072 0 2 0 0 4980736 5242880 5242880 0.00625 -0.05 0 0 0 +131072 0 2 0 0 5111808 5242880 5242880 0.00625 -0.025 0 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5373952 5242880 5242880 0.00625 0.025 0 0 0 +131072 0 2 0 0 5505024 5242880 5242880 0.00625 0.05 0 0 0 +131072 0 2 0 0 5636096 5242880 5242880 0.00625 0.075 0 0 0 +131072 0 2 0 0 5767168 5242880 5242880 0.00625 0.1 0 0 0 +131072 0 2 0 0 5898240 5242880 5242880 0.00625 0.125 0 0 0 +131072 0 2 0 0 6029312 5242880 5242880 0.00625 0.15 0 0 0 +131072 0 2 0 0 6160384 5242880 5242880 0.00625 0.175 0 0 0 +131072 0 2 0 0 6291456 5242880 5242880 0.00625 0.2 0 0 0 +131072 0 2 0 0 6422528 5242880 5242880 0.00625 0.225 0 0 0 +131072 0 2 0 0 6553600 5242880 5242880 0.00625 0.25 0 0 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 2621440 5242880 5242880 0.0125 -0.5 0 0 0 +262144 0 1 0 0 2883584 5242880 5242880 0.0125 -0.45 0 0 0 +262144 0 1 0 0 3145728 5242880 5242880 0.0125 -0.4 0 0 0 +262144 0 1 0 0 3407872 5242880 5242880 0.0125 -0.35 0 0 0 +262144 0 1 0 0 3670016 5242880 5242880 0.0125 -0.3 0 0 0 +262144 0 1 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 0 +262144 0 1 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 1 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 1 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 0 +262144 0 1 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 1 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 0 +262144 0 1 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 1 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 1 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 0 +262144 0 1 0 0 6815744 5242880 5242880 0.0125 0.3 0 0 0 +262144 0 1 0 0 7077888 5242880 5242880 0.0125 0.35 0 0 0 +262144 0 1 0 0 7340032 5242880 5242880 0.0125 0.4 0 0 0 +262144 0 1 0 0 7602176 5242880 5242880 0.0125 0.45 0 0 0 +262144 0 1 0 0 7864320 5242880 5242880 0.0125 0.5 0 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 0 +262144 0 2 0 0 4063232 5242880 5242880 0.0125 -0.225 0 0 0 +262144 0 2 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 2 0 0 4325376 5242880 5242880 0.0125 -0.175 0 0 0 +262144 0 2 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 2 0 0 4587520 5242880 5242880 0.0125 -0.125 0 0 0 +262144 0 2 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 0 +262144 0 2 0 0 4849664 5242880 5242880 0.0125 -0.075 0 0 0 +262144 0 2 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 2 0 0 5111808 5242880 5242880 0.0125 -0.025 0 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5373952 5242880 5242880 0.0125 0.025 0 0 0 +262144 0 2 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 2 0 0 5636096 5242880 5242880 0.0125 0.075 0 0 0 +262144 0 2 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 0 +262144 0 2 0 0 5898240 5242880 5242880 0.0125 0.125 0 0 0 +262144 0 2 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 2 0 0 6160384 5242880 5242880 0.0125 0.175 0 0 0 +262144 0 2 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 2 0 0 6422528 5242880 5242880 0.0125 0.225 0 0 0 +262144 0 2 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 3932160 5242880 5242880 0.01875 -0.25 0 0 0 +393216 0 2 0 0 4063232 5242880 5242880 0.01875 -0.225 0 0 0 +393216 0 2 0 0 4194304 5242880 5242880 0.01875 -0.2 0 0 0 +393216 0 2 0 0 4325376 5242880 5242880 0.01875 -0.175 0 0 0 +393216 0 2 0 0 4456448 5242880 5242880 0.01875 -0.15 0 0 0 +393216 0 2 0 0 4587520 5242880 5242880 0.01875 -0.125 0 0 0 +393216 0 2 0 0 4718592 5242880 5242880 0.01875 -0.1 0 0 0 +393216 0 2 0 0 4849664 5242880 5242880 0.01875 -0.075 0 0 0 +393216 0 2 0 0 4980736 5242880 5242880 0.01875 -0.05 0 0 0 +393216 0 2 0 0 5111808 5242880 5242880 0.01875 -0.025 0 0 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5373952 5242880 5242880 0.01875 0.025 0 0 0 +393216 0 2 0 0 5505024 5242880 5242880 0.01875 0.05 0 0 0 +393216 0 2 0 0 5636096 5242880 5242880 0.01875 0.075 0 0 0 +393216 0 2 0 0 5767168 5242880 5242880 0.01875 0.1 0 0 0 +393216 0 2 0 0 5898240 5242880 5242880 0.01875 0.125 0 0 0 +393216 0 2 0 0 6029312 5242880 5242880 0.01875 0.15 0 0 0 +393216 0 2 0 0 6160384 5242880 5242880 0.01875 0.175 0 0 0 +393216 0 2 0 0 6291456 5242880 5242880 0.01875 0.2 0 0 0 +393216 0 2 0 0 6422528 5242880 5242880 0.01875 0.225 0 0 0 +393216 0 2 0 0 6553600 5242880 5242880 0.01875 0.25 0 0 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 5242880 5242880 0.025 -1 0 0 0 +524288 0 0 0 0 524288 5242880 5242880 0.025 -0.9 0 0 0 +524288 0 0 0 0 1048576 5242880 5242880 0.025 -0.8 0 0 0 +524288 0 0 0 0 1572864 5242880 5242880 0.025 -0.7 0 0 0 +524288 0 0 0 0 2097152 5242880 5242880 0.025 -0.6 0 0 0 +524288 0 0 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 0 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 0 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 0 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 0 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 0 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 0 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 0 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 0 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 +524288 0 0 0 0 8388608 5242880 5242880 0.025 0.6 0 0 0 +524288 0 0 0 0 8912896 5242880 5242880 0.025 0.7 0 0 0 +524288 0 0 0 0 9437184 5242880 5242880 0.025 0.8 0 0 0 +524288 0 0 0 0 9961472 5242880 5242880 0.025 0.9 0 0 0 +524288 0 0 0 0 10485760 5242880 5242880 0.025 1 0 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 1 0 0 2883584 5242880 5242880 0.025 -0.45 0 0 0 +524288 0 1 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 1 0 0 3407872 5242880 5242880 0.025 -0.35 0 0 0 +524288 0 1 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 1 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0 +524288 0 1 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 1 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 0 +524288 0 1 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 1 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5505024 5242880 5242880 0.025 0.05 0 0 0 +524288 0 1 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 1 0 0 6029312 5242880 5242880 0.025 0.15 0 0 0 +524288 0 1 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 1 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0 +524288 0 1 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 1 0 0 7077888 5242880 5242880 0.025 0.35 0 0 0 +524288 0 1 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 1 0 0 7602176 5242880 5242880 0.025 0.45 0 0 0 +524288 0 1 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0 +524288 0 2 0 0 4063232 5242880 5242880 0.025 -0.225 0 0 0 +524288 0 2 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 2 0 0 4325376 5242880 5242880 0.025 -0.175 0 0 0 +524288 0 2 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 0 +524288 0 2 0 0 4587520 5242880 5242880 0.025 -0.125 0 0 0 +524288 0 2 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 2 0 0 4849664 5242880 5242880 0.025 -0.075 0 0 0 +524288 0 2 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 0 +524288 0 2 0 0 5111808 5242880 5242880 0.025 -0.025 0 0 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5373952 5242880 5242880 0.025 0.025 0 0 0 +524288 0 2 0 0 5505024 5242880 5242880 0.025 0.05 0 0 0 +524288 0 2 0 0 5636096 5242880 5242880 0.025 0.075 0 0 0 +524288 0 2 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 2 0 0 5898240 5242880 5242880 0.025 0.125 0 0 0 +524288 0 2 0 0 6029312 5242880 5242880 0.025 0.15 0 0 0 +524288 0 2 0 0 6160384 5242880 5242880 0.025 0.175 0 0 0 +524288 0 2 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 2 0 0 6422528 5242880 5242880 0.025 0.225 0 0 0 +524288 0 2 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 3932160 5242880 5242880 0.03125 -0.25 0 0 0 +655360 0 2 0 0 4063232 5242880 5242880 0.03125 -0.225 0 0 0 +655360 0 2 0 0 4194304 5242880 5242880 0.03125 -0.2 0 0 0 +655360 0 2 0 0 4325376 5242880 5242880 0.03125 -0.175 0 0 0 +655360 0 2 0 0 4456448 5242880 5242880 0.03125 -0.15 0 0 0 +655360 0 2 0 0 4587520 5242880 5242880 0.03125 -0.125 0 0 0 +655360 0 2 0 0 4718592 5242880 5242880 0.03125 -0.1 0 0 0 +655360 0 2 0 0 4849664 5242880 5242880 0.03125 -0.075 0 0 0 +655360 0 2 0 0 4980736 5242880 5242880 0.03125 -0.05 0 0 0 +655360 0 2 0 0 5111808 5242880 5242880 0.03125 -0.025 0 0 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5373952 5242880 5242880 0.03125 0.025 0 0 0 +655360 0 2 0 0 5505024 5242880 5242880 0.03125 0.05 0 0 0 +655360 0 2 0 0 5636096 5242880 5242880 0.03125 0.075 0 0 0 +655360 0 2 0 0 5767168 5242880 5242880 0.03125 0.1 0 0 0 +655360 0 2 0 0 5898240 5242880 5242880 0.03125 0.125 0 0 0 +655360 0 2 0 0 6029312 5242880 5242880 0.03125 0.15 0 0 0 +655360 0 2 0 0 6160384 5242880 5242880 0.03125 0.175 0 0 0 +655360 0 2 0 0 6291456 5242880 5242880 0.03125 0.2 0 0 0 +655360 0 2 0 0 6422528 5242880 5242880 0.03125 0.225 0 0 0 +655360 0 2 0 0 6553600 5242880 5242880 0.03125 0.25 0 0 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 2621440 5242880 5242880 0.0375 -0.5 0 0 0 +786432 0 1 0 0 2883584 5242880 5242880 0.0375 -0.45 0 0 0 +786432 0 1 0 0 3145728 5242880 5242880 0.0375 -0.4 0 0 0 +786432 0 1 0 0 3407872 5242880 5242880 0.0375 -0.35 0 0 0 +786432 0 1 0 0 3670016 5242880 5242880 0.0375 -0.3 0 0 0 +786432 0 1 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0 +786432 0 1 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0 +786432 0 1 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0 +786432 0 1 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 0 +786432 0 1 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 0 +786432 0 1 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 0 +786432 0 1 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0 +786432 0 1 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0 +786432 0 1 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0 +786432 0 1 0 0 6815744 5242880 5242880 0.0375 0.3 0 0 0 +786432 0 1 0 0 7077888 5242880 5242880 0.0375 0.35 0 0 0 +786432 0 1 0 0 7340032 5242880 5242880 0.0375 0.4 0 0 0 +786432 0 1 0 0 7602176 5242880 5242880 0.0375 0.45 0 0 0 +786432 0 1 0 0 7864320 5242880 5242880 0.0375 0.5 0 0 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0 +786432 0 2 0 0 4063232 5242880 5242880 0.0375 -0.225 0 0 0 +786432 0 2 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0 +786432 0 2 0 0 4325376 5242880 5242880 0.0375 -0.175 0 0 0 +786432 0 2 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0 +786432 0 2 0 0 4587520 5242880 5242880 0.0375 -0.125 0 0 0 +786432 0 2 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 0 +786432 0 2 0 0 4849664 5242880 5242880 0.0375 -0.075 0 0 0 +786432 0 2 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 0 +786432 0 2 0 0 5111808 5242880 5242880 0.0375 -0.025 0 0 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5373952 5242880 5242880 0.0375 0.025 0 0 0 +786432 0 2 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 0 +786432 0 2 0 0 5636096 5242880 5242880 0.0375 0.075 0 0 0 +786432 0 2 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 0 +786432 0 2 0 0 5898240 5242880 5242880 0.0375 0.125 0 0 0 +786432 0 2 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0 +786432 0 2 0 0 6160384 5242880 5242880 0.0375 0.175 0 0 0 +786432 0 2 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0 +786432 0 2 0 0 6422528 5242880 5242880 0.0375 0.225 0 0 0 +786432 0 2 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 3932160 5242880 5242880 0.04375 -0.25 0 0 0 +917504 0 2 0 0 4063232 5242880 5242880 0.04375 -0.225 0 0 0 +917504 0 2 0 0 4194304 5242880 5242880 0.04375 -0.2 0 0 0 +917504 0 2 0 0 4325376 5242880 5242880 0.04375 -0.175 0 0 0 +917504 0 2 0 0 4456448 5242880 5242880 0.04375 -0.15 0 0 0 +917504 0 2 0 0 4587520 5242880 5242880 0.04375 -0.125 0 0 0 +917504 0 2 0 0 4718592 5242880 5242880 0.04375 -0.1 0 0 0 +917504 0 2 0 0 4849664 5242880 5242880 0.04375 -0.075 0 0 0 +917504 0 2 0 0 4980736 5242880 5242880 0.04375 -0.05 0 0 0 +917504 0 2 0 0 5111808 5242880 5242880 0.04375 -0.025 0 0 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5373952 5242880 5242880 0.04375 0.025 0 0 0 +917504 0 2 0 0 5505024 5242880 5242880 0.04375 0.05 0 0 0 +917504 0 2 0 0 5636096 5242880 5242880 0.04375 0.075 0 0 0 +917504 0 2 0 0 5767168 5242880 5242880 0.04375 0.1 0 0 0 +917504 0 2 0 0 5898240 5242880 5242880 0.04375 0.125 0 0 0 +917504 0 2 0 0 6029312 5242880 5242880 0.04375 0.15 0 0 0 +917504 0 2 0 0 6160384 5242880 5242880 0.04375 0.175 0 0 0 +917504 0 2 0 0 6291456 5242880 5242880 0.04375 0.2 0 0 0 +917504 0 2 0 0 6422528 5242880 5242880 0.04375 0.225 0 0 0 +917504 0 2 0 0 6553600 5242880 5242880 0.04375 0.25 0 0 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 5242880 5242880 0.05 -1 0 0 0 +1048576 0 0 0 0 524288 5242880 5242880 0.05 -0.9 0 0 0 +1048576 0 0 0 0 1048576 5242880 5242880 0.05 -0.8 0 0 0 +1048576 0 0 0 0 1572864 5242880 5242880 0.05 -0.7 0 0 0 +1048576 0 0 0 0 2097152 5242880 5242880 0.05 -0.6 0 0 0 +1048576 0 0 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 0 +1048576 0 0 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0 +1048576 0 0 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 0 +1048576 0 0 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 0 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 0 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 0 0 0 6815744 5242880 5242880 0.05 0.3 0 0 0 +1048576 0 0 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0 +1048576 0 0 0 0 7864320 5242880 5242880 0.05 0.5 0 0 0 +1048576 0 0 0 0 8388608 5242880 5242880 0.05 0.6 0 0 0 +1048576 0 0 0 0 8912896 5242880 5242880 0.05 0.7 0 0 0 +1048576 0 0 0 0 9437184 5242880 5242880 0.05 0.8 0 0 0 +1048576 0 0 0 0 9961472 5242880 5242880 0.05 0.9 0 0 0 +1048576 0 0 0 0 10485760 5242880 5242880 0.05 1 0 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 0 +1048576 0 1 0 0 2883584 5242880 5242880 0.05 -0.45 0 0 0 +1048576 0 1 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0 +1048576 0 1 0 0 3407872 5242880 5242880 0.05 -0.35 0 0 0 +1048576 0 1 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 0 +1048576 0 1 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0 +1048576 0 1 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 1 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0 +1048576 0 1 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 1 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5505024 5242880 5242880 0.05 0.05 0 0 0 +1048576 0 1 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 1 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0 +1048576 0 1 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 1 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0 +1048576 0 1 0 0 6815744 5242880 5242880 0.05 0.3 0 0 0 +1048576 0 1 0 0 7077888 5242880 5242880 0.05 0.35 0 0 0 +1048576 0 1 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0 +1048576 0 1 0 0 7602176 5242880 5242880 0.05 0.45 0 0 0 +1048576 0 1 0 0 7864320 5242880 5242880 0.05 0.5 0 0 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0 +1048576 0 2 0 0 4063232 5242880 5242880 0.05 -0.225 0 0 0 +1048576 0 2 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 2 0 0 4325376 5242880 5242880 0.05 -0.175 0 0 0 +1048576 0 2 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0 +1048576 0 2 0 0 4587520 5242880 5242880 0.05 -0.125 0 0 0 +1048576 0 2 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 2 0 0 4849664 5242880 5242880 0.05 -0.075 0 0 0 +1048576 0 2 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 0 +1048576 0 2 0 0 5111808 5242880 5242880 0.05 -0.025 0 0 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5373952 5242880 5242880 0.05 0.025 0 0 0 +1048576 0 2 0 0 5505024 5242880 5242880 0.05 0.05 0 0 0 +1048576 0 2 0 0 5636096 5242880 5242880 0.05 0.075 0 0 0 +1048576 0 2 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 2 0 0 5898240 5242880 5242880 0.05 0.125 0 0 0 +1048576 0 2 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0 +1048576 0 2 0 0 6160384 5242880 5242880 0.05 0.175 0 0 0 +1048576 0 2 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 2 0 0 6422528 5242880 5242880 0.05 0.225 0 0 0 +1048576 0 2 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 3932160 5242880 5242880 0.05625 -0.25 0 0 0 +1179648 0 2 0 0 4063232 5242880 5242880 0.05625 -0.225 0 0 0 +1179648 0 2 0 0 4194304 5242880 5242880 0.05625 -0.2 0 0 0 +1179648 0 2 0 0 4325376 5242880 5242880 0.05625 -0.175 0 0 0 +1179648 0 2 0 0 4456448 5242880 5242880 0.05625 -0.15 0 0 0 +1179648 0 2 0 0 4587520 5242880 5242880 0.05625 -0.125 0 0 0 +1179648 0 2 0 0 4718592 5242880 5242880 0.05625 -0.1 0 0 0 +1179648 0 2 0 0 4849664 5242880 5242880 0.05625 -0.075 0 0 0 +1179648 0 2 0 0 4980736 5242880 5242880 0.05625 -0.05 0 0 0 +1179648 0 2 0 0 5111808 5242880 5242880 0.05625 -0.025 0 0 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5373952 5242880 5242880 0.05625 0.025 0 0 0 +1179648 0 2 0 0 5505024 5242880 5242880 0.05625 0.05 0 0 0 +1179648 0 2 0 0 5636096 5242880 5242880 0.05625 0.075 0 0 0 +1179648 0 2 0 0 5767168 5242880 5242880 0.05625 0.1 0 0 0 +1179648 0 2 0 0 5898240 5242880 5242880 0.05625 0.125 0 0 0 +1179648 0 2 0 0 6029312 5242880 5242880 0.05625 0.15 0 0 0 +1179648 0 2 0 0 6160384 5242880 5242880 0.05625 0.175 0 0 0 +1179648 0 2 0 0 6291456 5242880 5242880 0.05625 0.2 0 0 0 +1179648 0 2 0 0 6422528 5242880 5242880 0.05625 0.225 0 0 0 +1179648 0 2 0 0 6553600 5242880 5242880 0.05625 0.25 0 0 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 2621440 5242880 5242880 0.0625 -0.5 0 0 0 +1310720 0 1 0 0 2883584 5242880 5242880 0.0625 -0.45 0 0 0 +1310720 0 1 0 0 3145728 5242880 5242880 0.0625 -0.4 0 0 0 +1310720 0 1 0 0 3407872 5242880 5242880 0.0625 -0.35 0 0 0 +1310720 0 1 0 0 3670016 5242880 5242880 0.0625 -0.3 0 0 0 +1310720 0 1 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0 +1310720 0 1 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 0 +1310720 0 1 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0 +1310720 0 1 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 0 +1310720 0 1 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 0 +1310720 0 1 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 0 +1310720 0 1 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0 +1310720 0 1 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 0 +1310720 0 1 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0 +1310720 0 1 0 0 6815744 5242880 5242880 0.0625 0.3 0 0 0 +1310720 0 1 0 0 7077888 5242880 5242880 0.0625 0.35 0 0 0 +1310720 0 1 0 0 7340032 5242880 5242880 0.0625 0.4 0 0 0 +1310720 0 1 0 0 7602176 5242880 5242880 0.0625 0.45 0 0 0 +1310720 0 1 0 0 7864320 5242880 5242880 0.0625 0.5 0 0 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0 +1310720 0 2 0 0 4063232 5242880 5242880 0.0625 -0.225 0 0 0 +1310720 0 2 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 0 +1310720 0 2 0 0 4325376 5242880 5242880 0.0625 -0.175 0 0 0 +1310720 0 2 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0 +1310720 0 2 0 0 4587520 5242880 5242880 0.0625 -0.125 0 0 0 +1310720 0 2 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 0 +1310720 0 2 0 0 4849664 5242880 5242880 0.0625 -0.075 0 0 0 +1310720 0 2 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 0 +1310720 0 2 0 0 5111808 5242880 5242880 0.0625 -0.025 0 0 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5373952 5242880 5242880 0.0625 0.025 0 0 0 +1310720 0 2 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 0 +1310720 0 2 0 0 5636096 5242880 5242880 0.0625 0.075 0 0 0 +1310720 0 2 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 0 +1310720 0 2 0 0 5898240 5242880 5242880 0.0625 0.125 0 0 0 +1310720 0 2 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0 +1310720 0 2 0 0 6160384 5242880 5242880 0.0625 0.175 0 0 0 +1310720 0 2 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 0 +1310720 0 2 0 0 6422528 5242880 5242880 0.0625 0.225 0 0 0 +1310720 0 2 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 3932160 5242880 5242880 0.06875 -0.25 0 0 0 +1441792 0 2 0 0 4063232 5242880 5242880 0.06875 -0.225 0 0 0 +1441792 0 2 0 0 4194304 5242880 5242880 0.06875 -0.2 0 0 0 +1441792 0 2 0 0 4325376 5242880 5242880 0.06875 -0.175 0 0 0 +1441792 0 2 0 0 4456448 5242880 5242880 0.06875 -0.15 0 0 0 +1441792 0 2 0 0 4587520 5242880 5242880 0.06875 -0.125 0 0 0 +1441792 0 2 0 0 4718592 5242880 5242880 0.06875 -0.1 0 0 0 +1441792 0 2 0 0 4849664 5242880 5242880 0.06875 -0.075 0 0 0 +1441792 0 2 0 0 4980736 5242880 5242880 0.06875 -0.05 0 0 0 +1441792 0 2 0 0 5111808 5242880 5242880 0.06875 -0.025 0 0 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5373952 5242880 5242880 0.06875 0.025 0 0 0 +1441792 0 2 0 0 5505024 5242880 5242880 0.06875 0.05 0 0 0 +1441792 0 2 0 0 5636096 5242880 5242880 0.06875 0.075 0 0 0 +1441792 0 2 0 0 5767168 5242880 5242880 0.06875 0.1 0 0 0 +1441792 0 2 0 0 5898240 5242880 5242880 0.06875 0.125 0 0 0 +1441792 0 2 0 0 6029312 5242880 5242880 0.06875 0.15 0 0 0 +1441792 0 2 0 0 6160384 5242880 5242880 0.06875 0.175 0 0 0 +1441792 0 2 0 0 6291456 5242880 5242880 0.06875 0.2 0 0 0 +1441792 0 2 0 0 6422528 5242880 5242880 0.06875 0.225 0 0 0 +1441792 0 2 0 0 6553600 5242880 5242880 0.06875 0.25 0 0 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 5242880 5242880 0.075 -1 0 0 0 +1572864 0 0 0 0 524288 5242880 5242880 0.075 -0.9 0 0 0 +1572864 0 0 0 0 1048576 5242880 5242880 0.075 -0.8 0 0 0 +1572864 0 0 0 0 1572864 5242880 5242880 0.075 -0.7 0 0 0 +1572864 0 0 0 0 2097152 5242880 5242880 0.075 -0.6 0 0 0 +1572864 0 0 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 0 +1572864 0 0 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0 +1572864 0 0 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 0 +1572864 0 0 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 0 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 0 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 0 0 0 6815744 5242880 5242880 0.075 0.3 0 0 0 +1572864 0 0 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0 +1572864 0 0 0 0 7864320 5242880 5242880 0.075 0.5 0 0 0 +1572864 0 0 0 0 8388608 5242880 5242880 0.075 0.6 0 0 0 +1572864 0 0 0 0 8912896 5242880 5242880 0.075 0.7 0 0 0 +1572864 0 0 0 0 9437184 5242880 5242880 0.075 0.8 0 0 0 +1572864 0 0 0 0 9961472 5242880 5242880 0.075 0.9 0 0 0 +1572864 0 0 0 0 10485760 5242880 5242880 0.075 1 0 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 0 +1572864 0 1 0 0 2883584 5242880 5242880 0.075 -0.45 0 0 0 +1572864 0 1 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0 +1572864 0 1 0 0 3407872 5242880 5242880 0.075 -0.35 0 0 0 +1572864 0 1 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 0 +1572864 0 1 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 0 +1572864 0 1 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 1 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0 +1572864 0 1 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 1 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5505024 5242880 5242880 0.075 0.05 0 0 0 +1572864 0 1 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 1 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0 +1572864 0 1 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 1 0 0 6553600 5242880 5242880 0.075 0.25 0 0 0 +1572864 0 1 0 0 6815744 5242880 5242880 0.075 0.3 0 0 0 +1572864 0 1 0 0 7077888 5242880 5242880 0.075 0.35 0 0 0 +1572864 0 1 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0 +1572864 0 1 0 0 7602176 5242880 5242880 0.075 0.45 0 0 0 +1572864 0 1 0 0 7864320 5242880 5242880 0.075 0.5 0 0 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 0 +1572864 0 2 0 0 4063232 5242880 5242880 0.075 -0.225 0 0 0 +1572864 0 2 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 2 0 0 4325376 5242880 5242880 0.075 -0.175 0 0 0 +1572864 0 2 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0 +1572864 0 2 0 0 4587520 5242880 5242880 0.075 -0.125 0 0 0 +1572864 0 2 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 2 0 0 4849664 5242880 5242880 0.075 -0.075 0 0 0 +1572864 0 2 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 0 +1572864 0 2 0 0 5111808 5242880 5242880 0.075 -0.025 0 0 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5373952 5242880 5242880 0.075 0.025 0 0 0 +1572864 0 2 0 0 5505024 5242880 5242880 0.075 0.05 0 0 0 +1572864 0 2 0 0 5636096 5242880 5242880 0.075 0.075 0 0 0 +1572864 0 2 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 2 0 0 5898240 5242880 5242880 0.075 0.125 0 0 0 +1572864 0 2 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0 +1572864 0 2 0 0 6160384 5242880 5242880 0.075 0.175 0 0 0 +1572864 0 2 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 2 0 0 6422528 5242880 5242880 0.075 0.225 0 0 0 +1572864 0 2 0 0 6553600 5242880 5242880 0.075 0.25 0 0 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 3932160 5242880 5242880 0.08125 -0.25 0 0 0 +1703936 0 2 0 0 4063232 5242880 5242880 0.08125 -0.225 0 0 0 +1703936 0 2 0 0 4194304 5242880 5242880 0.08125 -0.2 0 0 0 +1703936 0 2 0 0 4325376 5242880 5242880 0.08125 -0.175 0 0 0 +1703936 0 2 0 0 4456448 5242880 5242880 0.08125 -0.15 0 0 0 +1703936 0 2 0 0 4587520 5242880 5242880 0.08125 -0.125 0 0 0 +1703936 0 2 0 0 4718592 5242880 5242880 0.08125 -0.1 0 0 0 +1703936 0 2 0 0 4849664 5242880 5242880 0.08125 -0.075 0 0 0 +1703936 0 2 0 0 4980736 5242880 5242880 0.08125 -0.05 0 0 0 +1703936 0 2 0 0 5111808 5242880 5242880 0.08125 -0.025 0 0 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5373952 5242880 5242880 0.08125 0.025 0 0 0 +1703936 0 2 0 0 5505024 5242880 5242880 0.08125 0.05 0 0 0 +1703936 0 2 0 0 5636096 5242880 5242880 0.08125 0.075 0 0 0 +1703936 0 2 0 0 5767168 5242880 5242880 0.08125 0.1 0 0 0 +1703936 0 2 0 0 5898240 5242880 5242880 0.08125 0.125 0 0 0 +1703936 0 2 0 0 6029312 5242880 5242880 0.08125 0.15 0 0 0 +1703936 0 2 0 0 6160384 5242880 5242880 0.08125 0.175 0 0 0 +1703936 0 2 0 0 6291456 5242880 5242880 0.08125 0.2 0 0 0 +1703936 0 2 0 0 6422528 5242880 5242880 0.08125 0.225 0 0 0 +1703936 0 2 0 0 6553600 5242880 5242880 0.08125 0.25 0 0 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 2621440 5242880 5242880 0.0875 -0.5 0 0 0 +1835008 0 1 0 0 2883584 5242880 5242880 0.0875 -0.45 0 0 0 +1835008 0 1 0 0 3145728 5242880 5242880 0.0875 -0.4 0 0 0 +1835008 0 1 0 0 3407872 5242880 5242880 0.0875 -0.35 0 0 0 +1835008 0 1 0 0 3670016 5242880 5242880 0.0875 -0.3 0 0 0 +1835008 0 1 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 0 +1835008 0 1 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 0 +1835008 0 1 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0 +1835008 0 1 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 0 +1835008 0 1 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 0 +1835008 0 1 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 0 +1835008 0 1 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0 +1835008 0 1 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 0 +1835008 0 1 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 0 +1835008 0 1 0 0 6815744 5242880 5242880 0.0875 0.3 0 0 0 +1835008 0 1 0 0 7077888 5242880 5242880 0.0875 0.35 0 0 0 +1835008 0 1 0 0 7340032 5242880 5242880 0.0875 0.4 0 0 0 +1835008 0 1 0 0 7602176 5242880 5242880 0.0875 0.45 0 0 0 +1835008 0 1 0 0 7864320 5242880 5242880 0.0875 0.5 0 0 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 0 +1835008 0 2 0 0 4063232 5242880 5242880 0.0875 -0.225 0 0 0 +1835008 0 2 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 0 +1835008 0 2 0 0 4325376 5242880 5242880 0.0875 -0.175 0 0 0 +1835008 0 2 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0 +1835008 0 2 0 0 4587520 5242880 5242880 0.0875 -0.125 0 0 0 +1835008 0 2 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 0 +1835008 0 2 0 0 4849664 5242880 5242880 0.0875 -0.075 0 0 0 +1835008 0 2 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 0 +1835008 0 2 0 0 5111808 5242880 5242880 0.0875 -0.025 0 0 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5373952 5242880 5242880 0.0875 0.025 0 0 0 +1835008 0 2 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 0 +1835008 0 2 0 0 5636096 5242880 5242880 0.0875 0.075 0 0 0 +1835008 0 2 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 0 +1835008 0 2 0 0 5898240 5242880 5242880 0.0875 0.125 0 0 0 +1835008 0 2 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0 +1835008 0 2 0 0 6160384 5242880 5242880 0.0875 0.175 0 0 0 +1835008 0 2 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 0 +1835008 0 2 0 0 6422528 5242880 5242880 0.0875 0.225 0 0 0 +1835008 0 2 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 3932160 5242880 5242880 0.09375 -0.25 0 0 0 +1966080 0 2 0 0 4063232 5242880 5242880 0.09375 -0.225 0 0 0 +1966080 0 2 0 0 4194304 5242880 5242880 0.09375 -0.2 0 0 0 +1966080 0 2 0 0 4325376 5242880 5242880 0.09375 -0.175 0 0 0 +1966080 0 2 0 0 4456448 5242880 5242880 0.09375 -0.15 0 0 0 +1966080 0 2 0 0 4587520 5242880 5242880 0.09375 -0.125 0 0 0 +1966080 0 2 0 0 4718592 5242880 5242880 0.09375 -0.1 0 0 0 +1966080 0 2 0 0 4849664 5242880 5242880 0.09375 -0.075 0 0 0 +1966080 0 2 0 0 4980736 5242880 5242880 0.09375 -0.05 0 0 0 +1966080 0 2 0 0 5111808 5242880 5242880 0.09375 -0.025 0 0 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5373952 5242880 5242880 0.09375 0.025 0 0 0 +1966080 0 2 0 0 5505024 5242880 5242880 0.09375 0.05 0 0 0 +1966080 0 2 0 0 5636096 5242880 5242880 0.09375 0.075 0 0 0 +1966080 0 2 0 0 5767168 5242880 5242880 0.09375 0.1 0 0 0 +1966080 0 2 0 0 5898240 5242880 5242880 0.09375 0.125 0 0 0 +1966080 0 2 0 0 6029312 5242880 5242880 0.09375 0.15 0 0 0 +1966080 0 2 0 0 6160384 5242880 5242880 0.09375 0.175 0 0 0 +1966080 0 2 0 0 6291456 5242880 5242880 0.09375 0.2 0 0 0 +1966080 0 2 0 0 6422528 5242880 5242880 0.09375 0.225 0 0 0 +1966080 0 2 0 0 6553600 5242880 5242880 0.09375 0.25 0 0 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 5242880 5242880 0.1 -1 0 0 0 +2097152 0 0 0 0 524288 5242880 5242880 0.1 -0.9 0 0 0 +2097152 0 0 0 0 1048576 5242880 5242880 0.1 -0.8 0 0 0 +2097152 0 0 0 0 1572864 5242880 5242880 0.1 -0.7 0 0 0 +2097152 0 0 0 0 2097152 5242880 5242880 0.1 -0.6 0 0 0 +2097152 0 0 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 0 +2097152 0 0 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0 +2097152 0 0 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 0 +2097152 0 0 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 0 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 0 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 0 0 0 6815744 5242880 5242880 0.1 0.3 0 0 0 +2097152 0 0 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0 +2097152 0 0 0 0 7864320 5242880 5242880 0.1 0.5 0 0 0 +2097152 0 0 0 0 8388608 5242880 5242880 0.1 0.6 0 0 0 +2097152 0 0 0 0 8912896 5242880 5242880 0.1 0.7 0 0 0 +2097152 0 0 0 0 9437184 5242880 5242880 0.1 0.8 0 0 0 +2097152 0 0 0 0 9961472 5242880 5242880 0.1 0.9 0 0 0 +2097152 0 0 0 0 10485760 5242880 5242880 0.1 1 0 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 0 +2097152 0 1 0 0 2883584 5242880 5242880 0.1 -0.45 0 0 0 +2097152 0 1 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0 +2097152 0 1 0 0 3407872 5242880 5242880 0.1 -0.35 0 0 0 +2097152 0 1 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 0 +2097152 0 1 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 0 +2097152 0 1 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 1 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0 +2097152 0 1 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 1 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5505024 5242880 5242880 0.1 0.05 0 0 0 +2097152 0 1 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 1 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0 +2097152 0 1 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 1 0 0 6553600 5242880 5242880 0.1 0.25 0 0 0 +2097152 0 1 0 0 6815744 5242880 5242880 0.1 0.3 0 0 0 +2097152 0 1 0 0 7077888 5242880 5242880 0.1 0.35 0 0 0 +2097152 0 1 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0 +2097152 0 1 0 0 7602176 5242880 5242880 0.1 0.45 0 0 0 +2097152 0 1 0 0 7864320 5242880 5242880 0.1 0.5 0 0 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 0 +2097152 0 2 0 0 4063232 5242880 5242880 0.1 -0.225 0 0 0 +2097152 0 2 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 2 0 0 4325376 5242880 5242880 0.1 -0.175 0 0 0 +2097152 0 2 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0 +2097152 0 2 0 0 4587520 5242880 5242880 0.1 -0.125 0 0 0 +2097152 0 2 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 2 0 0 4849664 5242880 5242880 0.1 -0.075 0 0 0 +2097152 0 2 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 0 +2097152 0 2 0 0 5111808 5242880 5242880 0.1 -0.025 0 0 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5373952 5242880 5242880 0.1 0.025 0 0 0 +2097152 0 2 0 0 5505024 5242880 5242880 0.1 0.05 0 0 0 +2097152 0 2 0 0 5636096 5242880 5242880 0.1 0.075 0 0 0 +2097152 0 2 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 2 0 0 5898240 5242880 5242880 0.1 0.125 0 0 0 +2097152 0 2 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0 +2097152 0 2 0 0 6160384 5242880 5242880 0.1 0.175 0 0 0 +2097152 0 2 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 2 0 0 6422528 5242880 5242880 0.1 0.225 0 0 0 +2097152 0 2 0 0 6553600 5242880 5242880 0.1 0.25 0 0 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.y.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.y.asc new file mode 100644 index 000000000..a43d3a4c4 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.y.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiy y (phiy) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 0 5242880 0 0 -1 0 0 +0 0 0 0 0 5242880 524288 5242880 0 0 -0.9 0 0 +0 0 0 0 0 5242880 1048576 5242880 0 0 -0.8 0 0 +0 0 0 0 0 5242880 1572864 5242880 0 0 -0.7 0 0 +0 0 0 0 0 5242880 2097152 5242880 0 0 -0.6 0 0 +0 0 0 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 0 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 0 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 0 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 0 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 0 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 0 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 0 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 0 0 0 5242880 7864320 5242880 0 0 0.5 0 0 +0 0 0 0 0 5242880 8388608 5242880 0 0 0.6 0 0 +0 0 0 0 0 5242880 8912896 5242880 0 0 0.7 0 0 +0 0 0 0 0 5242880 9437184 5242880 0 0 0.8 0 0 +0 0 0 0 0 5242880 9961472 5242880 0 0 0.9 0 0 +0 0 0 0 0 5242880 10485760 5242880 0 0 1 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 1 0 0 5242880 2883584 5242880 0 0 -0.45 0 0 +0 0 1 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 1 0 0 5242880 3407872 5242880 0 0 -0.35 0 0 +0 0 1 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 1 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 1 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 1 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 1 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 1 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 1 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 1 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 1 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 1 0 0 5242880 6553600 5242880 0 0 0.25 0 0 +0 0 1 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 1 0 0 5242880 7077888 5242880 0 0 0.35 0 0 +0 0 1 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 1 0 0 5242880 7602176 5242880 0 0 0.45 0 0 +0 0 1 0 0 5242880 7864320 5242880 0 0 0.5 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 2 0 0 5242880 4063232 5242880 0 0 -0.225 0 0 +0 0 2 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 2 0 0 5242880 4325376 5242880 0 0 -0.175 0 0 +0 0 2 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 2 0 0 5242880 4587520 5242880 0 0 -0.125 0 0 +0 0 2 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 2 0 0 5242880 4849664 5242880 0 0 -0.075 0 0 +0 0 2 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 2 0 0 5242880 5111808 5242880 0 0 -0.025 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5373952 5242880 0 0 0.025 0 0 +0 0 2 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 2 0 0 5242880 5636096 5242880 0 0 0.075 0 0 +0 0 2 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 2 0 0 5242880 5898240 5242880 0 0 0.125 0 0 +0 0 2 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 2 0 0 5242880 6160384 5242880 0 0 0.175 0 0 +0 0 2 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 2 0 0 5242880 6422528 5242880 0 0 0.225 0 0 +0 0 2 0 0 5242880 6553600 5242880 0 0 0.25 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 3932160 5242880 0.00625 0 -0.25 0 8.51287040805251e-10 +131072 0 2 0 0 5242880 4063232 5242880 0.00625 0 -0.225 0 4.78848960452953e-10 +131072 0 2 0 0 5242880 4194304 5242880 0.00625 0 -0.2 0 0 +131072 0 2 0 0 5242880 4325376 5242880 0.00625 0 -0.175 0 2.43032142559095e-09 +131072 0 2 0 0 5242880 4456448 5242880 0.00625 0 -0.15 0 0 +131072 0 2 0 0 5242880 4587520 5242880 0.00625 0 -0.125 0 -2.23517417907715e-08 +131072 0 2 0 0 5242880 4718592 5242880 0.00625 0 -0.1 0 0 +131072 0 2 0 0 5242880 4849664 5242880 0.00625 0 -0.075 0 0 +131072 0 2 0 0 5242880 4980736 5242880 0.00625 0 -0.05 0 0 +131072 0 2 0 0 5242880 5111808 5242880 0.00625 0 -0.025 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5373952 5242880 0.00625 0 0.025 0 0 +131072 0 2 0 0 5242880 5505024 5242880 0.00625 0 0.05 0 0 +131072 0 2 0 0 5242880 5636096 5242880 0.00625 0 0.075 0 0 +131072 0 2 0 0 5242880 5767168 5242880 0.00625 0 0.1 0 0 +131072 0 2 0 0 5242880 5898240 5242880 0.00625 0 0.125 0 2.23517417907715e-08 +131072 0 2 0 0 5242880 6029312 5242880 0.00625 0 0.15 0 0 +131072 0 2 0 0 5242880 6160384 5242880 0.00625 0 0.175 0 -2.43032142559095e-09 +131072 0 2 0 0 5242880 6291456 5242880 0.00625 0 0.2 0 0 +131072 0 2 0 0 5242880 6422528 5242880 0.00625 0 0.225 0 -4.78848960452953e-10 +131072 0 2 0 0 5242880 6553600 5242880 0.00625 0 0.25 0 -8.51287040805251e-10 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 2621440 5242880 0.0125 0 -0.5 0 0 +262144 0 1 0 0 5242880 2883584 5242880 0.0125 0 -0.45 0 0 +262144 0 1 0 0 5242880 3145728 5242880 0.0125 0 -0.4 0 0 +262144 0 1 0 0 5242880 3407872 5242880 0.0125 0 -0.35 0 1.94025536558925e-11 +262144 0 1 0 0 5242880 3670016 5242880 0.0125 0 -0.3 0 0 +262144 0 1 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 2.27009877548067e-09 +262144 0 1 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 1 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 1 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 3.88051095886096e-11 +262144 0 1 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 1 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 -3.88051095886096e-11 +262144 0 1 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 1 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 1 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 -2.27009877548067e-09 +262144 0 1 0 0 5242880 6815744 5242880 0.0125 0 0.3 0 0 +262144 0 1 0 0 5242880 7077888 5242880 0.0125 0 0.35 0 -1.94025536558925e-11 +262144 0 1 0 0 5242880 7340032 5242880 0.0125 0 0.4 0 0 +262144 0 1 0 0 5242880 7602176 5242880 0.0125 0 0.45 0 0 +262144 0 1 0 0 5242880 7864320 5242880 0.0125 0 0.5 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 2.27009877548067e-09 +262144 0 2 0 0 5242880 4063232 5242880 0.0125 0 -0.225 0 1.27693056120788e-09 +262144 0 2 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 2 0 0 5242880 4325376 5242880 0.0125 0 -0.175 0 -1.4430649281683e-10 +262144 0 2 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 2 0 0 5242880 4587520 5242880 0.0125 0 -0.125 0 2.18278741435929e-11 +262144 0 2 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 3.88051095886096e-11 +262144 0 2 0 0 5242880 4849664 5242880 0.0125 0 -0.075 0 -1.74622982740402e-10 +262144 0 2 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 2 0 0 5242880 5111808 5242880 0.0125 0 -0.025 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5373952 5242880 0.0125 0 0.025 0 0 +262144 0 2 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 2 0 0 5242880 5636096 5242880 0.0125 0 0.075 0 1.74622982740402e-10 +262144 0 2 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 -3.88051095886096e-11 +262144 0 2 0 0 5242880 5898240 5242880 0.0125 0 0.125 0 -2.18278741435929e-11 +262144 0 2 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 2 0 0 5242880 6160384 5242880 0.0125 0 0.175 0 1.4430649281683e-10 +262144 0 2 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 2 0 0 5242880 6422528 5242880 0.0125 0 0.225 0 -1.27693056120788e-09 +262144 0 2 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 -2.27009877548067e-09 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 3932160 5242880 0.01875 0 -0.25 0 1.7025740816105e-09 +393216 0 2 0 0 5242880 4063232 5242880 0.01875 0 -0.225 0 9.59262773157592e-10 +393216 0 2 0 0 5242880 4194304 5242880 0.01875 0 -0.2 0 1.80060419699424e-11 +393216 0 2 0 0 5242880 4325376 5242880 0.01875 0 -0.175 0 -2.20306178830874e-11 +393216 0 2 0 0 5242880 4456448 5242880 0.01875 0 -0.15 0 1.37016741702522e-10 +393216 0 2 0 0 5242880 4587520 5242880 0.01875 0 -0.125 0 1.09369182438833e-10 +393216 0 2 0 0 5242880 4718592 5242880 0.01875 0 -0.1 0 -1.55569968944095e-10 +393216 0 2 0 0 5242880 4849664 5242880 0.01875 0 -0.075 0 -5.14533776696524e-10 +393216 0 2 0 0 5242880 4980736 5242880 0.01875 0 -0.05 0 -1.05031724058809e-14 +393216 0 2 0 0 5242880 5111808 5242880 0.01875 0 -0.025 0 -3.1663930736651e-12 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5373952 5242880 0.01875 0 0.025 0 3.1663930736651e-12 +393216 0 2 0 0 5242880 5505024 5242880 0.01875 0 0.05 0 1.05031724058809e-14 +393216 0 2 0 0 5242880 5636096 5242880 0.01875 0 0.075 0 5.14533776696524e-10 +393216 0 2 0 0 5242880 5767168 5242880 0.01875 0 0.1 0 1.55569968944095e-10 +393216 0 2 0 0 5242880 5898240 5242880 0.01875 0 0.125 0 -1.09369182438833e-10 +393216 0 2 0 0 5242880 6029312 5242880 0.01875 0 0.15 0 -1.37016741702522e-10 +393216 0 2 0 0 5242880 6160384 5242880 0.01875 0 0.175 0 2.20306178830874e-11 +393216 0 2 0 0 5242880 6291456 5242880 0.01875 0 0.2 0 -1.80060419699424e-11 +393216 0 2 0 0 5242880 6422528 5242880 0.01875 0 0.225 0 -9.59262773157592e-10 +393216 0 2 0 0 5242880 6553600 5242880 0.01875 0 0.25 0 -1.7025740816105e-09 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 0 5242880 0.025 0 -1 0 0 +524288 0 0 0 0 5242880 524288 5242880 0.025 0 -0.9 0 0 +524288 0 0 0 0 5242880 1048576 5242880 0.025 0 -0.8 0 0 +524288 0 0 0 0 5242880 1572864 5242880 0.025 0 -0.7 0 0 +524288 0 0 0 0 5242880 2097152 5242880 0.025 0 -0.6 0 0 +524288 0 0 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 0 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 0 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 0 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 4.80161119198463e-11 +524288 0 0 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 -3.71976833594504e-10 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5767168 5242880 0.025 0 0.1 0 3.71976833594504e-10 +524288 0 0 0 0 5242880 6291456 5242880 0.025 0 0.2 0 -4.80161119198463e-11 +524288 0 0 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 0 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 0 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 +524288 0 0 0 0 5242880 8388608 5242880 0.025 0 0.6 0 0 +524288 0 0 0 0 5242880 8912896 5242880 0.025 0 0.7 0 0 +524288 0 0 0 0 5242880 9437184 5242880 0.025 0 0.8 0 0 +524288 0 0 0 0 5242880 9961472 5242880 0.025 0 0.9 0 0 +524288 0 0 0 0 5242880 10485760 5242880 0.025 0 1 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 1 0 0 5242880 2883584 5242880 0.025 0 -0.45 0 0 +524288 0 1 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 1 0 0 5242880 3407872 5242880 0.025 0 -0.35 0 -3.0010069949904e-12 +524288 0 1 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 1 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 5.02576150545701e-11 +524288 0 1 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 4.80161119198463e-11 +524288 0 1 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 3.65377977873393e-10 +524288 0 1 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 -3.71976833594504e-10 +524288 0 1 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 -2.64427137593633e-12 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5505024 5242880 0.025 0 0.05 0 2.64427137593633e-12 +524288 0 1 0 0 5242880 5767168 5242880 0.025 0 0.1 0 3.71976833594504e-10 +524288 0 1 0 0 5242880 6029312 5242880 0.025 0 0.15 0 -3.65377977873393e-10 +524288 0 1 0 0 5242880 6291456 5242880 0.025 0 0.2 0 -4.80161119198463e-11 +524288 0 1 0 0 5242880 6553600 5242880 0.025 0 0.25 0 -5.02576150545701e-11 +524288 0 1 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 1 0 0 5242880 7077888 5242880 0.025 0 0.35 0 3.0010069949904e-12 +524288 0 1 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 1 0 0 5242880 7602176 5242880 0.025 0 0.45 0 0 +524288 0 1 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 5.02576150545701e-11 +524288 0 2 0 0 5242880 4063232 5242880 0.025 0 -0.225 0 3.24428478060221e-11 +524288 0 2 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 4.80161119198463e-11 +524288 0 2 0 0 5242880 4325376 5242880 0.025 0 -0.175 0 2.52641626667443e-10 +524288 0 2 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 3.65377977873393e-10 +524288 0 2 0 0 5242880 4587520 5242880 0.025 0 -0.125 0 -6.54759637711926e-12 +524288 0 2 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 -3.71976833594504e-10 +524288 0 2 0 0 5242880 4849664 5242880 0.025 0 -0.075 0 -8.34775128651562e-10 +524288 0 2 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 -2.64427137593633e-12 +524288 0 2 0 0 5242880 5111808 5242880 0.025 0 -0.025 0 -1.42062519155791e-11 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5373952 5242880 0.025 0 0.025 0 1.42062519155791e-11 +524288 0 2 0 0 5242880 5505024 5242880 0.025 0 0.05 0 2.64427137593633e-12 +524288 0 2 0 0 5242880 5636096 5242880 0.025 0 0.075 0 8.34775128651562e-10 +524288 0 2 0 0 5242880 5767168 5242880 0.025 0 0.1 0 3.71976833594504e-10 +524288 0 2 0 0 5242880 5898240 5242880 0.025 0 0.125 0 6.54759637711926e-12 +524288 0 2 0 0 5242880 6029312 5242880 0.025 0 0.15 0 -3.65377977873393e-10 +524288 0 2 0 0 5242880 6160384 5242880 0.025 0 0.175 0 -2.52641626667443e-10 +524288 0 2 0 0 5242880 6291456 5242880 0.025 0 0.2 0 -4.80161119198463e-11 +524288 0 2 0 0 5242880 6422528 5242880 0.025 0 0.225 0 -3.24428478060221e-11 +524288 0 2 0 0 5242880 6553600 5242880 0.025 0 0.25 0 -5.02576150545701e-11 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 3932160 5242880 0.03125 0 -0.25 0 -2.03283184165604e-10 +655360 0 2 0 0 5242880 4063232 5242880 0.03125 0 -0.225 0 -1.10218192534204e-10 +655360 0 2 0 0 5242880 4194304 5242880 0.03125 0 -0.2 0 6.71560801759896e-11 +655360 0 2 0 0 5242880 4325376 5242880 0.03125 0 -0.175 0 3.81864711955078e-10 +655360 0 2 0 0 5242880 4456448 5242880 0.03125 0 -0.15 0 5.43200962509205e-10 +655360 0 2 0 0 5242880 4587520 5242880 0.03125 0 -0.125 0 7.64770232818818e-11 +655360 0 2 0 0 5242880 4718592 5242880 0.03125 0 -0.1 0 -5.39370936802896e-10 +655360 0 2 0 0 5242880 4849664 5242880 0.03125 0 -0.075 0 -1.12595637443332e-09 +655360 0 2 0 0 5242880 4980736 5242880 0.03125 0 -0.05 0 -1.12561372260049e-11 +655360 0 2 0 0 5242880 5111808 5242880 0.03125 0 -0.025 0 -3.75721814771524e-11 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5373952 5242880 0.03125 0 0.025 0 3.75721814771524e-11 +655360 0 2 0 0 5242880 5505024 5242880 0.03125 0 0.05 0 1.12561372260049e-11 +655360 0 2 0 0 5242880 5636096 5242880 0.03125 0 0.075 0 1.12595637443332e-09 +655360 0 2 0 0 5242880 5767168 5242880 0.03125 0 0.1 0 5.39370936802896e-10 +655360 0 2 0 0 5242880 5898240 5242880 0.03125 0 0.125 0 -7.64770232818818e-11 +655360 0 2 0 0 5242880 6029312 5242880 0.03125 0 0.15 0 -5.43200962509205e-10 +655360 0 2 0 0 5242880 6160384 5242880 0.03125 0 0.175 0 -3.81864711955078e-10 +655360 0 2 0 0 5242880 6291456 5242880 0.03125 0 0.2 0 -6.71560801759896e-11 +655360 0 2 0 0 5242880 6422528 5242880 0.03125 0 0.225 0 1.10218192534204e-10 +655360 0 2 0 0 5242880 6553600 5242880 0.03125 0 0.25 0 2.03283184165604e-10 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 2621440 5242880 0.0375 0 -0.5 0 -3.17246229286638e-14 +786432 0 1 0 0 5242880 2883584 5242880 0.0375 0 -0.45 0 1.04805866676244e-12 +786432 0 1 0 0 5242880 3145728 5242880 0.0375 0 -0.4 0 4.56771773182929e-13 +786432 0 1 0 0 5242880 3407872 5242880 0.0375 0 -0.35 0 -1.77414430260585e-11 +786432 0 1 0 0 5242880 3670016 5242880 0.0375 0 -0.3 0 -1.29435143159107e-11 +786432 0 1 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 1.14095870609471e-10 +786432 0 1 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 8.3050656629613e-11 +786432 0 1 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 7.1777994427776e-10 +786432 0 1 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 -6.90806513844085e-10 +786432 0 1 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 -2.86001292093552e-11 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 2.86001292093552e-11 +786432 0 1 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 6.90806513844085e-10 +786432 0 1 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 -7.1777994427776e-10 +786432 0 1 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 -8.3050656629613e-11 +786432 0 1 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 -1.14095870609471e-10 +786432 0 1 0 0 5242880 6815744 5242880 0.0375 0 0.3 0 1.29435143159107e-11 +786432 0 1 0 0 5242880 7077888 5242880 0.0375 0 0.35 0 1.77414430260585e-11 +786432 0 1 0 0 5242880 7340032 5242880 0.0375 0 0.4 0 -4.56771773182929e-13 +786432 0 1 0 0 5242880 7602176 5242880 0.0375 0 0.45 0 -1.04805866676244e-12 +786432 0 1 0 0 5242880 7864320 5242880 0.0375 0 0.5 0 3.17246229286638e-14 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 1.14095870609471e-10 +786432 0 2 0 0 5242880 4063232 5242880 0.0375 0 -0.225 0 6.68426446993694e-11 +786432 0 2 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 8.3050656629613e-11 +786432 0 2 0 0 5242880 4325376 5242880 0.0375 0 -0.175 0 4.8651162821256e-10 +786432 0 2 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 7.1777994427776e-10 +786432 0 2 0 0 5242880 4587520 5242880 0.0375 0 -0.125 0 1.17693966551757e-11 +786432 0 2 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 -6.90806513844085e-10 +786432 0 2 0 0 5242880 4849664 5242880 0.0375 0 -0.075 0 -1.37983248438278e-09 +786432 0 2 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 -2.86001292093552e-11 +786432 0 2 0 0 5242880 5111808 5242880 0.0375 0 -0.025 0 -7.6696357598216e-11 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5373952 5242880 0.0375 0 0.025 0 7.6696357598216e-11 +786432 0 2 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 2.86001292093552e-11 +786432 0 2 0 0 5242880 5636096 5242880 0.0375 0 0.075 0 1.37983248438278e-09 +786432 0 2 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 6.90806513844085e-10 +786432 0 2 0 0 5242880 5898240 5242880 0.0375 0 0.125 0 -1.17693966551757e-11 +786432 0 2 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 -7.1777994427776e-10 +786432 0 2 0 0 5242880 6160384 5242880 0.0375 0 0.175 0 -4.8651162821256e-10 +786432 0 2 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 -8.3050656629613e-11 +786432 0 2 0 0 5242880 6422528 5242880 0.0375 0 0.225 0 -6.68426446993694e-11 +786432 0 2 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 -1.14095870609471e-10 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 3932160 5242880 0.04375 0 -0.25 0 1.55692360393826e-10 +917504 0 2 0 0 5242880 4063232 5242880 0.04375 0 -0.225 0 8.98292153340505e-11 +917504 0 2 0 0 5242880 4194304 5242880 0.04375 0 -0.2 0 9.87482959985408e-11 +917504 0 2 0 0 5242880 4325376 5242880 0.04375 0 -0.175 0 5.82061050143167e-10 +917504 0 2 0 0 5242880 4456448 5242880 0.04375 0 -0.15 0 8.7534961223934e-10 +917504 0 2 0 0 5242880 4587520 5242880 0.04375 0 -0.125 0 9.97820270600842e-11 +917504 0 2 0 0 5242880 4718592 5242880 0.04375 0 -0.1 0 -7.99350738378557e-10 +917504 0 2 0 0 5242880 4849664 5242880 0.04375 0 -0.075 0 -1.58914841471199e-09 +917504 0 2 0 0 5242880 4980736 5242880 0.04375 0 -0.05 0 -5.6796509625053e-11 +917504 0 2 0 0 5242880 5111808 5242880 0.04375 0 -0.025 0 -1.33697386495157e-10 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5373952 5242880 0.04375 0 0.025 0 1.33697386495157e-10 +917504 0 2 0 0 5242880 5505024 5242880 0.04375 0 0.05 0 5.6796509625053e-11 +917504 0 2 0 0 5242880 5636096 5242880 0.04375 0 0.075 0 1.58914841471199e-09 +917504 0 2 0 0 5242880 5767168 5242880 0.04375 0 0.1 0 7.99350738378557e-10 +917504 0 2 0 0 5242880 5898240 5242880 0.04375 0 0.125 0 -9.97820270600842e-11 +917504 0 2 0 0 5242880 6029312 5242880 0.04375 0 0.15 0 -8.7534961223934e-10 +917504 0 2 0 0 5242880 6160384 5242880 0.04375 0 0.175 0 -5.82061050143167e-10 +917504 0 2 0 0 5242880 6291456 5242880 0.04375 0 0.2 0 -9.87482959985408e-11 +917504 0 2 0 0 5242880 6422528 5242880 0.04375 0 0.225 0 -8.98292153340505e-11 +917504 0 2 0 0 5242880 6553600 5242880 0.04375 0 0.25 0 -1.55692360393826e-10 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 0 5242880 0.05 0 -1 0 0 +1048576 0 0 0 0 5242880 524288 5242880 0.05 0 -0.9 0 0 +1048576 0 0 0 0 5242880 1048576 5242880 0.05 0 -0.8 0 0 +1048576 0 0 0 0 5242880 1572864 5242880 0.05 0 -0.7 0 0 +1048576 0 0 0 0 5242880 2097152 5242880 0.05 0 -0.6 0 0 +1048576 0 0 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 -8.45989944764369e-14 +1048576 0 0 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 1.21805806182114e-12 +1048576 0 0 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 -3.45160381757618e-11 +1048576 0 0 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.13232846710165e-10 +1048576 0 0 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 -8.77529424125889e-10 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5767168 5242880 0.05 0 0.1 0 8.77529424125889e-10 +1048576 0 0 0 0 5242880 6291456 5242880 0.05 0 0.2 0 -1.13232846710165e-10 +1048576 0 0 0 0 5242880 6815744 5242880 0.05 0 0.3 0 3.45160381757618e-11 +1048576 0 0 0 0 5242880 7340032 5242880 0.05 0 0.4 0 -1.21805806182114e-12 +1048576 0 0 0 0 5242880 7864320 5242880 0.05 0 0.5 0 8.45989944764369e-14 +1048576 0 0 0 0 5242880 8388608 5242880 0.05 0 0.6 0 0 +1048576 0 0 0 0 5242880 8912896 5242880 0.05 0 0.7 0 0 +1048576 0 0 0 0 5242880 9437184 5242880 0.05 0 0.8 0 0 +1048576 0 0 0 0 5242880 9961472 5242880 0.05 0 0.9 0 0 +1048576 0 0 0 0 5242880 10485760 5242880 0.05 0 1 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 -8.45989944764369e-14 +1048576 0 1 0 0 5242880 2883584 5242880 0.05 0 -0.45 0 2.79482311136651e-12 +1048576 0 1 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 1.21805806182114e-12 +1048576 0 1 0 0 5242880 3407872 5242880 0.05 0 -0.35 0 -2.58018792963222e-11 +1048576 0 1 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 -3.45160381757618e-11 +1048576 0 1 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 9.90476651796061e-11 +1048576 0 1 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.13232846710165e-10 +1048576 0 1 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 1.02049840337385e-09 +1048576 0 1 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 -8.77529424125889e-10 +1048576 0 1 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 -9.69948542780171e-11 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5505024 5242880 0.05 0 0.05 0 9.69948542780171e-11 +1048576 0 1 0 0 5242880 5767168 5242880 0.05 0 0.1 0 8.77529424125889e-10 +1048576 0 1 0 0 5242880 6029312 5242880 0.05 0 0.15 0 -1.02049840337385e-09 +1048576 0 1 0 0 5242880 6291456 5242880 0.05 0 0.2 0 -1.13232846710165e-10 +1048576 0 1 0 0 5242880 6553600 5242880 0.05 0 0.25 0 -9.90476651796061e-11 +1048576 0 1 0 0 5242880 6815744 5242880 0.05 0 0.3 0 3.45160381757618e-11 +1048576 0 1 0 0 5242880 7077888 5242880 0.05 0 0.35 0 2.58018792963222e-11 +1048576 0 1 0 0 5242880 7340032 5242880 0.05 0 0.4 0 -1.21805806182114e-12 +1048576 0 1 0 0 5242880 7602176 5242880 0.05 0 0.45 0 -2.79482311136651e-12 +1048576 0 1 0 0 5242880 7864320 5242880 0.05 0 0.5 0 8.45989944764369e-14 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 9.90476651796061e-11 +1048576 0 2 0 0 5242880 4063232 5242880 0.05 0 -0.225 0 5.77838901131156e-11 +1048576 0 2 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 1.13232846710165e-10 +1048576 0 2 0 0 5242880 4325376 5242880 0.05 0 -0.175 0 6.86378938106402e-10 +1048576 0 2 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 1.02049840337385e-09 +1048576 0 2 0 0 5242880 4587520 5242880 0.05 0 -0.125 0 7.940517629997e-11 +1048576 0 2 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 -8.77529424125889e-10 +1048576 0 2 0 0 5242880 4849664 5242880 0.05 0 -0.075 0 -1.74812777216834e-09 +1048576 0 2 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 -9.69948542780171e-11 +1048576 0 2 0 0 5242880 5111808 5242880 0.05 0 -0.025 0 -2.09176403050589e-10 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5373952 5242880 0.05 0 0.025 0 2.09176403050589e-10 +1048576 0 2 0 0 5242880 5505024 5242880 0.05 0 0.05 0 9.69948542780171e-11 +1048576 0 2 0 0 5242880 5636096 5242880 0.05 0 0.075 0 1.74812777216834e-09 +1048576 0 2 0 0 5242880 5767168 5242880 0.05 0 0.1 0 8.77529424125889e-10 +1048576 0 2 0 0 5242880 5898240 5242880 0.05 0 0.125 0 -7.940517629997e-11 +1048576 0 2 0 0 5242880 6029312 5242880 0.05 0 0.15 0 -1.02049840337385e-09 +1048576 0 2 0 0 5242880 6160384 5242880 0.05 0 0.175 0 -6.86378938106402e-10 +1048576 0 2 0 0 5242880 6291456 5242880 0.05 0 0.2 0 -1.13232846710165e-10 +1048576 0 2 0 0 5242880 6422528 5242880 0.05 0 0.225 0 -5.77838901131156e-11 +1048576 0 2 0 0 5242880 6553600 5242880 0.05 0 0.25 0 -9.90476651796061e-11 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 3932160 5242880 0.05625 0 -0.25 0 1.16100548303662e-10 +1179648 0 2 0 0 5242880 4063232 5242880 0.05625 0 -0.225 0 6.10234773446789e-11 +1179648 0 2 0 0 5242880 4194304 5242880 0.05625 0 -0.2 0 1.15569069071564e-10 +1179648 0 2 0 0 5242880 4325376 5242880 0.05625 0 -0.175 0 7.57218084160716e-10 +1179648 0 2 0 0 5242880 4456448 5242880 0.05625 0 -0.15 0 1.14978515973243e-09 +1179648 0 2 0 0 5242880 4587520 5242880 0.05625 0 -0.125 0 1.76389248042821e-10 +1179648 0 2 0 0 5242880 4718592 5242880 0.05625 0 -0.1 0 -9.02082302374948e-10 +1179648 0 2 0 0 5242880 4849664 5242880 0.05625 0 -0.075 0 -1.85227602700344e-09 +1179648 0 2 0 0 5242880 4980736 5242880 0.05625 0 -0.05 0 -1.4924199145024e-10 +1179648 0 2 0 0 5242880 5111808 5242880 0.05625 0 -0.025 0 -3.02089459928527e-10 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5373952 5242880 0.05625 0 0.025 0 3.02089459928527e-10 +1179648 0 2 0 0 5242880 5505024 5242880 0.05625 0 0.05 0 1.4924199145024e-10 +1179648 0 2 0 0 5242880 5636096 5242880 0.05625 0 0.075 0 1.85227602700344e-09 +1179648 0 2 0 0 5242880 5767168 5242880 0.05625 0 0.1 0 9.02082302374948e-10 +1179648 0 2 0 0 5242880 5898240 5242880 0.05625 0 0.125 0 -1.76389248042821e-10 +1179648 0 2 0 0 5242880 6029312 5242880 0.05625 0 0.15 0 -1.14978515973243e-09 +1179648 0 2 0 0 5242880 6160384 5242880 0.05625 0 0.175 0 -7.57218084160716e-10 +1179648 0 2 0 0 5242880 6291456 5242880 0.05625 0 0.2 0 -1.15569069071564e-10 +1179648 0 2 0 0 5242880 6422528 5242880 0.05625 0 0.225 0 -6.10234773446789e-11 +1179648 0 2 0 0 5242880 6553600 5242880 0.05625 0 0.25 0 -1.16100548303662e-10 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 2621440 5242880 0.0625 0 -0.5 0 -3.04437898501764e-13 +1310720 0 1 0 0 5242880 2883584 5242880 0.0625 0 -0.45 0 4.38967709837784e-12 +1310720 0 1 0 0 5242880 3145728 5242880 0.0625 0 -0.4 0 3.11205401726244e-12 +1310720 0 1 0 0 5242880 3407872 5242880 0.0625 0 -0.35 0 -3.66809800849549e-11 +1310720 0 1 0 0 5242880 3670016 5242880 0.0625 0 -0.3 0 -4.49737374078052e-11 +1310720 0 1 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 1.49538088653709e-10 +1310720 0 1 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.09402042980378e-10 +1310720 0 1 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 1.26435693396469e-09 +1310720 0 1 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 -8.82571386343993e-10 +1310720 0 1 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 -2.12154000385952e-10 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 2.12154000385952e-10 +1310720 0 1 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 8.82571386343993e-10 +1310720 0 1 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 -1.26435693396469e-09 +1310720 0 1 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 -1.09402042980378e-10 +1310720 0 1 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 -1.49538088653709e-10 +1310720 0 1 0 0 5242880 6815744 5242880 0.0625 0 0.3 0 4.49737374078052e-11 +1310720 0 1 0 0 5242880 7077888 5242880 0.0625 0 0.35 0 3.66809800849549e-11 +1310720 0 1 0 0 5242880 7340032 5242880 0.0625 0 0.4 0 -3.11205401726244e-12 +1310720 0 1 0 0 5242880 7602176 5242880 0.0625 0 0.45 0 -4.38967709837784e-12 +1310720 0 1 0 0 5242880 7864320 5242880 0.0625 0 0.5 0 3.04437898501764e-13 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 1.49538088653709e-10 +1310720 0 2 0 0 5242880 4063232 5242880 0.0625 0 -0.225 0 6.94423742593689e-11 +1310720 0 2 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 1.09402042980378e-10 +1310720 0 2 0 0 5242880 4325376 5242880 0.0625 0 -0.175 0 8.18554005637242e-10 +1310720 0 2 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 1.26435693396469e-09 +1310720 0 2 0 0 5242880 4587520 5242880 0.0625 0 -0.125 0 2.21176367874489e-10 +1310720 0 2 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 -8.82571386343993e-10 +1310720 0 2 0 0 5242880 4849664 5242880 0.0625 0 -0.075 0 -1.89863267700356e-09 +1310720 0 2 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 -2.12154000385952e-10 +1310720 0 2 0 0 5242880 5111808 5242880 0.0625 0 -0.025 0 -4.09720003295237e-10 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5373952 5242880 0.0625 0 0.025 0 4.09720003295237e-10 +1310720 0 2 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 2.12154000385952e-10 +1310720 0 2 0 0 5242880 5636096 5242880 0.0625 0 0.075 0 1.89863267700356e-09 +1310720 0 2 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 8.82571386343993e-10 +1310720 0 2 0 0 5242880 5898240 5242880 0.0625 0 0.125 0 -2.21176367874489e-10 +1310720 0 2 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 -1.26435693396469e-09 +1310720 0 2 0 0 5242880 6160384 5242880 0.0625 0 0.175 0 -8.18554005637242e-10 +1310720 0 2 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 -1.09402042980378e-10 +1310720 0 2 0 0 5242880 6422528 5242880 0.0625 0 0.225 0 -6.94423742593689e-11 +1310720 0 2 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 -1.49538088653709e-10 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 3932160 5242880 0.06875 0 -0.25 0 1.81307149993657e-10 +1441792 0 2 0 0 5242880 4063232 5242880 0.06875 0 -0.225 0 7.7773652278003e-11 +1441792 0 2 0 0 5242880 4194304 5242880 0.06875 0 -0.2 0 1.03259930987754e-10 +1441792 0 2 0 0 5242880 4325376 5242880 0.06875 0 -0.175 0 8.64003737307137e-10 +1441792 0 2 0 0 5242880 4456448 5242880 0.06875 0 -0.15 0 1.36522779944452e-09 +1441792 0 2 0 0 5242880 4587520 5242880 0.06875 0 -0.125 0 3.34266718489435e-10 +1441792 0 2 0 0 5242880 4718592 5242880 0.06875 0 -0.1 0 -8.06391597015418e-10 +1441792 0 2 0 0 5242880 4849664 5242880 0.06875 0 -0.075 0 -1.88530306181415e-09 +1441792 0 2 0 0 5242880 4980736 5242880 0.06875 0 -0.05 0 -2.82855130521546e-10 +1441792 0 2 0 0 5242880 5111808 5242880 0.06875 0 -0.025 0 -5.27734009270198e-10 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5373952 5242880 0.06875 0 0.025 0 5.27734009270198e-10 +1441792 0 2 0 0 5242880 5505024 5242880 0.06875 0 0.05 0 2.82855130521546e-10 +1441792 0 2 0 0 5242880 5636096 5242880 0.06875 0 0.075 0 1.88530306181415e-09 +1441792 0 2 0 0 5242880 5767168 5242880 0.06875 0 0.1 0 8.06391597015418e-10 +1441792 0 2 0 0 5242880 5898240 5242880 0.06875 0 0.125 0 -3.34266718489435e-10 +1441792 0 2 0 0 5242880 6029312 5242880 0.06875 0 0.15 0 -1.36522779944452e-09 +1441792 0 2 0 0 5242880 6160384 5242880 0.06875 0 0.175 0 -8.64003737307137e-10 +1441792 0 2 0 0 5242880 6291456 5242880 0.06875 0 0.2 0 -1.03259930987754e-10 +1441792 0 2 0 0 5242880 6422528 5242880 0.06875 0 0.225 0 -7.7773652278003e-11 +1441792 0 2 0 0 5242880 6553600 5242880 0.06875 0 0.25 0 -1.81307149993657e-10 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 0 5242880 0.075 0 -1 0 0 +1572864 0 0 0 0 5242880 524288 5242880 0.075 0 -0.9 0 0 +1572864 0 0 0 0 5242880 1048576 5242880 0.075 0 -0.8 0 0 +1572864 0 0 0 0 5242880 1572864 5242880 0.075 0 -0.7 0 -1.35771024053118e-15 +1572864 0 0 0 0 5242880 2097152 5242880 0.075 0 -0.6 0 1.98637402822518e-14 +1572864 0 0 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 -6.42636407051829e-13 +1572864 0 0 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 5.86269458905756e-12 +1572864 0 0 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 -5.08978900692902e-11 +1572864 0 0 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 9.43000122433091e-11 +1572864 0 0 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 -6.75829822660567e-10 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5767168 5242880 0.075 0 0.1 0 6.75829822660567e-10 +1572864 0 0 0 0 5242880 6291456 5242880 0.075 0 0.2 0 -9.43000122433091e-11 +1572864 0 0 0 0 5242880 6815744 5242880 0.075 0 0.3 0 5.08978900692902e-11 +1572864 0 0 0 0 5242880 7340032 5242880 0.075 0 0.4 0 -5.86269458905756e-12 +1572864 0 0 0 0 5242880 7864320 5242880 0.075 0 0.5 0 6.42636407051829e-13 +1572864 0 0 0 0 5242880 8388608 5242880 0.075 0 0.6 0 -1.98637402822518e-14 +1572864 0 0 0 0 5242880 8912896 5242880 0.075 0 0.7 0 1.35771024053118e-15 +1572864 0 0 0 0 5242880 9437184 5242880 0.075 0 0.8 0 0 +1572864 0 0 0 0 5242880 9961472 5242880 0.075 0 0.9 0 0 +1572864 0 0 0 0 5242880 10485760 5242880 0.075 0 1 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 -6.42636407051829e-13 +1572864 0 1 0 0 5242880 2883584 5242880 0.075 0 -0.45 0 6.11615937294123e-12 +1572864 0 1 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 5.86269458905756e-12 +1572864 0 1 0 0 5242880 3407872 5242880 0.075 0 -0.35 0 -3.1185883447397e-11 +1572864 0 1 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 -5.08978900692902e-11 +1572864 0 1 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 6.6286639227355e-11 +1572864 0 1 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 9.43000122433091e-11 +1572864 0 1 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 1.45205973171395e-09 +1572864 0 1 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 -6.75829822660567e-10 +1572864 0 1 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 -3.56851564501752e-10 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5505024 5242880 0.075 0 0.05 0 3.56851564501752e-10 +1572864 0 1 0 0 5242880 5767168 5242880 0.075 0 0.1 0 6.75829822660567e-10 +1572864 0 1 0 0 5242880 6029312 5242880 0.075 0 0.15 0 -1.45205973171395e-09 +1572864 0 1 0 0 5242880 6291456 5242880 0.075 0 0.2 0 -9.43000122433091e-11 +1572864 0 1 0 0 5242880 6553600 5242880 0.075 0 0.25 0 -6.6286639227355e-11 +1572864 0 1 0 0 5242880 6815744 5242880 0.075 0 0.3 0 5.08978900692902e-11 +1572864 0 1 0 0 5242880 7077888 5242880 0.075 0 0.35 0 3.1185883447397e-11 +1572864 0 1 0 0 5242880 7340032 5242880 0.075 0 0.4 0 -5.86269458905756e-12 +1572864 0 1 0 0 5242880 7602176 5242880 0.075 0 0.45 0 -6.11615937294123e-12 +1572864 0 1 0 0 5242880 7864320 5242880 0.075 0 0.5 0 6.42636407051829e-13 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 6.6286639227355e-11 +1572864 0 2 0 0 5242880 4063232 5242880 0.075 0 -0.225 0 2.75737634945702e-12 +1572864 0 2 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 9.43000122433091e-11 +1572864 0 2 0 0 5242880 4325376 5242880 0.075 0 -0.175 0 9.07923804940536e-10 +1572864 0 2 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 1.45205973171395e-09 +1572864 0 2 0 0 5242880 4587520 5242880 0.075 0 -0.125 0 4.53038795858683e-10 +1572864 0 2 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 -6.75829822660567e-10 +1572864 0 2 0 0 5242880 4849664 5242880 0.075 0 -0.075 0 -1.8117351507918e-09 +1572864 0 2 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 -3.56851564501752e-10 +1572864 0 2 0 0 5242880 5111808 5242880 0.075 0 -0.025 0 -6.50323827196727e-10 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5373952 5242880 0.075 0 0.025 0 6.50323827196727e-10 +1572864 0 2 0 0 5242880 5505024 5242880 0.075 0 0.05 0 3.56851564501752e-10 +1572864 0 2 0 0 5242880 5636096 5242880 0.075 0 0.075 0 1.8117351507918e-09 +1572864 0 2 0 0 5242880 5767168 5242880 0.075 0 0.1 0 6.75829822660567e-10 +1572864 0 2 0 0 5242880 5898240 5242880 0.075 0 0.125 0 -4.53038795858683e-10 +1572864 0 2 0 0 5242880 6029312 5242880 0.075 0 0.15 0 -1.45205973171395e-09 +1572864 0 2 0 0 5242880 6160384 5242880 0.075 0 0.175 0 -9.07923804940536e-10 +1572864 0 2 0 0 5242880 6291456 5242880 0.075 0 0.2 0 -9.43000122433091e-11 +1572864 0 2 0 0 5242880 6422528 5242880 0.075 0 0.225 0 -2.75737634945702e-12 +1572864 0 2 0 0 5242880 6553600 5242880 0.075 0 0.25 0 -6.6286639227355e-11 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 3932160 5242880 0.08125 0 -0.25 0 6.96062224198494e-11 +1703936 0 2 0 0 5242880 4063232 5242880 0.08125 0 -0.225 0 -1.10388286118339e-11 +1703936 0 2 0 0 5242880 4194304 5242880 0.08125 0 -0.2 0 7.52374759716012e-11 +1703936 0 2 0 0 5242880 4325376 5242880 0.08125 0 -0.175 0 9.3008305679465e-10 +1703936 0 2 0 0 5242880 4456448 5242880 0.08125 0 -0.15 0 1.52889975737573e-09 +1703936 0 2 0 0 5242880 4587520 5242880 0.08125 0 -0.125 0 5.89320989216024e-10 +1703936 0 2 0 0 5242880 4718592 5242880 0.08125 0 -0.1 0 -4.94475691873812e-10 +1703936 0 2 0 0 5242880 4849664 5242880 0.08125 0 -0.075 0 -1.67817614897074e-09 +1703936 0 2 0 0 5242880 4980736 5242880 0.08125 0 -0.05 0 -4.281106418443e-10 +1703936 0 2 0 0 5242880 5111808 5242880 0.08125 0 -0.025 0 -7.70426056284634e-10 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5373952 5242880 0.08125 0 0.025 0 7.70426056284634e-10 +1703936 0 2 0 0 5242880 5505024 5242880 0.08125 0 0.05 0 4.281106418443e-10 +1703936 0 2 0 0 5242880 5636096 5242880 0.08125 0 0.075 0 1.67817614897074e-09 +1703936 0 2 0 0 5242880 5767168 5242880 0.08125 0 0.1 0 4.94475691873812e-10 +1703936 0 2 0 0 5242880 5898240 5242880 0.08125 0 0.125 0 -5.89320989216024e-10 +1703936 0 2 0 0 5242880 6029312 5242880 0.08125 0 0.15 0 -1.52889975737573e-09 +1703936 0 2 0 0 5242880 6160384 5242880 0.08125 0 0.175 0 -9.3008305679465e-10 +1703936 0 2 0 0 5242880 6291456 5242880 0.08125 0 0.2 0 -7.52374759716012e-11 +1703936 0 2 0 0 5242880 6422528 5242880 0.08125 0 0.225 0 1.10388286118339e-11 +1703936 0 2 0 0 5242880 6553600 5242880 0.08125 0 0.25 0 -6.96062224198494e-11 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 2621440 5242880 0.0875 0 -0.5 0 -1.14959691072114e-12 +1835008 0 1 0 0 5242880 2883584 5242880 0.0875 0 -0.45 0 7.22601572039165e-12 +1835008 0 1 0 0 5242880 3145728 5242880 0.0875 0 -0.4 0 9.22265678178953e-12 +1835008 0 1 0 0 5242880 3407872 5242880 0.0875 0 -0.35 0 -2.91131087878753e-11 +1835008 0 1 0 0 5242880 3670016 5242880 0.0875 0 -0.3 0 -4.30227031662326e-11 +1835008 0 1 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.02889344216125e-10 +1835008 0 1 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 4.8500592431111e-11 +1835008 0 1 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 1.59439886756226e-09 +1835008 0 1 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 -2.54991675922393e-10 +1835008 0 1 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 -4.89255647569594e-10 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 4.89255647569594e-10 +1835008 0 1 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 2.54991675922393e-10 +1835008 0 1 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 -1.59439886756226e-09 +1835008 0 1 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 -4.8500592431111e-11 +1835008 0 1 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 -1.02889344216125e-10 +1835008 0 1 0 0 5242880 6815744 5242880 0.0875 0 0.3 0 4.30227031662326e-11 +1835008 0 1 0 0 5242880 7077888 5242880 0.0875 0 0.35 0 2.91131087878753e-11 +1835008 0 1 0 0 5242880 7340032 5242880 0.0875 0 0.4 0 -9.22265678178953e-12 +1835008 0 1 0 0 5242880 7602176 5242880 0.0875 0 0.45 0 -7.22601572039165e-12 +1835008 0 1 0 0 5242880 7864320 5242880 0.0875 0 0.5 0 1.14959691072114e-12 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 1.02889344216125e-10 +1835008 0 2 0 0 5242880 4063232 5242880 0.0875 0 -0.225 0 -1.18041709106814e-11 +1835008 0 2 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 4.8500592431111e-11 +1835008 0 2 0 0 5242880 4325376 5242880 0.0875 0 -0.175 0 9.33637341977913e-10 +1835008 0 2 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 1.59439886756226e-09 +1835008 0 2 0 0 5242880 4587520 5242880 0.0875 0 -0.125 0 7.8096373624358e-10 +1835008 0 2 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 -2.54991675922393e-10 +1835008 0 2 0 0 5242880 4849664 5242880 0.0875 0 -0.075 0 -1.48597429731427e-09 +1835008 0 2 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 -4.89255647569594e-10 +1835008 0 2 0 0 5242880 5111808 5242880 0.0875 0 -0.025 0 -8.8000695156835e-10 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5373952 5242880 0.0875 0 0.025 0 8.8000695156835e-10 +1835008 0 2 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 4.89255647569594e-10 +1835008 0 2 0 0 5242880 5636096 5242880 0.0875 0 0.075 0 1.48597429731427e-09 +1835008 0 2 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 2.54991675922393e-10 +1835008 0 2 0 0 5242880 5898240 5242880 0.0875 0 0.125 0 -7.8096373624358e-10 +1835008 0 2 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 -1.59439886756226e-09 +1835008 0 2 0 0 5242880 6160384 5242880 0.0875 0 0.175 0 -9.33637341977913e-10 +1835008 0 2 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 -4.8500592431111e-11 +1835008 0 2 0 0 5242880 6422528 5242880 0.0875 0 0.225 0 1.18041709106814e-11 +1835008 0 2 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 -1.02889344216125e-10 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 3932160 5242880 0.09375 0 -0.25 0 1.34436501201734e-10 +1966080 0 2 0 0 5242880 4063232 5242880 0.09375 0 -0.225 0 -1.03885846193062e-11 +1966080 0 2 0 0 5242880 4194304 5242880 0.09375 0 -0.2 0 2.69188612372906e-11 +1966080 0 2 0 0 5242880 4325376 5242880 0.09375 0 -0.175 0 9.38286274781054e-10 +1966080 0 2 0 0 5242880 4456448 5242880 0.09375 0 -0.15 0 1.65348419736237e-09 +1966080 0 2 0 0 5242880 4587520 5242880 0.09375 0 -0.125 0 9.42916074141038e-10 +1966080 0 2 0 0 5242880 4718592 5242880 0.09375 0 -0.1 0 2.10926091407752e-11 +1966080 0 2 0 0 5242880 4849664 5242880 0.09375 0 -0.075 0 -1.23712620703209e-09 +1966080 0 2 0 0 5242880 4980736 5242880 0.09375 0 -0.05 0 -5.31834245624345e-10 +1966080 0 2 0 0 5242880 5111808 5242880 0.09375 0 -0.025 0 -9.7040738870439e-10 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5373952 5242880 0.09375 0 0.025 0 9.7040738870439e-10 +1966080 0 2 0 0 5242880 5505024 5242880 0.09375 0 0.05 0 5.31834245624345e-10 +1966080 0 2 0 0 5242880 5636096 5242880 0.09375 0 0.075 0 1.23712620703209e-09 +1966080 0 2 0 0 5242880 5767168 5242880 0.09375 0 0.1 0 -2.10926091407752e-11 +1966080 0 2 0 0 5242880 5898240 5242880 0.09375 0 0.125 0 -9.42916074141038e-10 +1966080 0 2 0 0 5242880 6029312 5242880 0.09375 0 0.15 0 -1.65348419736237e-09 +1966080 0 2 0 0 5242880 6160384 5242880 0.09375 0 0.175 0 -9.38286274781054e-10 +1966080 0 2 0 0 5242880 6291456 5242880 0.09375 0 0.2 0 -2.69188612372906e-11 +1966080 0 2 0 0 5242880 6422528 5242880 0.09375 0 0.225 0 1.03885846193062e-11 +1966080 0 2 0 0 5242880 6553600 5242880 0.09375 0 0.25 0 -1.34436501201734e-10 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 0 5242880 0.1 0 -1 0 0 +2097152 0 0 0 0 5242880 524288 5242880 0.1 0 -0.9 0 -2.31296463463574e-17 +2097152 0 0 0 0 5242880 1048576 5242880 0.1 0 -0.8 0 3.46944695195361e-16 +2097152 0 0 0 0 5242880 1572864 5242880 0.1 0 -0.7 0 -1.33434929772136e-14 +2097152 0 0 0 0 5242880 2097152 5242880 0.1 0 -0.6 0 1.30913798320383e-13 +2097152 0 0 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 -1.80851861264486e-12 +2097152 0 0 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 1.32743815939307e-11 +2097152 0 0 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 -2.44367743632938e-11 +2097152 0 0 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 6.21578251832252e-12 +2097152 0 0 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 3.4977364523255e-10 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5767168 5242880 0.1 0 0.1 0 -3.4977364523255e-10 +2097152 0 0 0 0 5242880 6291456 5242880 0.1 0 0.2 0 -6.21578251832252e-12 +2097152 0 0 0 0 5242880 6815744 5242880 0.1 0 0.3 0 2.44367743632938e-11 +2097152 0 0 0 0 5242880 7340032 5242880 0.1 0 0.4 0 -1.32743815939307e-11 +2097152 0 0 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.80851861264486e-12 +2097152 0 0 0 0 5242880 8388608 5242880 0.1 0 0.6 0 -1.30913798320383e-13 +2097152 0 0 0 0 5242880 8912896 5242880 0.1 0 0.7 0 1.33434929772136e-14 +2097152 0 0 0 0 5242880 9437184 5242880 0.1 0 0.8 0 -3.46944695195361e-16 +2097152 0 0 0 0 5242880 9961472 5242880 0.1 0 0.9 0 2.31296463463574e-17 +2097152 0 0 0 0 5242880 10485760 5242880 0.1 0 1 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 -1.80851861264486e-12 +2097152 0 1 0 0 5242880 2883584 5242880 0.1 0 -0.45 0 7.96866421228411e-12 +2097152 0 1 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 1.32743815939307e-11 +2097152 0 1 0 0 5242880 3407872 5242880 0.1 0 -0.35 0 -6.55429992687158e-12 +2097152 0 1 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 -2.44367743632938e-11 +2097152 0 1 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 -3.29398095894514e-11 +2097152 0 1 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 6.21578251832252e-12 +2097152 0 1 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 1.70451336841312e-09 +2097152 0 1 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 3.4977364523255e-10 +2097152 0 1 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 -5.46878123804569e-10 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5505024 5242880 0.1 0 0.05 0 5.46878123804569e-10 +2097152 0 1 0 0 5242880 5767168 5242880 0.1 0 0.1 0 -3.4977364523255e-10 +2097152 0 1 0 0 5242880 6029312 5242880 0.1 0 0.15 0 -1.70451336841312e-09 +2097152 0 1 0 0 5242880 6291456 5242880 0.1 0 0.2 0 -6.21578251832252e-12 +2097152 0 1 0 0 5242880 6553600 5242880 0.1 0 0.25 0 3.29398095894514e-11 +2097152 0 1 0 0 5242880 6815744 5242880 0.1 0 0.3 0 2.44367743632938e-11 +2097152 0 1 0 0 5242880 7077888 5242880 0.1 0 0.35 0 6.55429992687158e-12 +2097152 0 1 0 0 5242880 7340032 5242880 0.1 0 0.4 0 -1.32743815939307e-11 +2097152 0 1 0 0 5242880 7602176 5242880 0.1 0 0.45 0 -7.96866421228411e-12 +2097152 0 1 0 0 5242880 7864320 5242880 0.1 0 0.5 0 1.80851861264486e-12 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 -3.29398095894514e-11 +2097152 0 2 0 0 5242880 4063232 5242880 0.1 0 -0.225 0 -1.20037052355624e-10 +2097152 0 2 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 6.21578251832252e-12 +2097152 0 2 0 0 5242880 4325376 5242880 0.1 0 -0.175 0 9.4248303267124e-10 +2097152 0 2 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 1.70451336841312e-09 +2097152 0 2 0 0 5242880 4587520 5242880 0.1 0 -0.125 0 1.18932784150608e-09 +2097152 0 2 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 3.4977364523255e-10 +2097152 0 2 0 0 5242880 4849664 5242880 0.1 0 -0.075 0 -9.3463225122233e-10 +2097152 0 2 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 -5.46878123804569e-10 +2097152 0 2 0 0 5242880 5111808 5242880 0.1 0 -0.025 0 -1.03273274654203e-09 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5373952 5242880 0.1 0 0.025 0 1.03273274654203e-09 +2097152 0 2 0 0 5242880 5505024 5242880 0.1 0 0.05 0 5.46878123804569e-10 +2097152 0 2 0 0 5242880 5636096 5242880 0.1 0 0.075 0 9.3463225122233e-10 +2097152 0 2 0 0 5242880 5767168 5242880 0.1 0 0.1 0 -3.4977364523255e-10 +2097152 0 2 0 0 5242880 5898240 5242880 0.1 0 0.125 0 -1.18932784150608e-09 +2097152 0 2 0 0 5242880 6029312 5242880 0.1 0 0.15 0 -1.70451336841312e-09 +2097152 0 2 0 0 5242880 6160384 5242880 0.1 0 0.175 0 -9.4248303267124e-10 +2097152 0 2 0 0 5242880 6291456 5242880 0.1 0 0.2 0 -6.21578251832252e-12 +2097152 0 2 0 0 5242880 6422528 5242880 0.1 0 0.225 0 1.20037052355624e-10 +2097152 0 2 0 0 5242880 6553600 5242880 0.1 0 0.25 0 3.29398095894514e-11 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiy.z.asc b/Carpet/CarpetInterp/test/waveinterp/phiy.z.asc new file mode 100644 index 000000000..00d322570 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiy.z.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiy z (phiy) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 0 0 0 0 -1 0 +0 0 0 0 0 5242880 5242880 524288 0 0 0 -0.9 0 +0 0 0 0 0 5242880 5242880 1048576 0 0 0 -0.8 0 +0 0 0 0 0 5242880 5242880 1572864 0 0 0 -0.7 0 +0 0 0 0 0 5242880 5242880 2097152 0 0 0 -0.6 0 +0 0 0 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 0 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 0 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 0 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 0 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 0 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 0 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 0 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 0 0 0 5242880 5242880 7864320 0 0 0 0.5 0 +0 0 0 0 0 5242880 5242880 8388608 0 0 0 0.6 0 +0 0 0 0 0 5242880 5242880 8912896 0 0 0 0.7 0 +0 0 0 0 0 5242880 5242880 9437184 0 0 0 0.8 0 +0 0 0 0 0 5242880 5242880 9961472 0 0 0 0.9 0 +0 0 0 0 0 5242880 5242880 10485760 0 0 0 1 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 1 0 0 5242880 5242880 2883584 0 0 0 -0.45 0 +0 0 1 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 1 0 0 5242880 5242880 3407872 0 0 0 -0.35 0 +0 0 1 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 1 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 1 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 1 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 1 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 1 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 1 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 1 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 1 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 1 0 0 5242880 5242880 6553600 0 0 0 0.25 0 +0 0 1 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 1 0 0 5242880 5242880 7077888 0 0 0 0.35 0 +0 0 1 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 1 0 0 5242880 5242880 7602176 0 0 0 0.45 0 +0 0 1 0 0 5242880 5242880 7864320 0 0 0 0.5 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 2 0 0 5242880 5242880 4063232 0 0 0 -0.225 0 +0 0 2 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 2 0 0 5242880 5242880 4325376 0 0 0 -0.175 0 +0 0 2 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 2 0 0 5242880 5242880 4587520 0 0 0 -0.125 0 +0 0 2 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 2 0 0 5242880 5242880 4849664 0 0 0 -0.075 0 +0 0 2 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 2 0 0 5242880 5242880 5111808 0 0 0 -0.025 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5242880 5373952 0 0 0 0.025 0 +0 0 2 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 2 0 0 5242880 5242880 5636096 0 0 0 0.075 0 +0 0 2 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 2 0 0 5242880 5242880 5898240 0 0 0 0.125 0 +0 0 2 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 2 0 0 5242880 5242880 6160384 0 0 0 0.175 0 +0 0 2 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 2 0 0 5242880 5242880 6422528 0 0 0 0.225 0 +0 0 2 0 0 5242880 5242880 6553600 0 0 0 0.25 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 3932160 0.00625 0 0 -0.25 0 +131072 0 2 0 0 5242880 5242880 4063232 0.00625 0 0 -0.225 0 +131072 0 2 0 0 5242880 5242880 4194304 0.00625 0 0 -0.2 0 +131072 0 2 0 0 5242880 5242880 4325376 0.00625 0 0 -0.175 0 +131072 0 2 0 0 5242880 5242880 4456448 0.00625 0 0 -0.15 0 +131072 0 2 0 0 5242880 5242880 4587520 0.00625 0 0 -0.125 0 +131072 0 2 0 0 5242880 5242880 4718592 0.00625 0 0 -0.1 0 +131072 0 2 0 0 5242880 5242880 4849664 0.00625 0 0 -0.075 0 +131072 0 2 0 0 5242880 5242880 4980736 0.00625 0 0 -0.05 0 +131072 0 2 0 0 5242880 5242880 5111808 0.00625 0 0 -0.025 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5242880 5373952 0.00625 0 0 0.025 0 +131072 0 2 0 0 5242880 5242880 5505024 0.00625 0 0 0.05 0 +131072 0 2 0 0 5242880 5242880 5636096 0.00625 0 0 0.075 0 +131072 0 2 0 0 5242880 5242880 5767168 0.00625 0 0 0.1 0 +131072 0 2 0 0 5242880 5242880 5898240 0.00625 0 0 0.125 0 +131072 0 2 0 0 5242880 5242880 6029312 0.00625 0 0 0.15 0 +131072 0 2 0 0 5242880 5242880 6160384 0.00625 0 0 0.175 0 +131072 0 2 0 0 5242880 5242880 6291456 0.00625 0 0 0.2 0 +131072 0 2 0 0 5242880 5242880 6422528 0.00625 0 0 0.225 0 +131072 0 2 0 0 5242880 5242880 6553600 0.00625 0 0 0.25 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 2621440 0.0125 0 0 -0.5 0 +262144 0 1 0 0 5242880 5242880 2883584 0.0125 0 0 -0.45 0 +262144 0 1 0 0 5242880 5242880 3145728 0.0125 0 0 -0.4 0 +262144 0 1 0 0 5242880 5242880 3407872 0.0125 0 0 -0.35 0 +262144 0 1 0 0 5242880 5242880 3670016 0.0125 0 0 -0.3 0 +262144 0 1 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 0 +262144 0 1 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 1 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 1 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 0 +262144 0 1 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 1 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 0 +262144 0 1 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 1 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 1 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 0 +262144 0 1 0 0 5242880 5242880 6815744 0.0125 0 0 0.3 0 +262144 0 1 0 0 5242880 5242880 7077888 0.0125 0 0 0.35 0 +262144 0 1 0 0 5242880 5242880 7340032 0.0125 0 0 0.4 0 +262144 0 1 0 0 5242880 5242880 7602176 0.0125 0 0 0.45 0 +262144 0 1 0 0 5242880 5242880 7864320 0.0125 0 0 0.5 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 0 +262144 0 2 0 0 5242880 5242880 4063232 0.0125 0 0 -0.225 0 +262144 0 2 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 2 0 0 5242880 5242880 4325376 0.0125 0 0 -0.175 0 +262144 0 2 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 2 0 0 5242880 5242880 4587520 0.0125 0 0 -0.125 0 +262144 0 2 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 0 +262144 0 2 0 0 5242880 5242880 4849664 0.0125 0 0 -0.075 0 +262144 0 2 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 2 0 0 5242880 5242880 5111808 0.0125 0 0 -0.025 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5242880 5373952 0.0125 0 0 0.025 0 +262144 0 2 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 2 0 0 5242880 5242880 5636096 0.0125 0 0 0.075 0 +262144 0 2 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 0 +262144 0 2 0 0 5242880 5242880 5898240 0.0125 0 0 0.125 0 +262144 0 2 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 2 0 0 5242880 5242880 6160384 0.0125 0 0 0.175 0 +262144 0 2 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 2 0 0 5242880 5242880 6422528 0.0125 0 0 0.225 0 +262144 0 2 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 3932160 0.01875 0 0 -0.25 0 +393216 0 2 0 0 5242880 5242880 4063232 0.01875 0 0 -0.225 0 +393216 0 2 0 0 5242880 5242880 4194304 0.01875 0 0 -0.2 0 +393216 0 2 0 0 5242880 5242880 4325376 0.01875 0 0 -0.175 0 +393216 0 2 0 0 5242880 5242880 4456448 0.01875 0 0 -0.15 0 +393216 0 2 0 0 5242880 5242880 4587520 0.01875 0 0 -0.125 0 +393216 0 2 0 0 5242880 5242880 4718592 0.01875 0 0 -0.1 0 +393216 0 2 0 0 5242880 5242880 4849664 0.01875 0 0 -0.075 0 +393216 0 2 0 0 5242880 5242880 4980736 0.01875 0 0 -0.05 0 +393216 0 2 0 0 5242880 5242880 5111808 0.01875 0 0 -0.025 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5242880 5373952 0.01875 0 0 0.025 0 +393216 0 2 0 0 5242880 5242880 5505024 0.01875 0 0 0.05 0 +393216 0 2 0 0 5242880 5242880 5636096 0.01875 0 0 0.075 0 +393216 0 2 0 0 5242880 5242880 5767168 0.01875 0 0 0.1 0 +393216 0 2 0 0 5242880 5242880 5898240 0.01875 0 0 0.125 0 +393216 0 2 0 0 5242880 5242880 6029312 0.01875 0 0 0.15 0 +393216 0 2 0 0 5242880 5242880 6160384 0.01875 0 0 0.175 0 +393216 0 2 0 0 5242880 5242880 6291456 0.01875 0 0 0.2 0 +393216 0 2 0 0 5242880 5242880 6422528 0.01875 0 0 0.225 0 +393216 0 2 0 0 5242880 5242880 6553600 0.01875 0 0 0.25 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 0 0.025 0 0 -1 0 +524288 0 0 0 0 5242880 5242880 524288 0.025 0 0 -0.9 0 +524288 0 0 0 0 5242880 5242880 1048576 0.025 0 0 -0.8 0 +524288 0 0 0 0 5242880 5242880 1572864 0.025 0 0 -0.7 0 +524288 0 0 0 0 5242880 5242880 2097152 0.025 0 0 -0.6 0 +524288 0 0 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 0 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 0 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 0 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 0 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 0 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 0 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 0 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 0 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 +524288 0 0 0 0 5242880 5242880 8388608 0.025 0 0 0.6 0 +524288 0 0 0 0 5242880 5242880 8912896 0.025 0 0 0.7 0 +524288 0 0 0 0 5242880 5242880 9437184 0.025 0 0 0.8 0 +524288 0 0 0 0 5242880 5242880 9961472 0.025 0 0 0.9 0 +524288 0 0 0 0 5242880 5242880 10485760 0.025 0 0 1 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 1 0 0 5242880 5242880 2883584 0.025 0 0 -0.45 0 +524288 0 1 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 1 0 0 5242880 5242880 3407872 0.025 0 0 -0.35 0 +524288 0 1 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 1 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0 +524288 0 1 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 1 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 0 +524288 0 1 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 1 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5242880 5505024 0.025 0 0 0.05 0 +524288 0 1 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 1 0 0 5242880 5242880 6029312 0.025 0 0 0.15 0 +524288 0 1 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 1 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0 +524288 0 1 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 1 0 0 5242880 5242880 7077888 0.025 0 0 0.35 0 +524288 0 1 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 1 0 0 5242880 5242880 7602176 0.025 0 0 0.45 0 +524288 0 1 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 0 +524288 0 2 0 0 5242880 5242880 4063232 0.025 0 0 -0.225 0 +524288 0 2 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 0 +524288 0 2 0 0 5242880 5242880 4325376 0.025 0 0 -0.175 0 +524288 0 2 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 0 +524288 0 2 0 0 5242880 5242880 4587520 0.025 0 0 -0.125 0 +524288 0 2 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 0 +524288 0 2 0 0 5242880 5242880 4849664 0.025 0 0 -0.075 0 +524288 0 2 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 0 +524288 0 2 0 0 5242880 5242880 5111808 0.025 0 0 -0.025 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5242880 5373952 0.025 0 0 0.025 0 +524288 0 2 0 0 5242880 5242880 5505024 0.025 0 0 0.05 0 +524288 0 2 0 0 5242880 5242880 5636096 0.025 0 0 0.075 0 +524288 0 2 0 0 5242880 5242880 5767168 0.025 0 0 0.1 0 +524288 0 2 0 0 5242880 5242880 5898240 0.025 0 0 0.125 0 +524288 0 2 0 0 5242880 5242880 6029312 0.025 0 0 0.15 0 +524288 0 2 0 0 5242880 5242880 6160384 0.025 0 0 0.175 0 +524288 0 2 0 0 5242880 5242880 6291456 0.025 0 0 0.2 0 +524288 0 2 0 0 5242880 5242880 6422528 0.025 0 0 0.225 0 +524288 0 2 0 0 5242880 5242880 6553600 0.025 0 0 0.25 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 3932160 0.03125 0 0 -0.25 0 +655360 0 2 0 0 5242880 5242880 4063232 0.03125 0 0 -0.225 0 +655360 0 2 0 0 5242880 5242880 4194304 0.03125 0 0 -0.2 0 +655360 0 2 0 0 5242880 5242880 4325376 0.03125 0 0 -0.175 0 +655360 0 2 0 0 5242880 5242880 4456448 0.03125 0 0 -0.15 0 +655360 0 2 0 0 5242880 5242880 4587520 0.03125 0 0 -0.125 0 +655360 0 2 0 0 5242880 5242880 4718592 0.03125 0 0 -0.1 0 +655360 0 2 0 0 5242880 5242880 4849664 0.03125 0 0 -0.075 0 +655360 0 2 0 0 5242880 5242880 4980736 0.03125 0 0 -0.05 0 +655360 0 2 0 0 5242880 5242880 5111808 0.03125 0 0 -0.025 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5242880 5373952 0.03125 0 0 0.025 0 +655360 0 2 0 0 5242880 5242880 5505024 0.03125 0 0 0.05 0 +655360 0 2 0 0 5242880 5242880 5636096 0.03125 0 0 0.075 0 +655360 0 2 0 0 5242880 5242880 5767168 0.03125 0 0 0.1 0 +655360 0 2 0 0 5242880 5242880 5898240 0.03125 0 0 0.125 0 +655360 0 2 0 0 5242880 5242880 6029312 0.03125 0 0 0.15 0 +655360 0 2 0 0 5242880 5242880 6160384 0.03125 0 0 0.175 0 +655360 0 2 0 0 5242880 5242880 6291456 0.03125 0 0 0.2 0 +655360 0 2 0 0 5242880 5242880 6422528 0.03125 0 0 0.225 0 +655360 0 2 0 0 5242880 5242880 6553600 0.03125 0 0 0.25 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 2621440 0.0375 0 0 -0.5 0 +786432 0 1 0 0 5242880 5242880 2883584 0.0375 0 0 -0.45 0 +786432 0 1 0 0 5242880 5242880 3145728 0.0375 0 0 -0.4 0 +786432 0 1 0 0 5242880 5242880 3407872 0.0375 0 0 -0.35 0 +786432 0 1 0 0 5242880 5242880 3670016 0.0375 0 0 -0.3 0 +786432 0 1 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0 +786432 0 1 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0 +786432 0 1 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0 +786432 0 1 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 0 +786432 0 1 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 0 +786432 0 1 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 0 +786432 0 1 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0 +786432 0 1 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0 +786432 0 1 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0 +786432 0 1 0 0 5242880 5242880 6815744 0.0375 0 0 0.3 0 +786432 0 1 0 0 5242880 5242880 7077888 0.0375 0 0 0.35 0 +786432 0 1 0 0 5242880 5242880 7340032 0.0375 0 0 0.4 0 +786432 0 1 0 0 5242880 5242880 7602176 0.0375 0 0 0.45 0 +786432 0 1 0 0 5242880 5242880 7864320 0.0375 0 0 0.5 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 0 +786432 0 2 0 0 5242880 5242880 4063232 0.0375 0 0 -0.225 0 +786432 0 2 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 0 +786432 0 2 0 0 5242880 5242880 4325376 0.0375 0 0 -0.175 0 +786432 0 2 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 0 +786432 0 2 0 0 5242880 5242880 4587520 0.0375 0 0 -0.125 0 +786432 0 2 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 0 +786432 0 2 0 0 5242880 5242880 4849664 0.0375 0 0 -0.075 0 +786432 0 2 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 0 +786432 0 2 0 0 5242880 5242880 5111808 0.0375 0 0 -0.025 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5242880 5373952 0.0375 0 0 0.025 0 +786432 0 2 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 0 +786432 0 2 0 0 5242880 5242880 5636096 0.0375 0 0 0.075 0 +786432 0 2 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 0 +786432 0 2 0 0 5242880 5242880 5898240 0.0375 0 0 0.125 0 +786432 0 2 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 0 +786432 0 2 0 0 5242880 5242880 6160384 0.0375 0 0 0.175 0 +786432 0 2 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 0 +786432 0 2 0 0 5242880 5242880 6422528 0.0375 0 0 0.225 0 +786432 0 2 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 3932160 0.04375 0 0 -0.25 0 +917504 0 2 0 0 5242880 5242880 4063232 0.04375 0 0 -0.225 0 +917504 0 2 0 0 5242880 5242880 4194304 0.04375 0 0 -0.2 0 +917504 0 2 0 0 5242880 5242880 4325376 0.04375 0 0 -0.175 0 +917504 0 2 0 0 5242880 5242880 4456448 0.04375 0 0 -0.15 0 +917504 0 2 0 0 5242880 5242880 4587520 0.04375 0 0 -0.125 0 +917504 0 2 0 0 5242880 5242880 4718592 0.04375 0 0 -0.1 0 +917504 0 2 0 0 5242880 5242880 4849664 0.04375 0 0 -0.075 0 +917504 0 2 0 0 5242880 5242880 4980736 0.04375 0 0 -0.05 0 +917504 0 2 0 0 5242880 5242880 5111808 0.04375 0 0 -0.025 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5242880 5373952 0.04375 0 0 0.025 0 +917504 0 2 0 0 5242880 5242880 5505024 0.04375 0 0 0.05 0 +917504 0 2 0 0 5242880 5242880 5636096 0.04375 0 0 0.075 0 +917504 0 2 0 0 5242880 5242880 5767168 0.04375 0 0 0.1 0 +917504 0 2 0 0 5242880 5242880 5898240 0.04375 0 0 0.125 0 +917504 0 2 0 0 5242880 5242880 6029312 0.04375 0 0 0.15 0 +917504 0 2 0 0 5242880 5242880 6160384 0.04375 0 0 0.175 0 +917504 0 2 0 0 5242880 5242880 6291456 0.04375 0 0 0.2 0 +917504 0 2 0 0 5242880 5242880 6422528 0.04375 0 0 0.225 0 +917504 0 2 0 0 5242880 5242880 6553600 0.04375 0 0 0.25 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 0 0.05 0 0 -1 0 +1048576 0 0 0 0 5242880 5242880 524288 0.05 0 0 -0.9 0 +1048576 0 0 0 0 5242880 5242880 1048576 0.05 0 0 -0.8 0 +1048576 0 0 0 0 5242880 5242880 1572864 0.05 0 0 -0.7 0 +1048576 0 0 0 0 5242880 5242880 2097152 0.05 0 0 -0.6 0 +1048576 0 0 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 0 +1048576 0 0 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0 +1048576 0 0 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 0 +1048576 0 0 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 0 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 0 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 0 0 0 5242880 5242880 6815744 0.05 0 0 0.3 0 +1048576 0 0 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0 +1048576 0 0 0 0 5242880 5242880 7864320 0.05 0 0 0.5 0 +1048576 0 0 0 0 5242880 5242880 8388608 0.05 0 0 0.6 0 +1048576 0 0 0 0 5242880 5242880 8912896 0.05 0 0 0.7 0 +1048576 0 0 0 0 5242880 5242880 9437184 0.05 0 0 0.8 0 +1048576 0 0 0 0 5242880 5242880 9961472 0.05 0 0 0.9 0 +1048576 0 0 0 0 5242880 5242880 10485760 0.05 0 0 1 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 0 +1048576 0 1 0 0 5242880 5242880 2883584 0.05 0 0 -0.45 0 +1048576 0 1 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 0 +1048576 0 1 0 0 5242880 5242880 3407872 0.05 0 0 -0.35 0 +1048576 0 1 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 0 +1048576 0 1 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0 +1048576 0 1 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 1 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0 +1048576 0 1 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 1 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5242880 5505024 0.05 0 0 0.05 0 +1048576 0 1 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 1 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0 +1048576 0 1 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 1 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0 +1048576 0 1 0 0 5242880 5242880 6815744 0.05 0 0 0.3 0 +1048576 0 1 0 0 5242880 5242880 7077888 0.05 0 0 0.35 0 +1048576 0 1 0 0 5242880 5242880 7340032 0.05 0 0 0.4 0 +1048576 0 1 0 0 5242880 5242880 7602176 0.05 0 0 0.45 0 +1048576 0 1 0 0 5242880 5242880 7864320 0.05 0 0 0.5 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 0 +1048576 0 2 0 0 5242880 5242880 4063232 0.05 0 0 -0.225 0 +1048576 0 2 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 0 +1048576 0 2 0 0 5242880 5242880 4325376 0.05 0 0 -0.175 0 +1048576 0 2 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 0 +1048576 0 2 0 0 5242880 5242880 4587520 0.05 0 0 -0.125 0 +1048576 0 2 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 0 +1048576 0 2 0 0 5242880 5242880 4849664 0.05 0 0 -0.075 0 +1048576 0 2 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 0 +1048576 0 2 0 0 5242880 5242880 5111808 0.05 0 0 -0.025 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5242880 5373952 0.05 0 0 0.025 0 +1048576 0 2 0 0 5242880 5242880 5505024 0.05 0 0 0.05 0 +1048576 0 2 0 0 5242880 5242880 5636096 0.05 0 0 0.075 0 +1048576 0 2 0 0 5242880 5242880 5767168 0.05 0 0 0.1 0 +1048576 0 2 0 0 5242880 5242880 5898240 0.05 0 0 0.125 0 +1048576 0 2 0 0 5242880 5242880 6029312 0.05 0 0 0.15 0 +1048576 0 2 0 0 5242880 5242880 6160384 0.05 0 0 0.175 0 +1048576 0 2 0 0 5242880 5242880 6291456 0.05 0 0 0.2 0 +1048576 0 2 0 0 5242880 5242880 6422528 0.05 0 0 0.225 0 +1048576 0 2 0 0 5242880 5242880 6553600 0.05 0 0 0.25 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 3932160 0.05625 0 0 -0.25 0 +1179648 0 2 0 0 5242880 5242880 4063232 0.05625 0 0 -0.225 0 +1179648 0 2 0 0 5242880 5242880 4194304 0.05625 0 0 -0.2 0 +1179648 0 2 0 0 5242880 5242880 4325376 0.05625 0 0 -0.175 0 +1179648 0 2 0 0 5242880 5242880 4456448 0.05625 0 0 -0.15 0 +1179648 0 2 0 0 5242880 5242880 4587520 0.05625 0 0 -0.125 0 +1179648 0 2 0 0 5242880 5242880 4718592 0.05625 0 0 -0.1 0 +1179648 0 2 0 0 5242880 5242880 4849664 0.05625 0 0 -0.075 0 +1179648 0 2 0 0 5242880 5242880 4980736 0.05625 0 0 -0.05 0 +1179648 0 2 0 0 5242880 5242880 5111808 0.05625 0 0 -0.025 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5242880 5373952 0.05625 0 0 0.025 0 +1179648 0 2 0 0 5242880 5242880 5505024 0.05625 0 0 0.05 0 +1179648 0 2 0 0 5242880 5242880 5636096 0.05625 0 0 0.075 0 +1179648 0 2 0 0 5242880 5242880 5767168 0.05625 0 0 0.1 0 +1179648 0 2 0 0 5242880 5242880 5898240 0.05625 0 0 0.125 0 +1179648 0 2 0 0 5242880 5242880 6029312 0.05625 0 0 0.15 0 +1179648 0 2 0 0 5242880 5242880 6160384 0.05625 0 0 0.175 0 +1179648 0 2 0 0 5242880 5242880 6291456 0.05625 0 0 0.2 0 +1179648 0 2 0 0 5242880 5242880 6422528 0.05625 0 0 0.225 0 +1179648 0 2 0 0 5242880 5242880 6553600 0.05625 0 0 0.25 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 2621440 0.0625 0 0 -0.5 0 +1310720 0 1 0 0 5242880 5242880 2883584 0.0625 0 0 -0.45 0 +1310720 0 1 0 0 5242880 5242880 3145728 0.0625 0 0 -0.4 0 +1310720 0 1 0 0 5242880 5242880 3407872 0.0625 0 0 -0.35 0 +1310720 0 1 0 0 5242880 5242880 3670016 0.0625 0 0 -0.3 0 +1310720 0 1 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0 +1310720 0 1 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 0 +1310720 0 1 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0 +1310720 0 1 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 0 +1310720 0 1 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 0 +1310720 0 1 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 0 +1310720 0 1 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0 +1310720 0 1 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 0 +1310720 0 1 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0 +1310720 0 1 0 0 5242880 5242880 6815744 0.0625 0 0 0.3 0 +1310720 0 1 0 0 5242880 5242880 7077888 0.0625 0 0 0.35 0 +1310720 0 1 0 0 5242880 5242880 7340032 0.0625 0 0 0.4 0 +1310720 0 1 0 0 5242880 5242880 7602176 0.0625 0 0 0.45 0 +1310720 0 1 0 0 5242880 5242880 7864320 0.0625 0 0 0.5 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 0 +1310720 0 2 0 0 5242880 5242880 4063232 0.0625 0 0 -0.225 0 +1310720 0 2 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 0 +1310720 0 2 0 0 5242880 5242880 4325376 0.0625 0 0 -0.175 0 +1310720 0 2 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 0 +1310720 0 2 0 0 5242880 5242880 4587520 0.0625 0 0 -0.125 0 +1310720 0 2 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 0 +1310720 0 2 0 0 5242880 5242880 4849664 0.0625 0 0 -0.075 0 +1310720 0 2 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 0 +1310720 0 2 0 0 5242880 5242880 5111808 0.0625 0 0 -0.025 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5242880 5373952 0.0625 0 0 0.025 0 +1310720 0 2 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 0 +1310720 0 2 0 0 5242880 5242880 5636096 0.0625 0 0 0.075 0 +1310720 0 2 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 0 +1310720 0 2 0 0 5242880 5242880 5898240 0.0625 0 0 0.125 0 +1310720 0 2 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 0 +1310720 0 2 0 0 5242880 5242880 6160384 0.0625 0 0 0.175 0 +1310720 0 2 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 0 +1310720 0 2 0 0 5242880 5242880 6422528 0.0625 0 0 0.225 0 +1310720 0 2 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 3932160 0.06875 0 0 -0.25 0 +1441792 0 2 0 0 5242880 5242880 4063232 0.06875 0 0 -0.225 0 +1441792 0 2 0 0 5242880 5242880 4194304 0.06875 0 0 -0.2 0 +1441792 0 2 0 0 5242880 5242880 4325376 0.06875 0 0 -0.175 0 +1441792 0 2 0 0 5242880 5242880 4456448 0.06875 0 0 -0.15 0 +1441792 0 2 0 0 5242880 5242880 4587520 0.06875 0 0 -0.125 0 +1441792 0 2 0 0 5242880 5242880 4718592 0.06875 0 0 -0.1 0 +1441792 0 2 0 0 5242880 5242880 4849664 0.06875 0 0 -0.075 0 +1441792 0 2 0 0 5242880 5242880 4980736 0.06875 0 0 -0.05 0 +1441792 0 2 0 0 5242880 5242880 5111808 0.06875 0 0 -0.025 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5242880 5373952 0.06875 0 0 0.025 0 +1441792 0 2 0 0 5242880 5242880 5505024 0.06875 0 0 0.05 0 +1441792 0 2 0 0 5242880 5242880 5636096 0.06875 0 0 0.075 0 +1441792 0 2 0 0 5242880 5242880 5767168 0.06875 0 0 0.1 0 +1441792 0 2 0 0 5242880 5242880 5898240 0.06875 0 0 0.125 0 +1441792 0 2 0 0 5242880 5242880 6029312 0.06875 0 0 0.15 0 +1441792 0 2 0 0 5242880 5242880 6160384 0.06875 0 0 0.175 0 +1441792 0 2 0 0 5242880 5242880 6291456 0.06875 0 0 0.2 0 +1441792 0 2 0 0 5242880 5242880 6422528 0.06875 0 0 0.225 0 +1441792 0 2 0 0 5242880 5242880 6553600 0.06875 0 0 0.25 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 0 0.075 0 0 -1 0 +1572864 0 0 0 0 5242880 5242880 524288 0.075 0 0 -0.9 0 +1572864 0 0 0 0 5242880 5242880 1048576 0.075 0 0 -0.8 0 +1572864 0 0 0 0 5242880 5242880 1572864 0.075 0 0 -0.7 0 +1572864 0 0 0 0 5242880 5242880 2097152 0.075 0 0 -0.6 0 +1572864 0 0 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 0 +1572864 0 0 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0 +1572864 0 0 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 0 +1572864 0 0 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 0 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 0 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 0 0 0 5242880 5242880 6815744 0.075 0 0 0.3 0 +1572864 0 0 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0 +1572864 0 0 0 0 5242880 5242880 7864320 0.075 0 0 0.5 0 +1572864 0 0 0 0 5242880 5242880 8388608 0.075 0 0 0.6 0 +1572864 0 0 0 0 5242880 5242880 8912896 0.075 0 0 0.7 0 +1572864 0 0 0 0 5242880 5242880 9437184 0.075 0 0 0.8 0 +1572864 0 0 0 0 5242880 5242880 9961472 0.075 0 0 0.9 0 +1572864 0 0 0 0 5242880 5242880 10485760 0.075 0 0 1 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 0 +1572864 0 1 0 0 5242880 5242880 2883584 0.075 0 0 -0.45 0 +1572864 0 1 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 0 +1572864 0 1 0 0 5242880 5242880 3407872 0.075 0 0 -0.35 0 +1572864 0 1 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 0 +1572864 0 1 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 0 +1572864 0 1 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 1 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0 +1572864 0 1 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 1 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5242880 5505024 0.075 0 0 0.05 0 +1572864 0 1 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 1 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0 +1572864 0 1 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 1 0 0 5242880 5242880 6553600 0.075 0 0 0.25 0 +1572864 0 1 0 0 5242880 5242880 6815744 0.075 0 0 0.3 0 +1572864 0 1 0 0 5242880 5242880 7077888 0.075 0 0 0.35 0 +1572864 0 1 0 0 5242880 5242880 7340032 0.075 0 0 0.4 0 +1572864 0 1 0 0 5242880 5242880 7602176 0.075 0 0 0.45 0 +1572864 0 1 0 0 5242880 5242880 7864320 0.075 0 0 0.5 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 0 +1572864 0 2 0 0 5242880 5242880 4063232 0.075 0 0 -0.225 0 +1572864 0 2 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 0 +1572864 0 2 0 0 5242880 5242880 4325376 0.075 0 0 -0.175 0 +1572864 0 2 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 0 +1572864 0 2 0 0 5242880 5242880 4587520 0.075 0 0 -0.125 0 +1572864 0 2 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 0 +1572864 0 2 0 0 5242880 5242880 4849664 0.075 0 0 -0.075 0 +1572864 0 2 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 0 +1572864 0 2 0 0 5242880 5242880 5111808 0.075 0 0 -0.025 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5242880 5373952 0.075 0 0 0.025 0 +1572864 0 2 0 0 5242880 5242880 5505024 0.075 0 0 0.05 0 +1572864 0 2 0 0 5242880 5242880 5636096 0.075 0 0 0.075 0 +1572864 0 2 0 0 5242880 5242880 5767168 0.075 0 0 0.1 0 +1572864 0 2 0 0 5242880 5242880 5898240 0.075 0 0 0.125 0 +1572864 0 2 0 0 5242880 5242880 6029312 0.075 0 0 0.15 0 +1572864 0 2 0 0 5242880 5242880 6160384 0.075 0 0 0.175 0 +1572864 0 2 0 0 5242880 5242880 6291456 0.075 0 0 0.2 0 +1572864 0 2 0 0 5242880 5242880 6422528 0.075 0 0 0.225 0 +1572864 0 2 0 0 5242880 5242880 6553600 0.075 0 0 0.25 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 3932160 0.08125 0 0 -0.25 0 +1703936 0 2 0 0 5242880 5242880 4063232 0.08125 0 0 -0.225 0 +1703936 0 2 0 0 5242880 5242880 4194304 0.08125 0 0 -0.2 0 +1703936 0 2 0 0 5242880 5242880 4325376 0.08125 0 0 -0.175 0 +1703936 0 2 0 0 5242880 5242880 4456448 0.08125 0 0 -0.15 0 +1703936 0 2 0 0 5242880 5242880 4587520 0.08125 0 0 -0.125 0 +1703936 0 2 0 0 5242880 5242880 4718592 0.08125 0 0 -0.1 0 +1703936 0 2 0 0 5242880 5242880 4849664 0.08125 0 0 -0.075 0 +1703936 0 2 0 0 5242880 5242880 4980736 0.08125 0 0 -0.05 0 +1703936 0 2 0 0 5242880 5242880 5111808 0.08125 0 0 -0.025 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5242880 5373952 0.08125 0 0 0.025 0 +1703936 0 2 0 0 5242880 5242880 5505024 0.08125 0 0 0.05 0 +1703936 0 2 0 0 5242880 5242880 5636096 0.08125 0 0 0.075 0 +1703936 0 2 0 0 5242880 5242880 5767168 0.08125 0 0 0.1 0 +1703936 0 2 0 0 5242880 5242880 5898240 0.08125 0 0 0.125 0 +1703936 0 2 0 0 5242880 5242880 6029312 0.08125 0 0 0.15 0 +1703936 0 2 0 0 5242880 5242880 6160384 0.08125 0 0 0.175 0 +1703936 0 2 0 0 5242880 5242880 6291456 0.08125 0 0 0.2 0 +1703936 0 2 0 0 5242880 5242880 6422528 0.08125 0 0 0.225 0 +1703936 0 2 0 0 5242880 5242880 6553600 0.08125 0 0 0.25 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 2621440 0.0875 0 0 -0.5 0 +1835008 0 1 0 0 5242880 5242880 2883584 0.0875 0 0 -0.45 0 +1835008 0 1 0 0 5242880 5242880 3145728 0.0875 0 0 -0.4 0 +1835008 0 1 0 0 5242880 5242880 3407872 0.0875 0 0 -0.35 0 +1835008 0 1 0 0 5242880 5242880 3670016 0.0875 0 0 -0.3 0 +1835008 0 1 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 0 +1835008 0 1 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 0 +1835008 0 1 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0 +1835008 0 1 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 0 +1835008 0 1 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 0 +1835008 0 1 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 0 +1835008 0 1 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0 +1835008 0 1 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 0 +1835008 0 1 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 0 +1835008 0 1 0 0 5242880 5242880 6815744 0.0875 0 0 0.3 0 +1835008 0 1 0 0 5242880 5242880 7077888 0.0875 0 0 0.35 0 +1835008 0 1 0 0 5242880 5242880 7340032 0.0875 0 0 0.4 0 +1835008 0 1 0 0 5242880 5242880 7602176 0.0875 0 0 0.45 0 +1835008 0 1 0 0 5242880 5242880 7864320 0.0875 0 0 0.5 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 0 +1835008 0 2 0 0 5242880 5242880 4063232 0.0875 0 0 -0.225 0 +1835008 0 2 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 0 +1835008 0 2 0 0 5242880 5242880 4325376 0.0875 0 0 -0.175 0 +1835008 0 2 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 0 +1835008 0 2 0 0 5242880 5242880 4587520 0.0875 0 0 -0.125 0 +1835008 0 2 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 0 +1835008 0 2 0 0 5242880 5242880 4849664 0.0875 0 0 -0.075 0 +1835008 0 2 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 0 +1835008 0 2 0 0 5242880 5242880 5111808 0.0875 0 0 -0.025 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5242880 5373952 0.0875 0 0 0.025 0 +1835008 0 2 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 0 +1835008 0 2 0 0 5242880 5242880 5636096 0.0875 0 0 0.075 0 +1835008 0 2 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 0 +1835008 0 2 0 0 5242880 5242880 5898240 0.0875 0 0 0.125 0 +1835008 0 2 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 0 +1835008 0 2 0 0 5242880 5242880 6160384 0.0875 0 0 0.175 0 +1835008 0 2 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 0 +1835008 0 2 0 0 5242880 5242880 6422528 0.0875 0 0 0.225 0 +1835008 0 2 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 3932160 0.09375 0 0 -0.25 0 +1966080 0 2 0 0 5242880 5242880 4063232 0.09375 0 0 -0.225 0 +1966080 0 2 0 0 5242880 5242880 4194304 0.09375 0 0 -0.2 0 +1966080 0 2 0 0 5242880 5242880 4325376 0.09375 0 0 -0.175 0 +1966080 0 2 0 0 5242880 5242880 4456448 0.09375 0 0 -0.15 0 +1966080 0 2 0 0 5242880 5242880 4587520 0.09375 0 0 -0.125 0 +1966080 0 2 0 0 5242880 5242880 4718592 0.09375 0 0 -0.1 0 +1966080 0 2 0 0 5242880 5242880 4849664 0.09375 0 0 -0.075 0 +1966080 0 2 0 0 5242880 5242880 4980736 0.09375 0 0 -0.05 0 +1966080 0 2 0 0 5242880 5242880 5111808 0.09375 0 0 -0.025 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5242880 5373952 0.09375 0 0 0.025 0 +1966080 0 2 0 0 5242880 5242880 5505024 0.09375 0 0 0.05 0 +1966080 0 2 0 0 5242880 5242880 5636096 0.09375 0 0 0.075 0 +1966080 0 2 0 0 5242880 5242880 5767168 0.09375 0 0 0.1 0 +1966080 0 2 0 0 5242880 5242880 5898240 0.09375 0 0 0.125 0 +1966080 0 2 0 0 5242880 5242880 6029312 0.09375 0 0 0.15 0 +1966080 0 2 0 0 5242880 5242880 6160384 0.09375 0 0 0.175 0 +1966080 0 2 0 0 5242880 5242880 6291456 0.09375 0 0 0.2 0 +1966080 0 2 0 0 5242880 5242880 6422528 0.09375 0 0 0.225 0 +1966080 0 2 0 0 5242880 5242880 6553600 0.09375 0 0 0.25 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 0 0.1 0 0 -1 0 +2097152 0 0 0 0 5242880 5242880 524288 0.1 0 0 -0.9 0 +2097152 0 0 0 0 5242880 5242880 1048576 0.1 0 0 -0.8 0 +2097152 0 0 0 0 5242880 5242880 1572864 0.1 0 0 -0.7 0 +2097152 0 0 0 0 5242880 5242880 2097152 0.1 0 0 -0.6 0 +2097152 0 0 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 0 +2097152 0 0 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0 +2097152 0 0 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 0 +2097152 0 0 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 0 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 0 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 0 0 0 5242880 5242880 6815744 0.1 0 0 0.3 0 +2097152 0 0 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0 +2097152 0 0 0 0 5242880 5242880 7864320 0.1 0 0 0.5 0 +2097152 0 0 0 0 5242880 5242880 8388608 0.1 0 0 0.6 0 +2097152 0 0 0 0 5242880 5242880 8912896 0.1 0 0 0.7 0 +2097152 0 0 0 0 5242880 5242880 9437184 0.1 0 0 0.8 0 +2097152 0 0 0 0 5242880 5242880 9961472 0.1 0 0 0.9 0 +2097152 0 0 0 0 5242880 5242880 10485760 0.1 0 0 1 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 0 +2097152 0 1 0 0 5242880 5242880 2883584 0.1 0 0 -0.45 0 +2097152 0 1 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 0 +2097152 0 1 0 0 5242880 5242880 3407872 0.1 0 0 -0.35 0 +2097152 0 1 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 0 +2097152 0 1 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 0 +2097152 0 1 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 1 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0 +2097152 0 1 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 1 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5242880 5505024 0.1 0 0 0.05 0 +2097152 0 1 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 1 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0 +2097152 0 1 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 1 0 0 5242880 5242880 6553600 0.1 0 0 0.25 0 +2097152 0 1 0 0 5242880 5242880 6815744 0.1 0 0 0.3 0 +2097152 0 1 0 0 5242880 5242880 7077888 0.1 0 0 0.35 0 +2097152 0 1 0 0 5242880 5242880 7340032 0.1 0 0 0.4 0 +2097152 0 1 0 0 5242880 5242880 7602176 0.1 0 0 0.45 0 +2097152 0 1 0 0 5242880 5242880 7864320 0.1 0 0 0.5 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 0 +2097152 0 2 0 0 5242880 5242880 4063232 0.1 0 0 -0.225 0 +2097152 0 2 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 0 +2097152 0 2 0 0 5242880 5242880 4325376 0.1 0 0 -0.175 0 +2097152 0 2 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 0 +2097152 0 2 0 0 5242880 5242880 4587520 0.1 0 0 -0.125 0 +2097152 0 2 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 0 +2097152 0 2 0 0 5242880 5242880 4849664 0.1 0 0 -0.075 0 +2097152 0 2 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 0 +2097152 0 2 0 0 5242880 5242880 5111808 0.1 0 0 -0.025 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5242880 5373952 0.1 0 0 0.025 0 +2097152 0 2 0 0 5242880 5242880 5505024 0.1 0 0 0.05 0 +2097152 0 2 0 0 5242880 5242880 5636096 0.1 0 0 0.075 0 +2097152 0 2 0 0 5242880 5242880 5767168 0.1 0 0 0.1 0 +2097152 0 2 0 0 5242880 5242880 5898240 0.1 0 0 0.125 0 +2097152 0 2 0 0 5242880 5242880 6029312 0.1 0 0 0.15 0 +2097152 0 2 0 0 5242880 5242880 6160384 0.1 0 0 0.175 0 +2097152 0 2 0 0 5242880 5242880 6291456 0.1 0 0 0.2 0 +2097152 0 2 0 0 5242880 5242880 6422528 0.1 0 0 0.225 0 +2097152 0 2 0 0 5242880 5242880 6553600 0.1 0 0 0.25 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz..asc b/Carpet/CarpetInterp/test/waveinterp/phiz..asc new file mode 100644 index 000000000..b938ba3ed --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz..asc @@ -0,0 +1,157 @@ +# WAVEMOL::phiz (phiz) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.average.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.average.asc new file mode 100644 index 000000000..fdac5eceb --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.average.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 -4.31055686718107e-28 +262144 0.0125 1.97543786872278e-28 +393216 0.01875 -3.36315957191392e-28 +524288 0.025 -2.28706553641676e-29 +655360 0.03125 4.46053510248169e-29 +786432 0.0375 6.59777376628402e-30 +917504 0.04375 5.43241173771398e-29 +1048576 0.05 -1.02955025601299e-28 +1179648 0.05625 1.41642046292309e-28 +1310720 0.0625 4.23095685753974e-30 +1441792 0.06875 -1.47532766494434e-29 +1572864 0.075 2.56533622073347e-29 +1703936 0.08125 -3.22222069651101e-29 +1835008 0.0875 4.50084589473848e-30 +1966080 0.09375 3.44325952215393e-29 +2097152 0.1 -4.57505404009262e-28 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.count.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.count.asc new file mode 100644 index 000000000..633f23024 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.count.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 8000 +131072 0.00625 8000 +262144 0.0125 8000 +393216 0.01875 8000 +524288 0.025 8000 +655360 0.03125 8000 +786432 0.0375 8000 +917504 0.04375 8000 +1048576 0.05 8000 +1179648 0.05625 8000 +1310720 0.0625 8000 +1441792 0.06875 8000 +1572864 0.075 8000 +1703936 0.08125 8000 +1835008 0.0875 8000 +1966080 0.09375 8000 +2097152 0.1 8000 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.maximum.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.maximum.asc new file mode 100644 index 000000000..aa3fe83ab --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.maximum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.minimum.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.minimum.asc new file mode 100644 index 000000000..eb5814233 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.minimum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 -2.52330210059881e-08 +262144 0.0125 -2.59751686828268e-09 +393216 0.01875 -1.94813765121201e-09 +524288 0.025 -1.13718142310167e-09 +655360 0.03125 -1.49819814627278e-09 +786432 0.0375 -1.92004376518377e-09 +917504 0.04375 -2.25411963198039e-09 +1048576 0.05 -2.51675670350412e-09 +1179648 0.05625 -2.6865148826614e-09 +1310720 0.0625 -2.77054086848342e-09 +1441792 0.06875 -2.7710016315662e-09 +1572864 0.075 -2.71062697591515e-09 +1703936 0.08125 -2.68229908058895e-09 +1835008 0.0875 -2.6295740571891e-09 +1966080 0.09375 -2.53181084986157e-09 +2097152 0.1 -2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.norm1.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.norm1.asc new file mode 100644 index 000000000..946c7d638 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.norm1.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 1.82764093220369e-11 +262144 0.0125 7.34649051893125e-12 +393216 0.01875 5.91041345682556e-12 +524288 0.025 1.24242890027223e-12 +655360 0.03125 2.57713743237751e-12 +786432 0.0375 2.36124801524173e-12 +917504 0.04375 2.98057299551699e-12 +1048576 0.05 3.03589049525507e-12 +1179648 0.05625 3.36169643546458e-12 +1310720 0.0625 3.61334864722836e-12 +1441792 0.06875 3.8408932292432e-12 +1572864 0.075 3.76844870942376e-12 +1703936 0.08125 3.84025109025805e-12 +1835008 0.0875 3.8614764081443e-12 +1966080 0.09375 3.97285273972385e-12 +2097152 0.1 4.30036623573869e-12 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.norm2.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.norm2.asc new file mode 100644 index 000000000..ea8e612f8 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.norm2.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 5.18343779507329e-10 +262144 0.0125 1.13025459173354e-10 +393216 0.01875 8.58024498955012e-11 +524288 0.025 2.48311121202448e-11 +655360 0.03125 3.76969874645363e-11 +786432 0.0375 4.28591265832084e-11 +917504 0.04375 5.05689775131338e-11 +1048576 0.05 5.53837109993038e-11 +1179648 0.05625 5.97816057638341e-11 +1310720 0.0625 6.21626122183975e-11 +1441792 0.06875 6.40118017073293e-11 +1572864 0.075 6.41185856980847e-11 +1703936 0.08125 6.40670662348223e-11 +1835008 0.0875 6.32168941306763e-11 +1966080 0.09375 6.2560957347294e-11 +2097152 0.1 6.19448146789363e-11 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.norm_inf.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.norm_inf.asc new file mode 100644 index 000000000..aa3fe83ab --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.norm_inf.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 2.52330210059881e-08 +262144 0.0125 2.59751686828268e-09 +393216 0.01875 1.94813765121201e-09 +524288 0.025 1.13718142310167e-09 +655360 0.03125 1.49819814627278e-09 +786432 0.0375 1.92004376518377e-09 +917504 0.04375 2.25411963198039e-09 +1048576 0.05 2.51675670350412e-09 +1179648 0.05625 2.6865148826614e-09 +1310720 0.0625 2.77054086848342e-09 +1441792 0.06875 2.7710016315662e-09 +1572864 0.075 2.71062697591515e-09 +1703936 0.08125 2.68229908058895e-09 +1835008 0.0875 2.6295740571891e-09 +1966080 0.09375 2.53181084986157e-09 +2097152 0.1 2.41338321187977e-09 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.sum.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.sum.asc new file mode 100644 index 000000000..c9dff4e81 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.sum.asc @@ -0,0 +1,19 @@ +# WAVEMOL::phiz (phiz) +# iteration time data +0 0 0 +131072 0.00625 -3.44844549374486e-24 +262144 0.0125 1.58035029497822e-24 +393216 0.01875 -2.69052765753114e-24 +524288 0.025 -1.82965242913341e-25 +655360 0.03125 3.56842808198535e-25 +786432 0.0375 5.27821901302721e-26 +917504 0.04375 4.34592939017118e-25 +1048576 0.05 -8.23640204810396e-25 +1179648 0.05625 1.13313637033847e-24 +1310720 0.0625 3.3847654860318e-26 +1441792 0.06875 -1.18026213195547e-25 +1572864 0.075 2.05226897658678e-25 +1703936 0.08125 -2.5777765572088e-25 +1835008 0.0875 3.60067671579079e-26 +1966080 0.09375 2.75460761772315e-25 +2097152 0.1 -3.6600432320741e-24 diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.x.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.x.asc new file mode 100644 index 000000000..d4e4efb6e --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.x.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiz x (phiz) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 0 5242880 5242880 0 -1 0 0 0 +0 0 0 0 0 524288 5242880 5242880 0 -0.9 0 0 0 +0 0 0 0 0 1048576 5242880 5242880 0 -0.8 0 0 0 +0 0 0 0 0 1572864 5242880 5242880 0 -0.7 0 0 0 +0 0 0 0 0 2097152 5242880 5242880 0 -0.6 0 0 0 +0 0 0 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 0 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 0 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 0 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 0 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 0 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 0 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 0 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 0 0 0 7864320 5242880 5242880 0 0.5 0 0 0 +0 0 0 0 0 8388608 5242880 5242880 0 0.6 0 0 0 +0 0 0 0 0 8912896 5242880 5242880 0 0.7 0 0 0 +0 0 0 0 0 9437184 5242880 5242880 0 0.8 0 0 0 +0 0 0 0 0 9961472 5242880 5242880 0 0.9 0 0 0 +0 0 0 0 0 10485760 5242880 5242880 0 1 0 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 2621440 5242880 5242880 0 -0.5 0 0 0 +0 0 1 0 0 2883584 5242880 5242880 0 -0.45 0 0 0 +0 0 1 0 0 3145728 5242880 5242880 0 -0.4 0 0 0 +0 0 1 0 0 3407872 5242880 5242880 0 -0.35 0 0 0 +0 0 1 0 0 3670016 5242880 5242880 0 -0.3 0 0 0 +0 0 1 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 1 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 1 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 1 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 1 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 1 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 1 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 1 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 1 0 0 6553600 5242880 5242880 0 0.25 0 0 0 +0 0 1 0 0 6815744 5242880 5242880 0 0.3 0 0 0 +0 0 1 0 0 7077888 5242880 5242880 0 0.35 0 0 0 +0 0 1 0 0 7340032 5242880 5242880 0 0.4 0 0 0 +0 0 1 0 0 7602176 5242880 5242880 0 0.45 0 0 0 +0 0 1 0 0 7864320 5242880 5242880 0 0.5 0 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 3932160 5242880 5242880 0 -0.25 0 0 0 +0 0 2 0 0 4063232 5242880 5242880 0 -0.225 0 0 0 +0 0 2 0 0 4194304 5242880 5242880 0 -0.2 0 0 0 +0 0 2 0 0 4325376 5242880 5242880 0 -0.175 0 0 0 +0 0 2 0 0 4456448 5242880 5242880 0 -0.15 0 0 0 +0 0 2 0 0 4587520 5242880 5242880 0 -0.125 0 0 0 +0 0 2 0 0 4718592 5242880 5242880 0 -0.1 0 0 0 +0 0 2 0 0 4849664 5242880 5242880 0 -0.075 0 0 0 +0 0 2 0 0 4980736 5242880 5242880 0 -0.05 0 0 0 +0 0 2 0 0 5111808 5242880 5242880 0 -0.025 0 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5373952 5242880 5242880 0 0.025 0 0 0 +0 0 2 0 0 5505024 5242880 5242880 0 0.05 0 0 0 +0 0 2 0 0 5636096 5242880 5242880 0 0.075 0 0 0 +0 0 2 0 0 5767168 5242880 5242880 0 0.1 0 0 0 +0 0 2 0 0 5898240 5242880 5242880 0 0.125 0 0 0 +0 0 2 0 0 6029312 5242880 5242880 0 0.15 0 0 0 +0 0 2 0 0 6160384 5242880 5242880 0 0.175 0 0 0 +0 0 2 0 0 6291456 5242880 5242880 0 0.2 0 0 0 +0 0 2 0 0 6422528 5242880 5242880 0 0.225 0 0 0 +0 0 2 0 0 6553600 5242880 5242880 0 0.25 0 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 3932160 5242880 5242880 0.00625 -0.25 0 0 0 +131072 0 2 0 0 4063232 5242880 5242880 0.00625 -0.225 0 0 0 +131072 0 2 0 0 4194304 5242880 5242880 0.00625 -0.2 0 0 0 +131072 0 2 0 0 4325376 5242880 5242880 0.00625 -0.175 0 0 0 +131072 0 2 0 0 4456448 5242880 5242880 0.00625 -0.15 0 0 0 +131072 0 2 0 0 4587520 5242880 5242880 0.00625 -0.125 0 0 0 +131072 0 2 0 0 4718592 5242880 5242880 0.00625 -0.1 0 0 0 +131072 0 2 0 0 4849664 5242880 5242880 0.00625 -0.075 0 0 0 +131072 0 2 0 0 4980736 5242880 5242880 0.00625 -0.05 0 0 0 +131072 0 2 0 0 5111808 5242880 5242880 0.00625 -0.025 0 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5373952 5242880 5242880 0.00625 0.025 0 0 0 +131072 0 2 0 0 5505024 5242880 5242880 0.00625 0.05 0 0 0 +131072 0 2 0 0 5636096 5242880 5242880 0.00625 0.075 0 0 0 +131072 0 2 0 0 5767168 5242880 5242880 0.00625 0.1 0 0 0 +131072 0 2 0 0 5898240 5242880 5242880 0.00625 0.125 0 0 0 +131072 0 2 0 0 6029312 5242880 5242880 0.00625 0.15 0 0 0 +131072 0 2 0 0 6160384 5242880 5242880 0.00625 0.175 0 0 0 +131072 0 2 0 0 6291456 5242880 5242880 0.00625 0.2 0 0 0 +131072 0 2 0 0 6422528 5242880 5242880 0.00625 0.225 0 0 0 +131072 0 2 0 0 6553600 5242880 5242880 0.00625 0.25 0 0 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 2621440 5242880 5242880 0.0125 -0.5 0 0 0 +262144 0 1 0 0 2883584 5242880 5242880 0.0125 -0.45 0 0 0 +262144 0 1 0 0 3145728 5242880 5242880 0.0125 -0.4 0 0 0 +262144 0 1 0 0 3407872 5242880 5242880 0.0125 -0.35 0 0 0 +262144 0 1 0 0 3670016 5242880 5242880 0.0125 -0.3 0 0 0 +262144 0 1 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 0 +262144 0 1 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 1 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 1 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 0 +262144 0 1 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 1 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 0 +262144 0 1 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 1 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 1 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 0 +262144 0 1 0 0 6815744 5242880 5242880 0.0125 0.3 0 0 0 +262144 0 1 0 0 7077888 5242880 5242880 0.0125 0.35 0 0 0 +262144 0 1 0 0 7340032 5242880 5242880 0.0125 0.4 0 0 0 +262144 0 1 0 0 7602176 5242880 5242880 0.0125 0.45 0 0 0 +262144 0 1 0 0 7864320 5242880 5242880 0.0125 0.5 0 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 3932160 5242880 5242880 0.0125 -0.25 0 0 0 +262144 0 2 0 0 4063232 5242880 5242880 0.0125 -0.225 0 0 0 +262144 0 2 0 0 4194304 5242880 5242880 0.0125 -0.2 0 0 0 +262144 0 2 0 0 4325376 5242880 5242880 0.0125 -0.175 0 0 0 +262144 0 2 0 0 4456448 5242880 5242880 0.0125 -0.15 0 0 0 +262144 0 2 0 0 4587520 5242880 5242880 0.0125 -0.125 0 0 0 +262144 0 2 0 0 4718592 5242880 5242880 0.0125 -0.1 0 0 0 +262144 0 2 0 0 4849664 5242880 5242880 0.0125 -0.075 0 0 0 +262144 0 2 0 0 4980736 5242880 5242880 0.0125 -0.05 0 0 0 +262144 0 2 0 0 5111808 5242880 5242880 0.0125 -0.025 0 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5373952 5242880 5242880 0.0125 0.025 0 0 0 +262144 0 2 0 0 5505024 5242880 5242880 0.0125 0.05 0 0 0 +262144 0 2 0 0 5636096 5242880 5242880 0.0125 0.075 0 0 0 +262144 0 2 0 0 5767168 5242880 5242880 0.0125 0.1 0 0 0 +262144 0 2 0 0 5898240 5242880 5242880 0.0125 0.125 0 0 0 +262144 0 2 0 0 6029312 5242880 5242880 0.0125 0.15 0 0 0 +262144 0 2 0 0 6160384 5242880 5242880 0.0125 0.175 0 0 0 +262144 0 2 0 0 6291456 5242880 5242880 0.0125 0.2 0 0 0 +262144 0 2 0 0 6422528 5242880 5242880 0.0125 0.225 0 0 0 +262144 0 2 0 0 6553600 5242880 5242880 0.0125 0.25 0 0 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 3932160 5242880 5242880 0.01875 -0.25 0 0 0 +393216 0 2 0 0 4063232 5242880 5242880 0.01875 -0.225 0 0 0 +393216 0 2 0 0 4194304 5242880 5242880 0.01875 -0.2 0 0 0 +393216 0 2 0 0 4325376 5242880 5242880 0.01875 -0.175 0 0 0 +393216 0 2 0 0 4456448 5242880 5242880 0.01875 -0.15 0 0 0 +393216 0 2 0 0 4587520 5242880 5242880 0.01875 -0.125 0 0 0 +393216 0 2 0 0 4718592 5242880 5242880 0.01875 -0.1 0 0 0 +393216 0 2 0 0 4849664 5242880 5242880 0.01875 -0.075 0 0 0 +393216 0 2 0 0 4980736 5242880 5242880 0.01875 -0.05 0 0 0 +393216 0 2 0 0 5111808 5242880 5242880 0.01875 -0.025 0 0 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5373952 5242880 5242880 0.01875 0.025 0 0 0 +393216 0 2 0 0 5505024 5242880 5242880 0.01875 0.05 0 0 0 +393216 0 2 0 0 5636096 5242880 5242880 0.01875 0.075 0 0 0 +393216 0 2 0 0 5767168 5242880 5242880 0.01875 0.1 0 0 0 +393216 0 2 0 0 5898240 5242880 5242880 0.01875 0.125 0 0 0 +393216 0 2 0 0 6029312 5242880 5242880 0.01875 0.15 0 0 0 +393216 0 2 0 0 6160384 5242880 5242880 0.01875 0.175 0 0 0 +393216 0 2 0 0 6291456 5242880 5242880 0.01875 0.2 0 0 0 +393216 0 2 0 0 6422528 5242880 5242880 0.01875 0.225 0 0 0 +393216 0 2 0 0 6553600 5242880 5242880 0.01875 0.25 0 0 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 0 5242880 5242880 0.025 -1 0 0 0 +524288 0 0 0 0 524288 5242880 5242880 0.025 -0.9 0 0 0 +524288 0 0 0 0 1048576 5242880 5242880 0.025 -0.8 0 0 0 +524288 0 0 0 0 1572864 5242880 5242880 0.025 -0.7 0 0 0 +524288 0 0 0 0 2097152 5242880 5242880 0.025 -0.6 0 0 0 +524288 0 0 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 0 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 0 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 0 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 0 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 0 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 0 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 0 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 0 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 +524288 0 0 0 0 8388608 5242880 5242880 0.025 0.6 0 0 0 +524288 0 0 0 0 8912896 5242880 5242880 0.025 0.7 0 0 0 +524288 0 0 0 0 9437184 5242880 5242880 0.025 0.8 0 0 0 +524288 0 0 0 0 9961472 5242880 5242880 0.025 0.9 0 0 0 +524288 0 0 0 0 10485760 5242880 5242880 0.025 1 0 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 2621440 5242880 5242880 0.025 -0.5 0 0 0 +524288 0 1 0 0 2883584 5242880 5242880 0.025 -0.45 0 0 0 +524288 0 1 0 0 3145728 5242880 5242880 0.025 -0.4 0 0 0 +524288 0 1 0 0 3407872 5242880 5242880 0.025 -0.35 0 0 0 +524288 0 1 0 0 3670016 5242880 5242880 0.025 -0.3 0 0 0 +524288 0 1 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0 +524288 0 1 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 1 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 0 +524288 0 1 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 1 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5505024 5242880 5242880 0.025 0.05 0 0 0 +524288 0 1 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 1 0 0 6029312 5242880 5242880 0.025 0.15 0 0 0 +524288 0 1 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 1 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0 +524288 0 1 0 0 6815744 5242880 5242880 0.025 0.3 0 0 0 +524288 0 1 0 0 7077888 5242880 5242880 0.025 0.35 0 0 0 +524288 0 1 0 0 7340032 5242880 5242880 0.025 0.4 0 0 0 +524288 0 1 0 0 7602176 5242880 5242880 0.025 0.45 0 0 0 +524288 0 1 0 0 7864320 5242880 5242880 0.025 0.5 0 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 3932160 5242880 5242880 0.025 -0.25 0 0 0 +524288 0 2 0 0 4063232 5242880 5242880 0.025 -0.225 0 0 0 +524288 0 2 0 0 4194304 5242880 5242880 0.025 -0.2 0 0 0 +524288 0 2 0 0 4325376 5242880 5242880 0.025 -0.175 0 0 0 +524288 0 2 0 0 4456448 5242880 5242880 0.025 -0.15 0 0 0 +524288 0 2 0 0 4587520 5242880 5242880 0.025 -0.125 0 0 0 +524288 0 2 0 0 4718592 5242880 5242880 0.025 -0.1 0 0 0 +524288 0 2 0 0 4849664 5242880 5242880 0.025 -0.075 0 0 0 +524288 0 2 0 0 4980736 5242880 5242880 0.025 -0.05 0 0 0 +524288 0 2 0 0 5111808 5242880 5242880 0.025 -0.025 0 0 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5373952 5242880 5242880 0.025 0.025 0 0 0 +524288 0 2 0 0 5505024 5242880 5242880 0.025 0.05 0 0 0 +524288 0 2 0 0 5636096 5242880 5242880 0.025 0.075 0 0 0 +524288 0 2 0 0 5767168 5242880 5242880 0.025 0.1 0 0 0 +524288 0 2 0 0 5898240 5242880 5242880 0.025 0.125 0 0 0 +524288 0 2 0 0 6029312 5242880 5242880 0.025 0.15 0 0 0 +524288 0 2 0 0 6160384 5242880 5242880 0.025 0.175 0 0 0 +524288 0 2 0 0 6291456 5242880 5242880 0.025 0.2 0 0 0 +524288 0 2 0 0 6422528 5242880 5242880 0.025 0.225 0 0 0 +524288 0 2 0 0 6553600 5242880 5242880 0.025 0.25 0 0 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 3932160 5242880 5242880 0.03125 -0.25 0 0 0 +655360 0 2 0 0 4063232 5242880 5242880 0.03125 -0.225 0 0 0 +655360 0 2 0 0 4194304 5242880 5242880 0.03125 -0.2 0 0 0 +655360 0 2 0 0 4325376 5242880 5242880 0.03125 -0.175 0 0 0 +655360 0 2 0 0 4456448 5242880 5242880 0.03125 -0.15 0 0 0 +655360 0 2 0 0 4587520 5242880 5242880 0.03125 -0.125 0 0 0 +655360 0 2 0 0 4718592 5242880 5242880 0.03125 -0.1 0 0 0 +655360 0 2 0 0 4849664 5242880 5242880 0.03125 -0.075 0 0 0 +655360 0 2 0 0 4980736 5242880 5242880 0.03125 -0.05 0 0 0 +655360 0 2 0 0 5111808 5242880 5242880 0.03125 -0.025 0 0 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5373952 5242880 5242880 0.03125 0.025 0 0 0 +655360 0 2 0 0 5505024 5242880 5242880 0.03125 0.05 0 0 0 +655360 0 2 0 0 5636096 5242880 5242880 0.03125 0.075 0 0 0 +655360 0 2 0 0 5767168 5242880 5242880 0.03125 0.1 0 0 0 +655360 0 2 0 0 5898240 5242880 5242880 0.03125 0.125 0 0 0 +655360 0 2 0 0 6029312 5242880 5242880 0.03125 0.15 0 0 0 +655360 0 2 0 0 6160384 5242880 5242880 0.03125 0.175 0 0 0 +655360 0 2 0 0 6291456 5242880 5242880 0.03125 0.2 0 0 0 +655360 0 2 0 0 6422528 5242880 5242880 0.03125 0.225 0 0 0 +655360 0 2 0 0 6553600 5242880 5242880 0.03125 0.25 0 0 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 2621440 5242880 5242880 0.0375 -0.5 0 0 0 +786432 0 1 0 0 2883584 5242880 5242880 0.0375 -0.45 0 0 0 +786432 0 1 0 0 3145728 5242880 5242880 0.0375 -0.4 0 0 0 +786432 0 1 0 0 3407872 5242880 5242880 0.0375 -0.35 0 0 0 +786432 0 1 0 0 3670016 5242880 5242880 0.0375 -0.3 0 0 0 +786432 0 1 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0 +786432 0 1 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0 +786432 0 1 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0 +786432 0 1 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 0 +786432 0 1 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 0 +786432 0 1 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 0 +786432 0 1 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0 +786432 0 1 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0 +786432 0 1 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0 +786432 0 1 0 0 6815744 5242880 5242880 0.0375 0.3 0 0 0 +786432 0 1 0 0 7077888 5242880 5242880 0.0375 0.35 0 0 0 +786432 0 1 0 0 7340032 5242880 5242880 0.0375 0.4 0 0 0 +786432 0 1 0 0 7602176 5242880 5242880 0.0375 0.45 0 0 0 +786432 0 1 0 0 7864320 5242880 5242880 0.0375 0.5 0 0 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 3932160 5242880 5242880 0.0375 -0.25 0 0 0 +786432 0 2 0 0 4063232 5242880 5242880 0.0375 -0.225 0 0 0 +786432 0 2 0 0 4194304 5242880 5242880 0.0375 -0.2 0 0 0 +786432 0 2 0 0 4325376 5242880 5242880 0.0375 -0.175 0 0 0 +786432 0 2 0 0 4456448 5242880 5242880 0.0375 -0.15 0 0 0 +786432 0 2 0 0 4587520 5242880 5242880 0.0375 -0.125 0 0 0 +786432 0 2 0 0 4718592 5242880 5242880 0.0375 -0.1 0 0 0 +786432 0 2 0 0 4849664 5242880 5242880 0.0375 -0.075 0 0 0 +786432 0 2 0 0 4980736 5242880 5242880 0.0375 -0.05 0 0 0 +786432 0 2 0 0 5111808 5242880 5242880 0.0375 -0.025 0 0 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5373952 5242880 5242880 0.0375 0.025 0 0 0 +786432 0 2 0 0 5505024 5242880 5242880 0.0375 0.05 0 0 0 +786432 0 2 0 0 5636096 5242880 5242880 0.0375 0.075 0 0 0 +786432 0 2 0 0 5767168 5242880 5242880 0.0375 0.1 0 0 0 +786432 0 2 0 0 5898240 5242880 5242880 0.0375 0.125 0 0 0 +786432 0 2 0 0 6029312 5242880 5242880 0.0375 0.15 0 0 0 +786432 0 2 0 0 6160384 5242880 5242880 0.0375 0.175 0 0 0 +786432 0 2 0 0 6291456 5242880 5242880 0.0375 0.2 0 0 0 +786432 0 2 0 0 6422528 5242880 5242880 0.0375 0.225 0 0 0 +786432 0 2 0 0 6553600 5242880 5242880 0.0375 0.25 0 0 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 3932160 5242880 5242880 0.04375 -0.25 0 0 0 +917504 0 2 0 0 4063232 5242880 5242880 0.04375 -0.225 0 0 0 +917504 0 2 0 0 4194304 5242880 5242880 0.04375 -0.2 0 0 0 +917504 0 2 0 0 4325376 5242880 5242880 0.04375 -0.175 0 0 0 +917504 0 2 0 0 4456448 5242880 5242880 0.04375 -0.15 0 0 0 +917504 0 2 0 0 4587520 5242880 5242880 0.04375 -0.125 0 0 0 +917504 0 2 0 0 4718592 5242880 5242880 0.04375 -0.1 0 0 0 +917504 0 2 0 0 4849664 5242880 5242880 0.04375 -0.075 0 0 0 +917504 0 2 0 0 4980736 5242880 5242880 0.04375 -0.05 0 0 0 +917504 0 2 0 0 5111808 5242880 5242880 0.04375 -0.025 0 0 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5373952 5242880 5242880 0.04375 0.025 0 0 0 +917504 0 2 0 0 5505024 5242880 5242880 0.04375 0.05 0 0 0 +917504 0 2 0 0 5636096 5242880 5242880 0.04375 0.075 0 0 0 +917504 0 2 0 0 5767168 5242880 5242880 0.04375 0.1 0 0 0 +917504 0 2 0 0 5898240 5242880 5242880 0.04375 0.125 0 0 0 +917504 0 2 0 0 6029312 5242880 5242880 0.04375 0.15 0 0 0 +917504 0 2 0 0 6160384 5242880 5242880 0.04375 0.175 0 0 0 +917504 0 2 0 0 6291456 5242880 5242880 0.04375 0.2 0 0 0 +917504 0 2 0 0 6422528 5242880 5242880 0.04375 0.225 0 0 0 +917504 0 2 0 0 6553600 5242880 5242880 0.04375 0.25 0 0 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 0 5242880 5242880 0.05 -1 0 0 0 +1048576 0 0 0 0 524288 5242880 5242880 0.05 -0.9 0 0 0 +1048576 0 0 0 0 1048576 5242880 5242880 0.05 -0.8 0 0 0 +1048576 0 0 0 0 1572864 5242880 5242880 0.05 -0.7 0 0 0 +1048576 0 0 0 0 2097152 5242880 5242880 0.05 -0.6 0 0 0 +1048576 0 0 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 0 +1048576 0 0 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0 +1048576 0 0 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 0 +1048576 0 0 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 0 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 0 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 0 0 0 6815744 5242880 5242880 0.05 0.3 0 0 0 +1048576 0 0 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0 +1048576 0 0 0 0 7864320 5242880 5242880 0.05 0.5 0 0 0 +1048576 0 0 0 0 8388608 5242880 5242880 0.05 0.6 0 0 0 +1048576 0 0 0 0 8912896 5242880 5242880 0.05 0.7 0 0 0 +1048576 0 0 0 0 9437184 5242880 5242880 0.05 0.8 0 0 0 +1048576 0 0 0 0 9961472 5242880 5242880 0.05 0.9 0 0 0 +1048576 0 0 0 0 10485760 5242880 5242880 0.05 1 0 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 2621440 5242880 5242880 0.05 -0.5 0 0 0 +1048576 0 1 0 0 2883584 5242880 5242880 0.05 -0.45 0 0 0 +1048576 0 1 0 0 3145728 5242880 5242880 0.05 -0.4 0 0 0 +1048576 0 1 0 0 3407872 5242880 5242880 0.05 -0.35 0 0 0 +1048576 0 1 0 0 3670016 5242880 5242880 0.05 -0.3 0 0 0 +1048576 0 1 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0 +1048576 0 1 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 1 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0 +1048576 0 1 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 1 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5505024 5242880 5242880 0.05 0.05 0 0 0 +1048576 0 1 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 1 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0 +1048576 0 1 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 1 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0 +1048576 0 1 0 0 6815744 5242880 5242880 0.05 0.3 0 0 0 +1048576 0 1 0 0 7077888 5242880 5242880 0.05 0.35 0 0 0 +1048576 0 1 0 0 7340032 5242880 5242880 0.05 0.4 0 0 0 +1048576 0 1 0 0 7602176 5242880 5242880 0.05 0.45 0 0 0 +1048576 0 1 0 0 7864320 5242880 5242880 0.05 0.5 0 0 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 3932160 5242880 5242880 0.05 -0.25 0 0 0 +1048576 0 2 0 0 4063232 5242880 5242880 0.05 -0.225 0 0 0 +1048576 0 2 0 0 4194304 5242880 5242880 0.05 -0.2 0 0 0 +1048576 0 2 0 0 4325376 5242880 5242880 0.05 -0.175 0 0 0 +1048576 0 2 0 0 4456448 5242880 5242880 0.05 -0.15 0 0 0 +1048576 0 2 0 0 4587520 5242880 5242880 0.05 -0.125 0 0 0 +1048576 0 2 0 0 4718592 5242880 5242880 0.05 -0.1 0 0 0 +1048576 0 2 0 0 4849664 5242880 5242880 0.05 -0.075 0 0 0 +1048576 0 2 0 0 4980736 5242880 5242880 0.05 -0.05 0 0 0 +1048576 0 2 0 0 5111808 5242880 5242880 0.05 -0.025 0 0 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5373952 5242880 5242880 0.05 0.025 0 0 0 +1048576 0 2 0 0 5505024 5242880 5242880 0.05 0.05 0 0 0 +1048576 0 2 0 0 5636096 5242880 5242880 0.05 0.075 0 0 0 +1048576 0 2 0 0 5767168 5242880 5242880 0.05 0.1 0 0 0 +1048576 0 2 0 0 5898240 5242880 5242880 0.05 0.125 0 0 0 +1048576 0 2 0 0 6029312 5242880 5242880 0.05 0.15 0 0 0 +1048576 0 2 0 0 6160384 5242880 5242880 0.05 0.175 0 0 0 +1048576 0 2 0 0 6291456 5242880 5242880 0.05 0.2 0 0 0 +1048576 0 2 0 0 6422528 5242880 5242880 0.05 0.225 0 0 0 +1048576 0 2 0 0 6553600 5242880 5242880 0.05 0.25 0 0 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 3932160 5242880 5242880 0.05625 -0.25 0 0 0 +1179648 0 2 0 0 4063232 5242880 5242880 0.05625 -0.225 0 0 0 +1179648 0 2 0 0 4194304 5242880 5242880 0.05625 -0.2 0 0 0 +1179648 0 2 0 0 4325376 5242880 5242880 0.05625 -0.175 0 0 0 +1179648 0 2 0 0 4456448 5242880 5242880 0.05625 -0.15 0 0 0 +1179648 0 2 0 0 4587520 5242880 5242880 0.05625 -0.125 0 0 0 +1179648 0 2 0 0 4718592 5242880 5242880 0.05625 -0.1 0 0 0 +1179648 0 2 0 0 4849664 5242880 5242880 0.05625 -0.075 0 0 0 +1179648 0 2 0 0 4980736 5242880 5242880 0.05625 -0.05 0 0 0 +1179648 0 2 0 0 5111808 5242880 5242880 0.05625 -0.025 0 0 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5373952 5242880 5242880 0.05625 0.025 0 0 0 +1179648 0 2 0 0 5505024 5242880 5242880 0.05625 0.05 0 0 0 +1179648 0 2 0 0 5636096 5242880 5242880 0.05625 0.075 0 0 0 +1179648 0 2 0 0 5767168 5242880 5242880 0.05625 0.1 0 0 0 +1179648 0 2 0 0 5898240 5242880 5242880 0.05625 0.125 0 0 0 +1179648 0 2 0 0 6029312 5242880 5242880 0.05625 0.15 0 0 0 +1179648 0 2 0 0 6160384 5242880 5242880 0.05625 0.175 0 0 0 +1179648 0 2 0 0 6291456 5242880 5242880 0.05625 0.2 0 0 0 +1179648 0 2 0 0 6422528 5242880 5242880 0.05625 0.225 0 0 0 +1179648 0 2 0 0 6553600 5242880 5242880 0.05625 0.25 0 0 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 2621440 5242880 5242880 0.0625 -0.5 0 0 0 +1310720 0 1 0 0 2883584 5242880 5242880 0.0625 -0.45 0 0 0 +1310720 0 1 0 0 3145728 5242880 5242880 0.0625 -0.4 0 0 0 +1310720 0 1 0 0 3407872 5242880 5242880 0.0625 -0.35 0 0 0 +1310720 0 1 0 0 3670016 5242880 5242880 0.0625 -0.3 0 0 0 +1310720 0 1 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0 +1310720 0 1 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 0 +1310720 0 1 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0 +1310720 0 1 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 0 +1310720 0 1 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 0 +1310720 0 1 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 0 +1310720 0 1 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0 +1310720 0 1 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 0 +1310720 0 1 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0 +1310720 0 1 0 0 6815744 5242880 5242880 0.0625 0.3 0 0 0 +1310720 0 1 0 0 7077888 5242880 5242880 0.0625 0.35 0 0 0 +1310720 0 1 0 0 7340032 5242880 5242880 0.0625 0.4 0 0 0 +1310720 0 1 0 0 7602176 5242880 5242880 0.0625 0.45 0 0 0 +1310720 0 1 0 0 7864320 5242880 5242880 0.0625 0.5 0 0 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 3932160 5242880 5242880 0.0625 -0.25 0 0 0 +1310720 0 2 0 0 4063232 5242880 5242880 0.0625 -0.225 0 0 0 +1310720 0 2 0 0 4194304 5242880 5242880 0.0625 -0.2 0 0 0 +1310720 0 2 0 0 4325376 5242880 5242880 0.0625 -0.175 0 0 0 +1310720 0 2 0 0 4456448 5242880 5242880 0.0625 -0.15 0 0 0 +1310720 0 2 0 0 4587520 5242880 5242880 0.0625 -0.125 0 0 0 +1310720 0 2 0 0 4718592 5242880 5242880 0.0625 -0.1 0 0 0 +1310720 0 2 0 0 4849664 5242880 5242880 0.0625 -0.075 0 0 0 +1310720 0 2 0 0 4980736 5242880 5242880 0.0625 -0.05 0 0 0 +1310720 0 2 0 0 5111808 5242880 5242880 0.0625 -0.025 0 0 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5373952 5242880 5242880 0.0625 0.025 0 0 0 +1310720 0 2 0 0 5505024 5242880 5242880 0.0625 0.05 0 0 0 +1310720 0 2 0 0 5636096 5242880 5242880 0.0625 0.075 0 0 0 +1310720 0 2 0 0 5767168 5242880 5242880 0.0625 0.1 0 0 0 +1310720 0 2 0 0 5898240 5242880 5242880 0.0625 0.125 0 0 0 +1310720 0 2 0 0 6029312 5242880 5242880 0.0625 0.15 0 0 0 +1310720 0 2 0 0 6160384 5242880 5242880 0.0625 0.175 0 0 0 +1310720 0 2 0 0 6291456 5242880 5242880 0.0625 0.2 0 0 0 +1310720 0 2 0 0 6422528 5242880 5242880 0.0625 0.225 0 0 0 +1310720 0 2 0 0 6553600 5242880 5242880 0.0625 0.25 0 0 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 3932160 5242880 5242880 0.06875 -0.25 0 0 0 +1441792 0 2 0 0 4063232 5242880 5242880 0.06875 -0.225 0 0 0 +1441792 0 2 0 0 4194304 5242880 5242880 0.06875 -0.2 0 0 0 +1441792 0 2 0 0 4325376 5242880 5242880 0.06875 -0.175 0 0 0 +1441792 0 2 0 0 4456448 5242880 5242880 0.06875 -0.15 0 0 0 +1441792 0 2 0 0 4587520 5242880 5242880 0.06875 -0.125 0 0 0 +1441792 0 2 0 0 4718592 5242880 5242880 0.06875 -0.1 0 0 0 +1441792 0 2 0 0 4849664 5242880 5242880 0.06875 -0.075 0 0 0 +1441792 0 2 0 0 4980736 5242880 5242880 0.06875 -0.05 0 0 0 +1441792 0 2 0 0 5111808 5242880 5242880 0.06875 -0.025 0 0 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5373952 5242880 5242880 0.06875 0.025 0 0 0 +1441792 0 2 0 0 5505024 5242880 5242880 0.06875 0.05 0 0 0 +1441792 0 2 0 0 5636096 5242880 5242880 0.06875 0.075 0 0 0 +1441792 0 2 0 0 5767168 5242880 5242880 0.06875 0.1 0 0 0 +1441792 0 2 0 0 5898240 5242880 5242880 0.06875 0.125 0 0 0 +1441792 0 2 0 0 6029312 5242880 5242880 0.06875 0.15 0 0 0 +1441792 0 2 0 0 6160384 5242880 5242880 0.06875 0.175 0 0 0 +1441792 0 2 0 0 6291456 5242880 5242880 0.06875 0.2 0 0 0 +1441792 0 2 0 0 6422528 5242880 5242880 0.06875 0.225 0 0 0 +1441792 0 2 0 0 6553600 5242880 5242880 0.06875 0.25 0 0 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 0 5242880 5242880 0.075 -1 0 0 0 +1572864 0 0 0 0 524288 5242880 5242880 0.075 -0.9 0 0 0 +1572864 0 0 0 0 1048576 5242880 5242880 0.075 -0.8 0 0 0 +1572864 0 0 0 0 1572864 5242880 5242880 0.075 -0.7 0 0 0 +1572864 0 0 0 0 2097152 5242880 5242880 0.075 -0.6 0 0 0 +1572864 0 0 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 0 +1572864 0 0 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0 +1572864 0 0 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 0 +1572864 0 0 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 0 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 0 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 0 0 0 6815744 5242880 5242880 0.075 0.3 0 0 0 +1572864 0 0 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0 +1572864 0 0 0 0 7864320 5242880 5242880 0.075 0.5 0 0 0 +1572864 0 0 0 0 8388608 5242880 5242880 0.075 0.6 0 0 0 +1572864 0 0 0 0 8912896 5242880 5242880 0.075 0.7 0 0 0 +1572864 0 0 0 0 9437184 5242880 5242880 0.075 0.8 0 0 0 +1572864 0 0 0 0 9961472 5242880 5242880 0.075 0.9 0 0 0 +1572864 0 0 0 0 10485760 5242880 5242880 0.075 1 0 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 2621440 5242880 5242880 0.075 -0.5 0 0 0 +1572864 0 1 0 0 2883584 5242880 5242880 0.075 -0.45 0 0 0 +1572864 0 1 0 0 3145728 5242880 5242880 0.075 -0.4 0 0 0 +1572864 0 1 0 0 3407872 5242880 5242880 0.075 -0.35 0 0 0 +1572864 0 1 0 0 3670016 5242880 5242880 0.075 -0.3 0 0 0 +1572864 0 1 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 0 +1572864 0 1 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 1 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0 +1572864 0 1 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 1 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5505024 5242880 5242880 0.075 0.05 0 0 0 +1572864 0 1 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 1 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0 +1572864 0 1 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 1 0 0 6553600 5242880 5242880 0.075 0.25 0 0 0 +1572864 0 1 0 0 6815744 5242880 5242880 0.075 0.3 0 0 0 +1572864 0 1 0 0 7077888 5242880 5242880 0.075 0.35 0 0 0 +1572864 0 1 0 0 7340032 5242880 5242880 0.075 0.4 0 0 0 +1572864 0 1 0 0 7602176 5242880 5242880 0.075 0.45 0 0 0 +1572864 0 1 0 0 7864320 5242880 5242880 0.075 0.5 0 0 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 3932160 5242880 5242880 0.075 -0.25 0 0 0 +1572864 0 2 0 0 4063232 5242880 5242880 0.075 -0.225 0 0 0 +1572864 0 2 0 0 4194304 5242880 5242880 0.075 -0.2 0 0 0 +1572864 0 2 0 0 4325376 5242880 5242880 0.075 -0.175 0 0 0 +1572864 0 2 0 0 4456448 5242880 5242880 0.075 -0.15 0 0 0 +1572864 0 2 0 0 4587520 5242880 5242880 0.075 -0.125 0 0 0 +1572864 0 2 0 0 4718592 5242880 5242880 0.075 -0.1 0 0 0 +1572864 0 2 0 0 4849664 5242880 5242880 0.075 -0.075 0 0 0 +1572864 0 2 0 0 4980736 5242880 5242880 0.075 -0.05 0 0 0 +1572864 0 2 0 0 5111808 5242880 5242880 0.075 -0.025 0 0 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5373952 5242880 5242880 0.075 0.025 0 0 0 +1572864 0 2 0 0 5505024 5242880 5242880 0.075 0.05 0 0 0 +1572864 0 2 0 0 5636096 5242880 5242880 0.075 0.075 0 0 0 +1572864 0 2 0 0 5767168 5242880 5242880 0.075 0.1 0 0 0 +1572864 0 2 0 0 5898240 5242880 5242880 0.075 0.125 0 0 0 +1572864 0 2 0 0 6029312 5242880 5242880 0.075 0.15 0 0 0 +1572864 0 2 0 0 6160384 5242880 5242880 0.075 0.175 0 0 0 +1572864 0 2 0 0 6291456 5242880 5242880 0.075 0.2 0 0 0 +1572864 0 2 0 0 6422528 5242880 5242880 0.075 0.225 0 0 0 +1572864 0 2 0 0 6553600 5242880 5242880 0.075 0.25 0 0 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 3932160 5242880 5242880 0.08125 -0.25 0 0 0 +1703936 0 2 0 0 4063232 5242880 5242880 0.08125 -0.225 0 0 0 +1703936 0 2 0 0 4194304 5242880 5242880 0.08125 -0.2 0 0 0 +1703936 0 2 0 0 4325376 5242880 5242880 0.08125 -0.175 0 0 0 +1703936 0 2 0 0 4456448 5242880 5242880 0.08125 -0.15 0 0 0 +1703936 0 2 0 0 4587520 5242880 5242880 0.08125 -0.125 0 0 0 +1703936 0 2 0 0 4718592 5242880 5242880 0.08125 -0.1 0 0 0 +1703936 0 2 0 0 4849664 5242880 5242880 0.08125 -0.075 0 0 0 +1703936 0 2 0 0 4980736 5242880 5242880 0.08125 -0.05 0 0 0 +1703936 0 2 0 0 5111808 5242880 5242880 0.08125 -0.025 0 0 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5373952 5242880 5242880 0.08125 0.025 0 0 0 +1703936 0 2 0 0 5505024 5242880 5242880 0.08125 0.05 0 0 0 +1703936 0 2 0 0 5636096 5242880 5242880 0.08125 0.075 0 0 0 +1703936 0 2 0 0 5767168 5242880 5242880 0.08125 0.1 0 0 0 +1703936 0 2 0 0 5898240 5242880 5242880 0.08125 0.125 0 0 0 +1703936 0 2 0 0 6029312 5242880 5242880 0.08125 0.15 0 0 0 +1703936 0 2 0 0 6160384 5242880 5242880 0.08125 0.175 0 0 0 +1703936 0 2 0 0 6291456 5242880 5242880 0.08125 0.2 0 0 0 +1703936 0 2 0 0 6422528 5242880 5242880 0.08125 0.225 0 0 0 +1703936 0 2 0 0 6553600 5242880 5242880 0.08125 0.25 0 0 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 2621440 5242880 5242880 0.0875 -0.5 0 0 0 +1835008 0 1 0 0 2883584 5242880 5242880 0.0875 -0.45 0 0 0 +1835008 0 1 0 0 3145728 5242880 5242880 0.0875 -0.4 0 0 0 +1835008 0 1 0 0 3407872 5242880 5242880 0.0875 -0.35 0 0 0 +1835008 0 1 0 0 3670016 5242880 5242880 0.0875 -0.3 0 0 0 +1835008 0 1 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 0 +1835008 0 1 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 0 +1835008 0 1 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0 +1835008 0 1 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 0 +1835008 0 1 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 0 +1835008 0 1 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 0 +1835008 0 1 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0 +1835008 0 1 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 0 +1835008 0 1 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 0 +1835008 0 1 0 0 6815744 5242880 5242880 0.0875 0.3 0 0 0 +1835008 0 1 0 0 7077888 5242880 5242880 0.0875 0.35 0 0 0 +1835008 0 1 0 0 7340032 5242880 5242880 0.0875 0.4 0 0 0 +1835008 0 1 0 0 7602176 5242880 5242880 0.0875 0.45 0 0 0 +1835008 0 1 0 0 7864320 5242880 5242880 0.0875 0.5 0 0 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 3932160 5242880 5242880 0.0875 -0.25 0 0 0 +1835008 0 2 0 0 4063232 5242880 5242880 0.0875 -0.225 0 0 0 +1835008 0 2 0 0 4194304 5242880 5242880 0.0875 -0.2 0 0 0 +1835008 0 2 0 0 4325376 5242880 5242880 0.0875 -0.175 0 0 0 +1835008 0 2 0 0 4456448 5242880 5242880 0.0875 -0.15 0 0 0 +1835008 0 2 0 0 4587520 5242880 5242880 0.0875 -0.125 0 0 0 +1835008 0 2 0 0 4718592 5242880 5242880 0.0875 -0.1 0 0 0 +1835008 0 2 0 0 4849664 5242880 5242880 0.0875 -0.075 0 0 0 +1835008 0 2 0 0 4980736 5242880 5242880 0.0875 -0.05 0 0 0 +1835008 0 2 0 0 5111808 5242880 5242880 0.0875 -0.025 0 0 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5373952 5242880 5242880 0.0875 0.025 0 0 0 +1835008 0 2 0 0 5505024 5242880 5242880 0.0875 0.05 0 0 0 +1835008 0 2 0 0 5636096 5242880 5242880 0.0875 0.075 0 0 0 +1835008 0 2 0 0 5767168 5242880 5242880 0.0875 0.1 0 0 0 +1835008 0 2 0 0 5898240 5242880 5242880 0.0875 0.125 0 0 0 +1835008 0 2 0 0 6029312 5242880 5242880 0.0875 0.15 0 0 0 +1835008 0 2 0 0 6160384 5242880 5242880 0.0875 0.175 0 0 0 +1835008 0 2 0 0 6291456 5242880 5242880 0.0875 0.2 0 0 0 +1835008 0 2 0 0 6422528 5242880 5242880 0.0875 0.225 0 0 0 +1835008 0 2 0 0 6553600 5242880 5242880 0.0875 0.25 0 0 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 3932160 5242880 5242880 0.09375 -0.25 0 0 0 +1966080 0 2 0 0 4063232 5242880 5242880 0.09375 -0.225 0 0 0 +1966080 0 2 0 0 4194304 5242880 5242880 0.09375 -0.2 0 0 0 +1966080 0 2 0 0 4325376 5242880 5242880 0.09375 -0.175 0 0 0 +1966080 0 2 0 0 4456448 5242880 5242880 0.09375 -0.15 0 0 0 +1966080 0 2 0 0 4587520 5242880 5242880 0.09375 -0.125 0 0 0 +1966080 0 2 0 0 4718592 5242880 5242880 0.09375 -0.1 0 0 0 +1966080 0 2 0 0 4849664 5242880 5242880 0.09375 -0.075 0 0 0 +1966080 0 2 0 0 4980736 5242880 5242880 0.09375 -0.05 0 0 0 +1966080 0 2 0 0 5111808 5242880 5242880 0.09375 -0.025 0 0 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5373952 5242880 5242880 0.09375 0.025 0 0 0 +1966080 0 2 0 0 5505024 5242880 5242880 0.09375 0.05 0 0 0 +1966080 0 2 0 0 5636096 5242880 5242880 0.09375 0.075 0 0 0 +1966080 0 2 0 0 5767168 5242880 5242880 0.09375 0.1 0 0 0 +1966080 0 2 0 0 5898240 5242880 5242880 0.09375 0.125 0 0 0 +1966080 0 2 0 0 6029312 5242880 5242880 0.09375 0.15 0 0 0 +1966080 0 2 0 0 6160384 5242880 5242880 0.09375 0.175 0 0 0 +1966080 0 2 0 0 6291456 5242880 5242880 0.09375 0.2 0 0 0 +1966080 0 2 0 0 6422528 5242880 5242880 0.09375 0.225 0 0 0 +1966080 0 2 0 0 6553600 5242880 5242880 0.09375 0.25 0 0 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 0 5242880 5242880 0.1 -1 0 0 0 +2097152 0 0 0 0 524288 5242880 5242880 0.1 -0.9 0 0 0 +2097152 0 0 0 0 1048576 5242880 5242880 0.1 -0.8 0 0 0 +2097152 0 0 0 0 1572864 5242880 5242880 0.1 -0.7 0 0 0 +2097152 0 0 0 0 2097152 5242880 5242880 0.1 -0.6 0 0 0 +2097152 0 0 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 0 +2097152 0 0 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0 +2097152 0 0 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 0 +2097152 0 0 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 0 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 0 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 0 0 0 6815744 5242880 5242880 0.1 0.3 0 0 0 +2097152 0 0 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0 +2097152 0 0 0 0 7864320 5242880 5242880 0.1 0.5 0 0 0 +2097152 0 0 0 0 8388608 5242880 5242880 0.1 0.6 0 0 0 +2097152 0 0 0 0 8912896 5242880 5242880 0.1 0.7 0 0 0 +2097152 0 0 0 0 9437184 5242880 5242880 0.1 0.8 0 0 0 +2097152 0 0 0 0 9961472 5242880 5242880 0.1 0.9 0 0 0 +2097152 0 0 0 0 10485760 5242880 5242880 0.1 1 0 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 2621440 5242880 5242880 0.1 -0.5 0 0 0 +2097152 0 1 0 0 2883584 5242880 5242880 0.1 -0.45 0 0 0 +2097152 0 1 0 0 3145728 5242880 5242880 0.1 -0.4 0 0 0 +2097152 0 1 0 0 3407872 5242880 5242880 0.1 -0.35 0 0 0 +2097152 0 1 0 0 3670016 5242880 5242880 0.1 -0.3 0 0 0 +2097152 0 1 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 0 +2097152 0 1 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 1 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0 +2097152 0 1 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 1 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5505024 5242880 5242880 0.1 0.05 0 0 0 +2097152 0 1 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 1 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0 +2097152 0 1 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 1 0 0 6553600 5242880 5242880 0.1 0.25 0 0 0 +2097152 0 1 0 0 6815744 5242880 5242880 0.1 0.3 0 0 0 +2097152 0 1 0 0 7077888 5242880 5242880 0.1 0.35 0 0 0 +2097152 0 1 0 0 7340032 5242880 5242880 0.1 0.4 0 0 0 +2097152 0 1 0 0 7602176 5242880 5242880 0.1 0.45 0 0 0 +2097152 0 1 0 0 7864320 5242880 5242880 0.1 0.5 0 0 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 3932160 5242880 5242880 0.1 -0.25 0 0 0 +2097152 0 2 0 0 4063232 5242880 5242880 0.1 -0.225 0 0 0 +2097152 0 2 0 0 4194304 5242880 5242880 0.1 -0.2 0 0 0 +2097152 0 2 0 0 4325376 5242880 5242880 0.1 -0.175 0 0 0 +2097152 0 2 0 0 4456448 5242880 5242880 0.1 -0.15 0 0 0 +2097152 0 2 0 0 4587520 5242880 5242880 0.1 -0.125 0 0 0 +2097152 0 2 0 0 4718592 5242880 5242880 0.1 -0.1 0 0 0 +2097152 0 2 0 0 4849664 5242880 5242880 0.1 -0.075 0 0 0 +2097152 0 2 0 0 4980736 5242880 5242880 0.1 -0.05 0 0 0 +2097152 0 2 0 0 5111808 5242880 5242880 0.1 -0.025 0 0 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5373952 5242880 5242880 0.1 0.025 0 0 0 +2097152 0 2 0 0 5505024 5242880 5242880 0.1 0.05 0 0 0 +2097152 0 2 0 0 5636096 5242880 5242880 0.1 0.075 0 0 0 +2097152 0 2 0 0 5767168 5242880 5242880 0.1 0.1 0 0 0 +2097152 0 2 0 0 5898240 5242880 5242880 0.1 0.125 0 0 0 +2097152 0 2 0 0 6029312 5242880 5242880 0.1 0.15 0 0 0 +2097152 0 2 0 0 6160384 5242880 5242880 0.1 0.175 0 0 0 +2097152 0 2 0 0 6291456 5242880 5242880 0.1 0.2 0 0 0 +2097152 0 2 0 0 6422528 5242880 5242880 0.1 0.225 0 0 0 +2097152 0 2 0 0 6553600 5242880 5242880 0.1 0.25 0 0 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.y.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.y.asc new file mode 100644 index 000000000..b7e5ce4c4 --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.y.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiz y (phiz) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 0 5242880 0 0 -1 0 0 +0 0 0 0 0 5242880 524288 5242880 0 0 -0.9 0 0 +0 0 0 0 0 5242880 1048576 5242880 0 0 -0.8 0 0 +0 0 0 0 0 5242880 1572864 5242880 0 0 -0.7 0 0 +0 0 0 0 0 5242880 2097152 5242880 0 0 -0.6 0 0 +0 0 0 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 0 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 0 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 0 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 0 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 0 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 0 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 0 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 0 0 0 5242880 7864320 5242880 0 0 0.5 0 0 +0 0 0 0 0 5242880 8388608 5242880 0 0 0.6 0 0 +0 0 0 0 0 5242880 8912896 5242880 0 0 0.7 0 0 +0 0 0 0 0 5242880 9437184 5242880 0 0 0.8 0 0 +0 0 0 0 0 5242880 9961472 5242880 0 0 0.9 0 0 +0 0 0 0 0 5242880 10485760 5242880 0 0 1 0 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 2621440 5242880 0 0 -0.5 0 0 +0 0 1 0 0 5242880 2883584 5242880 0 0 -0.45 0 0 +0 0 1 0 0 5242880 3145728 5242880 0 0 -0.4 0 0 +0 0 1 0 0 5242880 3407872 5242880 0 0 -0.35 0 0 +0 0 1 0 0 5242880 3670016 5242880 0 0 -0.3 0 0 +0 0 1 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 1 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 1 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 1 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 1 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 1 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 1 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 1 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 1 0 0 5242880 6553600 5242880 0 0 0.25 0 0 +0 0 1 0 0 5242880 6815744 5242880 0 0 0.3 0 0 +0 0 1 0 0 5242880 7077888 5242880 0 0 0.35 0 0 +0 0 1 0 0 5242880 7340032 5242880 0 0 0.4 0 0 +0 0 1 0 0 5242880 7602176 5242880 0 0 0.45 0 0 +0 0 1 0 0 5242880 7864320 5242880 0 0 0.5 0 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 3932160 5242880 0 0 -0.25 0 0 +0 0 2 0 0 5242880 4063232 5242880 0 0 -0.225 0 0 +0 0 2 0 0 5242880 4194304 5242880 0 0 -0.2 0 0 +0 0 2 0 0 5242880 4325376 5242880 0 0 -0.175 0 0 +0 0 2 0 0 5242880 4456448 5242880 0 0 -0.15 0 0 +0 0 2 0 0 5242880 4587520 5242880 0 0 -0.125 0 0 +0 0 2 0 0 5242880 4718592 5242880 0 0 -0.1 0 0 +0 0 2 0 0 5242880 4849664 5242880 0 0 -0.075 0 0 +0 0 2 0 0 5242880 4980736 5242880 0 0 -0.05 0 0 +0 0 2 0 0 5242880 5111808 5242880 0 0 -0.025 0 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5373952 5242880 0 0 0.025 0 0 +0 0 2 0 0 5242880 5505024 5242880 0 0 0.05 0 0 +0 0 2 0 0 5242880 5636096 5242880 0 0 0.075 0 0 +0 0 2 0 0 5242880 5767168 5242880 0 0 0.1 0 0 +0 0 2 0 0 5242880 5898240 5242880 0 0 0.125 0 0 +0 0 2 0 0 5242880 6029312 5242880 0 0 0.15 0 0 +0 0 2 0 0 5242880 6160384 5242880 0 0 0.175 0 0 +0 0 2 0 0 5242880 6291456 5242880 0 0 0.2 0 0 +0 0 2 0 0 5242880 6422528 5242880 0 0 0.225 0 0 +0 0 2 0 0 5242880 6553600 5242880 0 0 0.25 0 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 3932160 5242880 0.00625 0 -0.25 0 0 +131072 0 2 0 0 5242880 4063232 5242880 0.00625 0 -0.225 0 0 +131072 0 2 0 0 5242880 4194304 5242880 0.00625 0 -0.2 0 0 +131072 0 2 0 0 5242880 4325376 5242880 0.00625 0 -0.175 0 0 +131072 0 2 0 0 5242880 4456448 5242880 0.00625 0 -0.15 0 0 +131072 0 2 0 0 5242880 4587520 5242880 0.00625 0 -0.125 0 0 +131072 0 2 0 0 5242880 4718592 5242880 0.00625 0 -0.1 0 0 +131072 0 2 0 0 5242880 4849664 5242880 0.00625 0 -0.075 0 0 +131072 0 2 0 0 5242880 4980736 5242880 0.00625 0 -0.05 0 0 +131072 0 2 0 0 5242880 5111808 5242880 0.00625 0 -0.025 0 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5373952 5242880 0.00625 0 0.025 0 0 +131072 0 2 0 0 5242880 5505024 5242880 0.00625 0 0.05 0 0 +131072 0 2 0 0 5242880 5636096 5242880 0.00625 0 0.075 0 0 +131072 0 2 0 0 5242880 5767168 5242880 0.00625 0 0.1 0 0 +131072 0 2 0 0 5242880 5898240 5242880 0.00625 0 0.125 0 0 +131072 0 2 0 0 5242880 6029312 5242880 0.00625 0 0.15 0 0 +131072 0 2 0 0 5242880 6160384 5242880 0.00625 0 0.175 0 0 +131072 0 2 0 0 5242880 6291456 5242880 0.00625 0 0.2 0 0 +131072 0 2 0 0 5242880 6422528 5242880 0.00625 0 0.225 0 0 +131072 0 2 0 0 5242880 6553600 5242880 0.00625 0 0.25 0 0 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 2621440 5242880 0.0125 0 -0.5 0 0 +262144 0 1 0 0 5242880 2883584 5242880 0.0125 0 -0.45 0 0 +262144 0 1 0 0 5242880 3145728 5242880 0.0125 0 -0.4 0 0 +262144 0 1 0 0 5242880 3407872 5242880 0.0125 0 -0.35 0 0 +262144 0 1 0 0 5242880 3670016 5242880 0.0125 0 -0.3 0 0 +262144 0 1 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 0 +262144 0 1 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 1 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 1 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 0 +262144 0 1 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 1 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 0 +262144 0 1 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 1 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 1 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 0 +262144 0 1 0 0 5242880 6815744 5242880 0.0125 0 0.3 0 0 +262144 0 1 0 0 5242880 7077888 5242880 0.0125 0 0.35 0 0 +262144 0 1 0 0 5242880 7340032 5242880 0.0125 0 0.4 0 0 +262144 0 1 0 0 5242880 7602176 5242880 0.0125 0 0.45 0 0 +262144 0 1 0 0 5242880 7864320 5242880 0.0125 0 0.5 0 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 3932160 5242880 0.0125 0 -0.25 0 0 +262144 0 2 0 0 5242880 4063232 5242880 0.0125 0 -0.225 0 0 +262144 0 2 0 0 5242880 4194304 5242880 0.0125 0 -0.2 0 0 +262144 0 2 0 0 5242880 4325376 5242880 0.0125 0 -0.175 0 0 +262144 0 2 0 0 5242880 4456448 5242880 0.0125 0 -0.15 0 0 +262144 0 2 0 0 5242880 4587520 5242880 0.0125 0 -0.125 0 0 +262144 0 2 0 0 5242880 4718592 5242880 0.0125 0 -0.1 0 0 +262144 0 2 0 0 5242880 4849664 5242880 0.0125 0 -0.075 0 0 +262144 0 2 0 0 5242880 4980736 5242880 0.0125 0 -0.05 0 0 +262144 0 2 0 0 5242880 5111808 5242880 0.0125 0 -0.025 0 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5373952 5242880 0.0125 0 0.025 0 0 +262144 0 2 0 0 5242880 5505024 5242880 0.0125 0 0.05 0 0 +262144 0 2 0 0 5242880 5636096 5242880 0.0125 0 0.075 0 0 +262144 0 2 0 0 5242880 5767168 5242880 0.0125 0 0.1 0 0 +262144 0 2 0 0 5242880 5898240 5242880 0.0125 0 0.125 0 0 +262144 0 2 0 0 5242880 6029312 5242880 0.0125 0 0.15 0 0 +262144 0 2 0 0 5242880 6160384 5242880 0.0125 0 0.175 0 0 +262144 0 2 0 0 5242880 6291456 5242880 0.0125 0 0.2 0 0 +262144 0 2 0 0 5242880 6422528 5242880 0.0125 0 0.225 0 0 +262144 0 2 0 0 5242880 6553600 5242880 0.0125 0 0.25 0 0 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 3932160 5242880 0.01875 0 -0.25 0 0 +393216 0 2 0 0 5242880 4063232 5242880 0.01875 0 -0.225 0 0 +393216 0 2 0 0 5242880 4194304 5242880 0.01875 0 -0.2 0 0 +393216 0 2 0 0 5242880 4325376 5242880 0.01875 0 -0.175 0 0 +393216 0 2 0 0 5242880 4456448 5242880 0.01875 0 -0.15 0 0 +393216 0 2 0 0 5242880 4587520 5242880 0.01875 0 -0.125 0 0 +393216 0 2 0 0 5242880 4718592 5242880 0.01875 0 -0.1 0 0 +393216 0 2 0 0 5242880 4849664 5242880 0.01875 0 -0.075 0 0 +393216 0 2 0 0 5242880 4980736 5242880 0.01875 0 -0.05 0 0 +393216 0 2 0 0 5242880 5111808 5242880 0.01875 0 -0.025 0 0 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5373952 5242880 0.01875 0 0.025 0 0 +393216 0 2 0 0 5242880 5505024 5242880 0.01875 0 0.05 0 0 +393216 0 2 0 0 5242880 5636096 5242880 0.01875 0 0.075 0 0 +393216 0 2 0 0 5242880 5767168 5242880 0.01875 0 0.1 0 0 +393216 0 2 0 0 5242880 5898240 5242880 0.01875 0 0.125 0 0 +393216 0 2 0 0 5242880 6029312 5242880 0.01875 0 0.15 0 0 +393216 0 2 0 0 5242880 6160384 5242880 0.01875 0 0.175 0 0 +393216 0 2 0 0 5242880 6291456 5242880 0.01875 0 0.2 0 0 +393216 0 2 0 0 5242880 6422528 5242880 0.01875 0 0.225 0 0 +393216 0 2 0 0 5242880 6553600 5242880 0.01875 0 0.25 0 0 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 0 5242880 0.025 0 -1 0 0 +524288 0 0 0 0 5242880 524288 5242880 0.025 0 -0.9 0 0 +524288 0 0 0 0 5242880 1048576 5242880 0.025 0 -0.8 0 0 +524288 0 0 0 0 5242880 1572864 5242880 0.025 0 -0.7 0 0 +524288 0 0 0 0 5242880 2097152 5242880 0.025 0 -0.6 0 0 +524288 0 0 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 0 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 0 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 0 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 0 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 0 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 0 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 0 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 0 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 +524288 0 0 0 0 5242880 8388608 5242880 0.025 0 0.6 0 0 +524288 0 0 0 0 5242880 8912896 5242880 0.025 0 0.7 0 0 +524288 0 0 0 0 5242880 9437184 5242880 0.025 0 0.8 0 0 +524288 0 0 0 0 5242880 9961472 5242880 0.025 0 0.9 0 0 +524288 0 0 0 0 5242880 10485760 5242880 0.025 0 1 0 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 2621440 5242880 0.025 0 -0.5 0 0 +524288 0 1 0 0 5242880 2883584 5242880 0.025 0 -0.45 0 0 +524288 0 1 0 0 5242880 3145728 5242880 0.025 0 -0.4 0 0 +524288 0 1 0 0 5242880 3407872 5242880 0.025 0 -0.35 0 0 +524288 0 1 0 0 5242880 3670016 5242880 0.025 0 -0.3 0 0 +524288 0 1 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0 +524288 0 1 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 1 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 0 +524288 0 1 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 1 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 0 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5505024 5242880 0.025 0 0.05 0 0 +524288 0 1 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 1 0 0 5242880 6029312 5242880 0.025 0 0.15 0 0 +524288 0 1 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 1 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0 +524288 0 1 0 0 5242880 6815744 5242880 0.025 0 0.3 0 0 +524288 0 1 0 0 5242880 7077888 5242880 0.025 0 0.35 0 0 +524288 0 1 0 0 5242880 7340032 5242880 0.025 0 0.4 0 0 +524288 0 1 0 0 5242880 7602176 5242880 0.025 0 0.45 0 0 +524288 0 1 0 0 5242880 7864320 5242880 0.025 0 0.5 0 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 3932160 5242880 0.025 0 -0.25 0 0 +524288 0 2 0 0 5242880 4063232 5242880 0.025 0 -0.225 0 0 +524288 0 2 0 0 5242880 4194304 5242880 0.025 0 -0.2 0 0 +524288 0 2 0 0 5242880 4325376 5242880 0.025 0 -0.175 0 0 +524288 0 2 0 0 5242880 4456448 5242880 0.025 0 -0.15 0 0 +524288 0 2 0 0 5242880 4587520 5242880 0.025 0 -0.125 0 0 +524288 0 2 0 0 5242880 4718592 5242880 0.025 0 -0.1 0 0 +524288 0 2 0 0 5242880 4849664 5242880 0.025 0 -0.075 0 0 +524288 0 2 0 0 5242880 4980736 5242880 0.025 0 -0.05 0 0 +524288 0 2 0 0 5242880 5111808 5242880 0.025 0 -0.025 0 0 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5373952 5242880 0.025 0 0.025 0 0 +524288 0 2 0 0 5242880 5505024 5242880 0.025 0 0.05 0 0 +524288 0 2 0 0 5242880 5636096 5242880 0.025 0 0.075 0 0 +524288 0 2 0 0 5242880 5767168 5242880 0.025 0 0.1 0 0 +524288 0 2 0 0 5242880 5898240 5242880 0.025 0 0.125 0 0 +524288 0 2 0 0 5242880 6029312 5242880 0.025 0 0.15 0 0 +524288 0 2 0 0 5242880 6160384 5242880 0.025 0 0.175 0 0 +524288 0 2 0 0 5242880 6291456 5242880 0.025 0 0.2 0 0 +524288 0 2 0 0 5242880 6422528 5242880 0.025 0 0.225 0 0 +524288 0 2 0 0 5242880 6553600 5242880 0.025 0 0.25 0 0 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 3932160 5242880 0.03125 0 -0.25 0 0 +655360 0 2 0 0 5242880 4063232 5242880 0.03125 0 -0.225 0 0 +655360 0 2 0 0 5242880 4194304 5242880 0.03125 0 -0.2 0 0 +655360 0 2 0 0 5242880 4325376 5242880 0.03125 0 -0.175 0 0 +655360 0 2 0 0 5242880 4456448 5242880 0.03125 0 -0.15 0 0 +655360 0 2 0 0 5242880 4587520 5242880 0.03125 0 -0.125 0 0 +655360 0 2 0 0 5242880 4718592 5242880 0.03125 0 -0.1 0 0 +655360 0 2 0 0 5242880 4849664 5242880 0.03125 0 -0.075 0 0 +655360 0 2 0 0 5242880 4980736 5242880 0.03125 0 -0.05 0 0 +655360 0 2 0 0 5242880 5111808 5242880 0.03125 0 -0.025 0 0 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5373952 5242880 0.03125 0 0.025 0 0 +655360 0 2 0 0 5242880 5505024 5242880 0.03125 0 0.05 0 0 +655360 0 2 0 0 5242880 5636096 5242880 0.03125 0 0.075 0 0 +655360 0 2 0 0 5242880 5767168 5242880 0.03125 0 0.1 0 0 +655360 0 2 0 0 5242880 5898240 5242880 0.03125 0 0.125 0 0 +655360 0 2 0 0 5242880 6029312 5242880 0.03125 0 0.15 0 0 +655360 0 2 0 0 5242880 6160384 5242880 0.03125 0 0.175 0 0 +655360 0 2 0 0 5242880 6291456 5242880 0.03125 0 0.2 0 0 +655360 0 2 0 0 5242880 6422528 5242880 0.03125 0 0.225 0 0 +655360 0 2 0 0 5242880 6553600 5242880 0.03125 0 0.25 0 0 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 2621440 5242880 0.0375 0 -0.5 0 0 +786432 0 1 0 0 5242880 2883584 5242880 0.0375 0 -0.45 0 0 +786432 0 1 0 0 5242880 3145728 5242880 0.0375 0 -0.4 0 0 +786432 0 1 0 0 5242880 3407872 5242880 0.0375 0 -0.35 0 0 +786432 0 1 0 0 5242880 3670016 5242880 0.0375 0 -0.3 0 0 +786432 0 1 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0 +786432 0 1 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0 +786432 0 1 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0 +786432 0 1 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 0 +786432 0 1 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 0 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 0 +786432 0 1 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 0 +786432 0 1 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0 +786432 0 1 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0 +786432 0 1 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0 +786432 0 1 0 0 5242880 6815744 5242880 0.0375 0 0.3 0 0 +786432 0 1 0 0 5242880 7077888 5242880 0.0375 0 0.35 0 0 +786432 0 1 0 0 5242880 7340032 5242880 0.0375 0 0.4 0 0 +786432 0 1 0 0 5242880 7602176 5242880 0.0375 0 0.45 0 0 +786432 0 1 0 0 5242880 7864320 5242880 0.0375 0 0.5 0 0 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 3932160 5242880 0.0375 0 -0.25 0 0 +786432 0 2 0 0 5242880 4063232 5242880 0.0375 0 -0.225 0 0 +786432 0 2 0 0 5242880 4194304 5242880 0.0375 0 -0.2 0 0 +786432 0 2 0 0 5242880 4325376 5242880 0.0375 0 -0.175 0 0 +786432 0 2 0 0 5242880 4456448 5242880 0.0375 0 -0.15 0 0 +786432 0 2 0 0 5242880 4587520 5242880 0.0375 0 -0.125 0 0 +786432 0 2 0 0 5242880 4718592 5242880 0.0375 0 -0.1 0 0 +786432 0 2 0 0 5242880 4849664 5242880 0.0375 0 -0.075 0 0 +786432 0 2 0 0 5242880 4980736 5242880 0.0375 0 -0.05 0 0 +786432 0 2 0 0 5242880 5111808 5242880 0.0375 0 -0.025 0 0 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5373952 5242880 0.0375 0 0.025 0 0 +786432 0 2 0 0 5242880 5505024 5242880 0.0375 0 0.05 0 0 +786432 0 2 0 0 5242880 5636096 5242880 0.0375 0 0.075 0 0 +786432 0 2 0 0 5242880 5767168 5242880 0.0375 0 0.1 0 0 +786432 0 2 0 0 5242880 5898240 5242880 0.0375 0 0.125 0 0 +786432 0 2 0 0 5242880 6029312 5242880 0.0375 0 0.15 0 0 +786432 0 2 0 0 5242880 6160384 5242880 0.0375 0 0.175 0 0 +786432 0 2 0 0 5242880 6291456 5242880 0.0375 0 0.2 0 0 +786432 0 2 0 0 5242880 6422528 5242880 0.0375 0 0.225 0 0 +786432 0 2 0 0 5242880 6553600 5242880 0.0375 0 0.25 0 0 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 3932160 5242880 0.04375 0 -0.25 0 0 +917504 0 2 0 0 5242880 4063232 5242880 0.04375 0 -0.225 0 0 +917504 0 2 0 0 5242880 4194304 5242880 0.04375 0 -0.2 0 0 +917504 0 2 0 0 5242880 4325376 5242880 0.04375 0 -0.175 0 0 +917504 0 2 0 0 5242880 4456448 5242880 0.04375 0 -0.15 0 0 +917504 0 2 0 0 5242880 4587520 5242880 0.04375 0 -0.125 0 0 +917504 0 2 0 0 5242880 4718592 5242880 0.04375 0 -0.1 0 0 +917504 0 2 0 0 5242880 4849664 5242880 0.04375 0 -0.075 0 0 +917504 0 2 0 0 5242880 4980736 5242880 0.04375 0 -0.05 0 0 +917504 0 2 0 0 5242880 5111808 5242880 0.04375 0 -0.025 0 0 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5373952 5242880 0.04375 0 0.025 0 0 +917504 0 2 0 0 5242880 5505024 5242880 0.04375 0 0.05 0 0 +917504 0 2 0 0 5242880 5636096 5242880 0.04375 0 0.075 0 0 +917504 0 2 0 0 5242880 5767168 5242880 0.04375 0 0.1 0 0 +917504 0 2 0 0 5242880 5898240 5242880 0.04375 0 0.125 0 0 +917504 0 2 0 0 5242880 6029312 5242880 0.04375 0 0.15 0 0 +917504 0 2 0 0 5242880 6160384 5242880 0.04375 0 0.175 0 0 +917504 0 2 0 0 5242880 6291456 5242880 0.04375 0 0.2 0 0 +917504 0 2 0 0 5242880 6422528 5242880 0.04375 0 0.225 0 0 +917504 0 2 0 0 5242880 6553600 5242880 0.04375 0 0.25 0 0 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 0 5242880 0.05 0 -1 0 0 +1048576 0 0 0 0 5242880 524288 5242880 0.05 0 -0.9 0 0 +1048576 0 0 0 0 5242880 1048576 5242880 0.05 0 -0.8 0 0 +1048576 0 0 0 0 5242880 1572864 5242880 0.05 0 -0.7 0 0 +1048576 0 0 0 0 5242880 2097152 5242880 0.05 0 -0.6 0 0 +1048576 0 0 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 0 +1048576 0 0 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0 +1048576 0 0 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 0 +1048576 0 0 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 0 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 0 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 0 0 0 5242880 6815744 5242880 0.05 0 0.3 0 0 +1048576 0 0 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0 +1048576 0 0 0 0 5242880 7864320 5242880 0.05 0 0.5 0 0 +1048576 0 0 0 0 5242880 8388608 5242880 0.05 0 0.6 0 0 +1048576 0 0 0 0 5242880 8912896 5242880 0.05 0 0.7 0 0 +1048576 0 0 0 0 5242880 9437184 5242880 0.05 0 0.8 0 0 +1048576 0 0 0 0 5242880 9961472 5242880 0.05 0 0.9 0 0 +1048576 0 0 0 0 5242880 10485760 5242880 0.05 0 1 0 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 2621440 5242880 0.05 0 -0.5 0 0 +1048576 0 1 0 0 5242880 2883584 5242880 0.05 0 -0.45 0 0 +1048576 0 1 0 0 5242880 3145728 5242880 0.05 0 -0.4 0 0 +1048576 0 1 0 0 5242880 3407872 5242880 0.05 0 -0.35 0 0 +1048576 0 1 0 0 5242880 3670016 5242880 0.05 0 -0.3 0 0 +1048576 0 1 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0 +1048576 0 1 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 1 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0 +1048576 0 1 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 1 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 0 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5505024 5242880 0.05 0 0.05 0 0 +1048576 0 1 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 1 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0 +1048576 0 1 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 1 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0 +1048576 0 1 0 0 5242880 6815744 5242880 0.05 0 0.3 0 0 +1048576 0 1 0 0 5242880 7077888 5242880 0.05 0 0.35 0 0 +1048576 0 1 0 0 5242880 7340032 5242880 0.05 0 0.4 0 0 +1048576 0 1 0 0 5242880 7602176 5242880 0.05 0 0.45 0 0 +1048576 0 1 0 0 5242880 7864320 5242880 0.05 0 0.5 0 0 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 3932160 5242880 0.05 0 -0.25 0 0 +1048576 0 2 0 0 5242880 4063232 5242880 0.05 0 -0.225 0 0 +1048576 0 2 0 0 5242880 4194304 5242880 0.05 0 -0.2 0 0 +1048576 0 2 0 0 5242880 4325376 5242880 0.05 0 -0.175 0 0 +1048576 0 2 0 0 5242880 4456448 5242880 0.05 0 -0.15 0 0 +1048576 0 2 0 0 5242880 4587520 5242880 0.05 0 -0.125 0 0 +1048576 0 2 0 0 5242880 4718592 5242880 0.05 0 -0.1 0 0 +1048576 0 2 0 0 5242880 4849664 5242880 0.05 0 -0.075 0 0 +1048576 0 2 0 0 5242880 4980736 5242880 0.05 0 -0.05 0 0 +1048576 0 2 0 0 5242880 5111808 5242880 0.05 0 -0.025 0 0 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5373952 5242880 0.05 0 0.025 0 0 +1048576 0 2 0 0 5242880 5505024 5242880 0.05 0 0.05 0 0 +1048576 0 2 0 0 5242880 5636096 5242880 0.05 0 0.075 0 0 +1048576 0 2 0 0 5242880 5767168 5242880 0.05 0 0.1 0 0 +1048576 0 2 0 0 5242880 5898240 5242880 0.05 0 0.125 0 0 +1048576 0 2 0 0 5242880 6029312 5242880 0.05 0 0.15 0 0 +1048576 0 2 0 0 5242880 6160384 5242880 0.05 0 0.175 0 0 +1048576 0 2 0 0 5242880 6291456 5242880 0.05 0 0.2 0 0 +1048576 0 2 0 0 5242880 6422528 5242880 0.05 0 0.225 0 0 +1048576 0 2 0 0 5242880 6553600 5242880 0.05 0 0.25 0 0 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 3932160 5242880 0.05625 0 -0.25 0 0 +1179648 0 2 0 0 5242880 4063232 5242880 0.05625 0 -0.225 0 0 +1179648 0 2 0 0 5242880 4194304 5242880 0.05625 0 -0.2 0 0 +1179648 0 2 0 0 5242880 4325376 5242880 0.05625 0 -0.175 0 0 +1179648 0 2 0 0 5242880 4456448 5242880 0.05625 0 -0.15 0 0 +1179648 0 2 0 0 5242880 4587520 5242880 0.05625 0 -0.125 0 0 +1179648 0 2 0 0 5242880 4718592 5242880 0.05625 0 -0.1 0 0 +1179648 0 2 0 0 5242880 4849664 5242880 0.05625 0 -0.075 0 0 +1179648 0 2 0 0 5242880 4980736 5242880 0.05625 0 -0.05 0 0 +1179648 0 2 0 0 5242880 5111808 5242880 0.05625 0 -0.025 0 0 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5373952 5242880 0.05625 0 0.025 0 0 +1179648 0 2 0 0 5242880 5505024 5242880 0.05625 0 0.05 0 0 +1179648 0 2 0 0 5242880 5636096 5242880 0.05625 0 0.075 0 0 +1179648 0 2 0 0 5242880 5767168 5242880 0.05625 0 0.1 0 0 +1179648 0 2 0 0 5242880 5898240 5242880 0.05625 0 0.125 0 0 +1179648 0 2 0 0 5242880 6029312 5242880 0.05625 0 0.15 0 0 +1179648 0 2 0 0 5242880 6160384 5242880 0.05625 0 0.175 0 0 +1179648 0 2 0 0 5242880 6291456 5242880 0.05625 0 0.2 0 0 +1179648 0 2 0 0 5242880 6422528 5242880 0.05625 0 0.225 0 0 +1179648 0 2 0 0 5242880 6553600 5242880 0.05625 0 0.25 0 0 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 2621440 5242880 0.0625 0 -0.5 0 0 +1310720 0 1 0 0 5242880 2883584 5242880 0.0625 0 -0.45 0 0 +1310720 0 1 0 0 5242880 3145728 5242880 0.0625 0 -0.4 0 0 +1310720 0 1 0 0 5242880 3407872 5242880 0.0625 0 -0.35 0 0 +1310720 0 1 0 0 5242880 3670016 5242880 0.0625 0 -0.3 0 0 +1310720 0 1 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0 +1310720 0 1 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 0 +1310720 0 1 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0 +1310720 0 1 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 0 +1310720 0 1 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 0 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 0 +1310720 0 1 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 0 +1310720 0 1 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0 +1310720 0 1 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 0 +1310720 0 1 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0 +1310720 0 1 0 0 5242880 6815744 5242880 0.0625 0 0.3 0 0 +1310720 0 1 0 0 5242880 7077888 5242880 0.0625 0 0.35 0 0 +1310720 0 1 0 0 5242880 7340032 5242880 0.0625 0 0.4 0 0 +1310720 0 1 0 0 5242880 7602176 5242880 0.0625 0 0.45 0 0 +1310720 0 1 0 0 5242880 7864320 5242880 0.0625 0 0.5 0 0 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 3932160 5242880 0.0625 0 -0.25 0 0 +1310720 0 2 0 0 5242880 4063232 5242880 0.0625 0 -0.225 0 0 +1310720 0 2 0 0 5242880 4194304 5242880 0.0625 0 -0.2 0 0 +1310720 0 2 0 0 5242880 4325376 5242880 0.0625 0 -0.175 0 0 +1310720 0 2 0 0 5242880 4456448 5242880 0.0625 0 -0.15 0 0 +1310720 0 2 0 0 5242880 4587520 5242880 0.0625 0 -0.125 0 0 +1310720 0 2 0 0 5242880 4718592 5242880 0.0625 0 -0.1 0 0 +1310720 0 2 0 0 5242880 4849664 5242880 0.0625 0 -0.075 0 0 +1310720 0 2 0 0 5242880 4980736 5242880 0.0625 0 -0.05 0 0 +1310720 0 2 0 0 5242880 5111808 5242880 0.0625 0 -0.025 0 0 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5373952 5242880 0.0625 0 0.025 0 0 +1310720 0 2 0 0 5242880 5505024 5242880 0.0625 0 0.05 0 0 +1310720 0 2 0 0 5242880 5636096 5242880 0.0625 0 0.075 0 0 +1310720 0 2 0 0 5242880 5767168 5242880 0.0625 0 0.1 0 0 +1310720 0 2 0 0 5242880 5898240 5242880 0.0625 0 0.125 0 0 +1310720 0 2 0 0 5242880 6029312 5242880 0.0625 0 0.15 0 0 +1310720 0 2 0 0 5242880 6160384 5242880 0.0625 0 0.175 0 0 +1310720 0 2 0 0 5242880 6291456 5242880 0.0625 0 0.2 0 0 +1310720 0 2 0 0 5242880 6422528 5242880 0.0625 0 0.225 0 0 +1310720 0 2 0 0 5242880 6553600 5242880 0.0625 0 0.25 0 0 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 3932160 5242880 0.06875 0 -0.25 0 0 +1441792 0 2 0 0 5242880 4063232 5242880 0.06875 0 -0.225 0 0 +1441792 0 2 0 0 5242880 4194304 5242880 0.06875 0 -0.2 0 0 +1441792 0 2 0 0 5242880 4325376 5242880 0.06875 0 -0.175 0 0 +1441792 0 2 0 0 5242880 4456448 5242880 0.06875 0 -0.15 0 0 +1441792 0 2 0 0 5242880 4587520 5242880 0.06875 0 -0.125 0 0 +1441792 0 2 0 0 5242880 4718592 5242880 0.06875 0 -0.1 0 0 +1441792 0 2 0 0 5242880 4849664 5242880 0.06875 0 -0.075 0 0 +1441792 0 2 0 0 5242880 4980736 5242880 0.06875 0 -0.05 0 0 +1441792 0 2 0 0 5242880 5111808 5242880 0.06875 0 -0.025 0 0 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5373952 5242880 0.06875 0 0.025 0 0 +1441792 0 2 0 0 5242880 5505024 5242880 0.06875 0 0.05 0 0 +1441792 0 2 0 0 5242880 5636096 5242880 0.06875 0 0.075 0 0 +1441792 0 2 0 0 5242880 5767168 5242880 0.06875 0 0.1 0 0 +1441792 0 2 0 0 5242880 5898240 5242880 0.06875 0 0.125 0 0 +1441792 0 2 0 0 5242880 6029312 5242880 0.06875 0 0.15 0 0 +1441792 0 2 0 0 5242880 6160384 5242880 0.06875 0 0.175 0 0 +1441792 0 2 0 0 5242880 6291456 5242880 0.06875 0 0.2 0 0 +1441792 0 2 0 0 5242880 6422528 5242880 0.06875 0 0.225 0 0 +1441792 0 2 0 0 5242880 6553600 5242880 0.06875 0 0.25 0 0 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 0 5242880 0.075 0 -1 0 0 +1572864 0 0 0 0 5242880 524288 5242880 0.075 0 -0.9 0 0 +1572864 0 0 0 0 5242880 1048576 5242880 0.075 0 -0.8 0 0 +1572864 0 0 0 0 5242880 1572864 5242880 0.075 0 -0.7 0 0 +1572864 0 0 0 0 5242880 2097152 5242880 0.075 0 -0.6 0 0 +1572864 0 0 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 0 +1572864 0 0 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0 +1572864 0 0 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 0 +1572864 0 0 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 0 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 0 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 0 0 0 5242880 6815744 5242880 0.075 0 0.3 0 0 +1572864 0 0 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0 +1572864 0 0 0 0 5242880 7864320 5242880 0.075 0 0.5 0 0 +1572864 0 0 0 0 5242880 8388608 5242880 0.075 0 0.6 0 0 +1572864 0 0 0 0 5242880 8912896 5242880 0.075 0 0.7 0 0 +1572864 0 0 0 0 5242880 9437184 5242880 0.075 0 0.8 0 0 +1572864 0 0 0 0 5242880 9961472 5242880 0.075 0 0.9 0 0 +1572864 0 0 0 0 5242880 10485760 5242880 0.075 0 1 0 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 2621440 5242880 0.075 0 -0.5 0 0 +1572864 0 1 0 0 5242880 2883584 5242880 0.075 0 -0.45 0 0 +1572864 0 1 0 0 5242880 3145728 5242880 0.075 0 -0.4 0 0 +1572864 0 1 0 0 5242880 3407872 5242880 0.075 0 -0.35 0 0 +1572864 0 1 0 0 5242880 3670016 5242880 0.075 0 -0.3 0 0 +1572864 0 1 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 0 +1572864 0 1 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 1 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0 +1572864 0 1 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 1 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 0 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5505024 5242880 0.075 0 0.05 0 0 +1572864 0 1 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 1 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0 +1572864 0 1 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 1 0 0 5242880 6553600 5242880 0.075 0 0.25 0 0 +1572864 0 1 0 0 5242880 6815744 5242880 0.075 0 0.3 0 0 +1572864 0 1 0 0 5242880 7077888 5242880 0.075 0 0.35 0 0 +1572864 0 1 0 0 5242880 7340032 5242880 0.075 0 0.4 0 0 +1572864 0 1 0 0 5242880 7602176 5242880 0.075 0 0.45 0 0 +1572864 0 1 0 0 5242880 7864320 5242880 0.075 0 0.5 0 0 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 3932160 5242880 0.075 0 -0.25 0 0 +1572864 0 2 0 0 5242880 4063232 5242880 0.075 0 -0.225 0 0 +1572864 0 2 0 0 5242880 4194304 5242880 0.075 0 -0.2 0 0 +1572864 0 2 0 0 5242880 4325376 5242880 0.075 0 -0.175 0 0 +1572864 0 2 0 0 5242880 4456448 5242880 0.075 0 -0.15 0 0 +1572864 0 2 0 0 5242880 4587520 5242880 0.075 0 -0.125 0 0 +1572864 0 2 0 0 5242880 4718592 5242880 0.075 0 -0.1 0 0 +1572864 0 2 0 0 5242880 4849664 5242880 0.075 0 -0.075 0 0 +1572864 0 2 0 0 5242880 4980736 5242880 0.075 0 -0.05 0 0 +1572864 0 2 0 0 5242880 5111808 5242880 0.075 0 -0.025 0 0 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5373952 5242880 0.075 0 0.025 0 0 +1572864 0 2 0 0 5242880 5505024 5242880 0.075 0 0.05 0 0 +1572864 0 2 0 0 5242880 5636096 5242880 0.075 0 0.075 0 0 +1572864 0 2 0 0 5242880 5767168 5242880 0.075 0 0.1 0 0 +1572864 0 2 0 0 5242880 5898240 5242880 0.075 0 0.125 0 0 +1572864 0 2 0 0 5242880 6029312 5242880 0.075 0 0.15 0 0 +1572864 0 2 0 0 5242880 6160384 5242880 0.075 0 0.175 0 0 +1572864 0 2 0 0 5242880 6291456 5242880 0.075 0 0.2 0 0 +1572864 0 2 0 0 5242880 6422528 5242880 0.075 0 0.225 0 0 +1572864 0 2 0 0 5242880 6553600 5242880 0.075 0 0.25 0 0 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 3932160 5242880 0.08125 0 -0.25 0 0 +1703936 0 2 0 0 5242880 4063232 5242880 0.08125 0 -0.225 0 0 +1703936 0 2 0 0 5242880 4194304 5242880 0.08125 0 -0.2 0 0 +1703936 0 2 0 0 5242880 4325376 5242880 0.08125 0 -0.175 0 0 +1703936 0 2 0 0 5242880 4456448 5242880 0.08125 0 -0.15 0 0 +1703936 0 2 0 0 5242880 4587520 5242880 0.08125 0 -0.125 0 0 +1703936 0 2 0 0 5242880 4718592 5242880 0.08125 0 -0.1 0 0 +1703936 0 2 0 0 5242880 4849664 5242880 0.08125 0 -0.075 0 0 +1703936 0 2 0 0 5242880 4980736 5242880 0.08125 0 -0.05 0 0 +1703936 0 2 0 0 5242880 5111808 5242880 0.08125 0 -0.025 0 0 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5373952 5242880 0.08125 0 0.025 0 0 +1703936 0 2 0 0 5242880 5505024 5242880 0.08125 0 0.05 0 0 +1703936 0 2 0 0 5242880 5636096 5242880 0.08125 0 0.075 0 0 +1703936 0 2 0 0 5242880 5767168 5242880 0.08125 0 0.1 0 0 +1703936 0 2 0 0 5242880 5898240 5242880 0.08125 0 0.125 0 0 +1703936 0 2 0 0 5242880 6029312 5242880 0.08125 0 0.15 0 0 +1703936 0 2 0 0 5242880 6160384 5242880 0.08125 0 0.175 0 0 +1703936 0 2 0 0 5242880 6291456 5242880 0.08125 0 0.2 0 0 +1703936 0 2 0 0 5242880 6422528 5242880 0.08125 0 0.225 0 0 +1703936 0 2 0 0 5242880 6553600 5242880 0.08125 0 0.25 0 0 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 2621440 5242880 0.0875 0 -0.5 0 0 +1835008 0 1 0 0 5242880 2883584 5242880 0.0875 0 -0.45 0 0 +1835008 0 1 0 0 5242880 3145728 5242880 0.0875 0 -0.4 0 0 +1835008 0 1 0 0 5242880 3407872 5242880 0.0875 0 -0.35 0 0 +1835008 0 1 0 0 5242880 3670016 5242880 0.0875 0 -0.3 0 0 +1835008 0 1 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 0 +1835008 0 1 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 0 +1835008 0 1 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0 +1835008 0 1 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 0 +1835008 0 1 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 0 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 0 +1835008 0 1 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 0 +1835008 0 1 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0 +1835008 0 1 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 0 +1835008 0 1 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 0 +1835008 0 1 0 0 5242880 6815744 5242880 0.0875 0 0.3 0 0 +1835008 0 1 0 0 5242880 7077888 5242880 0.0875 0 0.35 0 0 +1835008 0 1 0 0 5242880 7340032 5242880 0.0875 0 0.4 0 0 +1835008 0 1 0 0 5242880 7602176 5242880 0.0875 0 0.45 0 0 +1835008 0 1 0 0 5242880 7864320 5242880 0.0875 0 0.5 0 0 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 3932160 5242880 0.0875 0 -0.25 0 0 +1835008 0 2 0 0 5242880 4063232 5242880 0.0875 0 -0.225 0 0 +1835008 0 2 0 0 5242880 4194304 5242880 0.0875 0 -0.2 0 0 +1835008 0 2 0 0 5242880 4325376 5242880 0.0875 0 -0.175 0 0 +1835008 0 2 0 0 5242880 4456448 5242880 0.0875 0 -0.15 0 0 +1835008 0 2 0 0 5242880 4587520 5242880 0.0875 0 -0.125 0 0 +1835008 0 2 0 0 5242880 4718592 5242880 0.0875 0 -0.1 0 0 +1835008 0 2 0 0 5242880 4849664 5242880 0.0875 0 -0.075 0 0 +1835008 0 2 0 0 5242880 4980736 5242880 0.0875 0 -0.05 0 0 +1835008 0 2 0 0 5242880 5111808 5242880 0.0875 0 -0.025 0 0 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5373952 5242880 0.0875 0 0.025 0 0 +1835008 0 2 0 0 5242880 5505024 5242880 0.0875 0 0.05 0 0 +1835008 0 2 0 0 5242880 5636096 5242880 0.0875 0 0.075 0 0 +1835008 0 2 0 0 5242880 5767168 5242880 0.0875 0 0.1 0 0 +1835008 0 2 0 0 5242880 5898240 5242880 0.0875 0 0.125 0 0 +1835008 0 2 0 0 5242880 6029312 5242880 0.0875 0 0.15 0 0 +1835008 0 2 0 0 5242880 6160384 5242880 0.0875 0 0.175 0 0 +1835008 0 2 0 0 5242880 6291456 5242880 0.0875 0 0.2 0 0 +1835008 0 2 0 0 5242880 6422528 5242880 0.0875 0 0.225 0 0 +1835008 0 2 0 0 5242880 6553600 5242880 0.0875 0 0.25 0 0 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 3932160 5242880 0.09375 0 -0.25 0 0 +1966080 0 2 0 0 5242880 4063232 5242880 0.09375 0 -0.225 0 0 +1966080 0 2 0 0 5242880 4194304 5242880 0.09375 0 -0.2 0 0 +1966080 0 2 0 0 5242880 4325376 5242880 0.09375 0 -0.175 0 0 +1966080 0 2 0 0 5242880 4456448 5242880 0.09375 0 -0.15 0 0 +1966080 0 2 0 0 5242880 4587520 5242880 0.09375 0 -0.125 0 0 +1966080 0 2 0 0 5242880 4718592 5242880 0.09375 0 -0.1 0 0 +1966080 0 2 0 0 5242880 4849664 5242880 0.09375 0 -0.075 0 0 +1966080 0 2 0 0 5242880 4980736 5242880 0.09375 0 -0.05 0 0 +1966080 0 2 0 0 5242880 5111808 5242880 0.09375 0 -0.025 0 0 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5373952 5242880 0.09375 0 0.025 0 0 +1966080 0 2 0 0 5242880 5505024 5242880 0.09375 0 0.05 0 0 +1966080 0 2 0 0 5242880 5636096 5242880 0.09375 0 0.075 0 0 +1966080 0 2 0 0 5242880 5767168 5242880 0.09375 0 0.1 0 0 +1966080 0 2 0 0 5242880 5898240 5242880 0.09375 0 0.125 0 0 +1966080 0 2 0 0 5242880 6029312 5242880 0.09375 0 0.15 0 0 +1966080 0 2 0 0 5242880 6160384 5242880 0.09375 0 0.175 0 0 +1966080 0 2 0 0 5242880 6291456 5242880 0.09375 0 0.2 0 0 +1966080 0 2 0 0 5242880 6422528 5242880 0.09375 0 0.225 0 0 +1966080 0 2 0 0 5242880 6553600 5242880 0.09375 0 0.25 0 0 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 0 5242880 0.1 0 -1 0 0 +2097152 0 0 0 0 5242880 524288 5242880 0.1 0 -0.9 0 0 +2097152 0 0 0 0 5242880 1048576 5242880 0.1 0 -0.8 0 0 +2097152 0 0 0 0 5242880 1572864 5242880 0.1 0 -0.7 0 0 +2097152 0 0 0 0 5242880 2097152 5242880 0.1 0 -0.6 0 0 +2097152 0 0 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 0 +2097152 0 0 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0 +2097152 0 0 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 0 +2097152 0 0 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 0 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 0 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 0 0 0 5242880 6815744 5242880 0.1 0 0.3 0 0 +2097152 0 0 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0 +2097152 0 0 0 0 5242880 7864320 5242880 0.1 0 0.5 0 0 +2097152 0 0 0 0 5242880 8388608 5242880 0.1 0 0.6 0 0 +2097152 0 0 0 0 5242880 8912896 5242880 0.1 0 0.7 0 0 +2097152 0 0 0 0 5242880 9437184 5242880 0.1 0 0.8 0 0 +2097152 0 0 0 0 5242880 9961472 5242880 0.1 0 0.9 0 0 +2097152 0 0 0 0 5242880 10485760 5242880 0.1 0 1 0 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 2621440 5242880 0.1 0 -0.5 0 0 +2097152 0 1 0 0 5242880 2883584 5242880 0.1 0 -0.45 0 0 +2097152 0 1 0 0 5242880 3145728 5242880 0.1 0 -0.4 0 0 +2097152 0 1 0 0 5242880 3407872 5242880 0.1 0 -0.35 0 0 +2097152 0 1 0 0 5242880 3670016 5242880 0.1 0 -0.3 0 0 +2097152 0 1 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 0 +2097152 0 1 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 1 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0 +2097152 0 1 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 1 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 0 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5505024 5242880 0.1 0 0.05 0 0 +2097152 0 1 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 1 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0 +2097152 0 1 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 1 0 0 5242880 6553600 5242880 0.1 0 0.25 0 0 +2097152 0 1 0 0 5242880 6815744 5242880 0.1 0 0.3 0 0 +2097152 0 1 0 0 5242880 7077888 5242880 0.1 0 0.35 0 0 +2097152 0 1 0 0 5242880 7340032 5242880 0.1 0 0.4 0 0 +2097152 0 1 0 0 5242880 7602176 5242880 0.1 0 0.45 0 0 +2097152 0 1 0 0 5242880 7864320 5242880 0.1 0 0.5 0 0 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 3932160 5242880 0.1 0 -0.25 0 0 +2097152 0 2 0 0 5242880 4063232 5242880 0.1 0 -0.225 0 0 +2097152 0 2 0 0 5242880 4194304 5242880 0.1 0 -0.2 0 0 +2097152 0 2 0 0 5242880 4325376 5242880 0.1 0 -0.175 0 0 +2097152 0 2 0 0 5242880 4456448 5242880 0.1 0 -0.15 0 0 +2097152 0 2 0 0 5242880 4587520 5242880 0.1 0 -0.125 0 0 +2097152 0 2 0 0 5242880 4718592 5242880 0.1 0 -0.1 0 0 +2097152 0 2 0 0 5242880 4849664 5242880 0.1 0 -0.075 0 0 +2097152 0 2 0 0 5242880 4980736 5242880 0.1 0 -0.05 0 0 +2097152 0 2 0 0 5242880 5111808 5242880 0.1 0 -0.025 0 0 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5373952 5242880 0.1 0 0.025 0 0 +2097152 0 2 0 0 5242880 5505024 5242880 0.1 0 0.05 0 0 +2097152 0 2 0 0 5242880 5636096 5242880 0.1 0 0.075 0 0 +2097152 0 2 0 0 5242880 5767168 5242880 0.1 0 0.1 0 0 +2097152 0 2 0 0 5242880 5898240 5242880 0.1 0 0.125 0 0 +2097152 0 2 0 0 5242880 6029312 5242880 0.1 0 0.15 0 0 +2097152 0 2 0 0 5242880 6160384 5242880 0.1 0 0.175 0 0 +2097152 0 2 0 0 5242880 6291456 5242880 0.1 0 0.2 0 0 +2097152 0 2 0 0 5242880 6422528 5242880 0.1 0 0.225 0 0 +2097152 0 2 0 0 5242880 6553600 5242880 0.1 0 0.25 0 0 + + diff --git a/Carpet/CarpetInterp/test/waveinterp/phiz.z.asc b/Carpet/CarpetInterp/test/waveinterp/phiz.z.asc new file mode 100644 index 000000000..7c6d8e5da --- /dev/null +++ b/Carpet/CarpetInterp/test/waveinterp/phiz.z.asc @@ -0,0 +1,808 @@ +# WAVEMOL::phiz z (phiz) +# +# iteration 0 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 0 0 0 5242880 5242880 0 0 0 0 -1 0 +0 0 0 0 0 5242880 5242880 524288 0 0 0 -0.9 0 +0 0 0 0 0 5242880 5242880 1048576 0 0 0 -0.8 0 +0 0 0 0 0 5242880 5242880 1572864 0 0 0 -0.7 0 +0 0 0 0 0 5242880 5242880 2097152 0 0 0 -0.6 0 +0 0 0 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 0 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 0 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 0 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 0 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 0 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 0 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 0 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 0 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 0 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 0 0 0 5242880 5242880 7864320 0 0 0 0.5 0 +0 0 0 0 0 5242880 5242880 8388608 0 0 0 0.6 0 +0 0 0 0 0 5242880 5242880 8912896 0 0 0 0.7 0 +0 0 0 0 0 5242880 5242880 9437184 0 0 0 0.8 0 +0 0 0 0 0 5242880 5242880 9961472 0 0 0 0.9 0 +0 0 0 0 0 5242880 5242880 10485760 0 0 0 1 0 + + +# iteration 0 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 1 0 0 5242880 5242880 2621440 0 0 0 -0.5 0 +0 0 1 0 0 5242880 5242880 2883584 0 0 0 -0.45 0 +0 0 1 0 0 5242880 5242880 3145728 0 0 0 -0.4 0 +0 0 1 0 0 5242880 5242880 3407872 0 0 0 -0.35 0 +0 0 1 0 0 5242880 5242880 3670016 0 0 0 -0.3 0 +0 0 1 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 1 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 1 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 1 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 1 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 1 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 1 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 1 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 1 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 1 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 1 0 0 5242880 5242880 6553600 0 0 0 0.25 0 +0 0 1 0 0 5242880 5242880 6815744 0 0 0 0.3 0 +0 0 1 0 0 5242880 5242880 7077888 0 0 0 0.35 0 +0 0 1 0 0 5242880 5242880 7340032 0 0 0 0.4 0 +0 0 1 0 0 5242880 5242880 7602176 0 0 0 0.45 0 +0 0 1 0 0 5242880 5242880 7864320 0 0 0 0.5 0 + + +# iteration 0 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +0 0 2 0 0 5242880 5242880 3932160 0 0 0 -0.25 0 +0 0 2 0 0 5242880 5242880 4063232 0 0 0 -0.225 0 +0 0 2 0 0 5242880 5242880 4194304 0 0 0 -0.2 0 +0 0 2 0 0 5242880 5242880 4325376 0 0 0 -0.175 0 +0 0 2 0 0 5242880 5242880 4456448 0 0 0 -0.15 0 +0 0 2 0 0 5242880 5242880 4587520 0 0 0 -0.125 0 +0 0 2 0 0 5242880 5242880 4718592 0 0 0 -0.1 0 +0 0 2 0 0 5242880 5242880 4849664 0 0 0 -0.075 0 +0 0 2 0 0 5242880 5242880 4980736 0 0 0 -0.05 0 +0 0 2 0 0 5242880 5242880 5111808 0 0 0 -0.025 0 +0 0 2 0 0 5242880 5242880 5242880 0 0 0 0 0 +0 0 2 0 0 5242880 5242880 5373952 0 0 0 0.025 0 +0 0 2 0 0 5242880 5242880 5505024 0 0 0 0.05 0 +0 0 2 0 0 5242880 5242880 5636096 0 0 0 0.075 0 +0 0 2 0 0 5242880 5242880 5767168 0 0 0 0.1 0 +0 0 2 0 0 5242880 5242880 5898240 0 0 0 0.125 0 +0 0 2 0 0 5242880 5242880 6029312 0 0 0 0.15 0 +0 0 2 0 0 5242880 5242880 6160384 0 0 0 0.175 0 +0 0 2 0 0 5242880 5242880 6291456 0 0 0 0.2 0 +0 0 2 0 0 5242880 5242880 6422528 0 0 0 0.225 0 +0 0 2 0 0 5242880 5242880 6553600 0 0 0 0.25 0 + + +# iteration 131072 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +131072 0 2 0 0 5242880 5242880 3932160 0.00625 0 0 -0.25 8.51287040805251e-10 +131072 0 2 0 0 5242880 5242880 4063232 0.00625 0 0 -0.225 4.78848960452953e-10 +131072 0 2 0 0 5242880 5242880 4194304 0.00625 0 0 -0.2 0 +131072 0 2 0 0 5242880 5242880 4325376 0.00625 0 0 -0.175 2.43032142559095e-09 +131072 0 2 0 0 5242880 5242880 4456448 0.00625 0 0 -0.15 0 +131072 0 2 0 0 5242880 5242880 4587520 0.00625 0 0 -0.125 -2.23517417907715e-08 +131072 0 2 0 0 5242880 5242880 4718592 0.00625 0 0 -0.1 0 +131072 0 2 0 0 5242880 5242880 4849664 0.00625 0 0 -0.075 0 +131072 0 2 0 0 5242880 5242880 4980736 0.00625 0 0 -0.05 0 +131072 0 2 0 0 5242880 5242880 5111808 0.00625 0 0 -0.025 0 +131072 0 2 0 0 5242880 5242880 5242880 0.00625 0 0 0 0 +131072 0 2 0 0 5242880 5242880 5373952 0.00625 0 0 0.025 0 +131072 0 2 0 0 5242880 5242880 5505024 0.00625 0 0 0.05 0 +131072 0 2 0 0 5242880 5242880 5636096 0.00625 0 0 0.075 0 +131072 0 2 0 0 5242880 5242880 5767168 0.00625 0 0 0.1 0 +131072 0 2 0 0 5242880 5242880 5898240 0.00625 0 0 0.125 2.23517417907715e-08 +131072 0 2 0 0 5242880 5242880 6029312 0.00625 0 0 0.15 0 +131072 0 2 0 0 5242880 5242880 6160384 0.00625 0 0 0.175 -2.43032142559095e-09 +131072 0 2 0 0 5242880 5242880 6291456 0.00625 0 0 0.2 0 +131072 0 2 0 0 5242880 5242880 6422528 0.00625 0 0 0.225 -4.78848960452953e-10 +131072 0 2 0 0 5242880 5242880 6553600 0.00625 0 0 0.25 -8.51287040805251e-10 + + +# iteration 262144 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 1 0 0 5242880 5242880 2621440 0.0125 0 0 -0.5 0 +262144 0 1 0 0 5242880 5242880 2883584 0.0125 0 0 -0.45 0 +262144 0 1 0 0 5242880 5242880 3145728 0.0125 0 0 -0.4 0 +262144 0 1 0 0 5242880 5242880 3407872 0.0125 0 0 -0.35 1.94025536558925e-11 +262144 0 1 0 0 5242880 5242880 3670016 0.0125 0 0 -0.3 0 +262144 0 1 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 2.27009877548067e-09 +262144 0 1 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 1 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 1 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 3.88051095886096e-11 +262144 0 1 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 1 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 1 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 1 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 -3.88051095886096e-11 +262144 0 1 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 1 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 1 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 -2.27009877548067e-09 +262144 0 1 0 0 5242880 5242880 6815744 0.0125 0 0 0.3 0 +262144 0 1 0 0 5242880 5242880 7077888 0.0125 0 0 0.35 -1.94025536558925e-11 +262144 0 1 0 0 5242880 5242880 7340032 0.0125 0 0 0.4 0 +262144 0 1 0 0 5242880 5242880 7602176 0.0125 0 0 0.45 0 +262144 0 1 0 0 5242880 5242880 7864320 0.0125 0 0 0.5 0 + + +# iteration 262144 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +262144 0 2 0 0 5242880 5242880 3932160 0.0125 0 0 -0.25 2.27009877548067e-09 +262144 0 2 0 0 5242880 5242880 4063232 0.0125 0 0 -0.225 1.27693056120788e-09 +262144 0 2 0 0 5242880 5242880 4194304 0.0125 0 0 -0.2 0 +262144 0 2 0 0 5242880 5242880 4325376 0.0125 0 0 -0.175 -1.4430649281683e-10 +262144 0 2 0 0 5242880 5242880 4456448 0.0125 0 0 -0.15 0 +262144 0 2 0 0 5242880 5242880 4587520 0.0125 0 0 -0.125 2.18278741435929e-11 +262144 0 2 0 0 5242880 5242880 4718592 0.0125 0 0 -0.1 3.88051095886096e-11 +262144 0 2 0 0 5242880 5242880 4849664 0.0125 0 0 -0.075 -1.74622982740402e-10 +262144 0 2 0 0 5242880 5242880 4980736 0.0125 0 0 -0.05 0 +262144 0 2 0 0 5242880 5242880 5111808 0.0125 0 0 -0.025 0 +262144 0 2 0 0 5242880 5242880 5242880 0.0125 0 0 0 0 +262144 0 2 0 0 5242880 5242880 5373952 0.0125 0 0 0.025 0 +262144 0 2 0 0 5242880 5242880 5505024 0.0125 0 0 0.05 0 +262144 0 2 0 0 5242880 5242880 5636096 0.0125 0 0 0.075 1.74622982740402e-10 +262144 0 2 0 0 5242880 5242880 5767168 0.0125 0 0 0.1 -3.88051095886096e-11 +262144 0 2 0 0 5242880 5242880 5898240 0.0125 0 0 0.125 -2.18278741435929e-11 +262144 0 2 0 0 5242880 5242880 6029312 0.0125 0 0 0.15 0 +262144 0 2 0 0 5242880 5242880 6160384 0.0125 0 0 0.175 1.4430649281683e-10 +262144 0 2 0 0 5242880 5242880 6291456 0.0125 0 0 0.2 0 +262144 0 2 0 0 5242880 5242880 6422528 0.0125 0 0 0.225 -1.27693056120788e-09 +262144 0 2 0 0 5242880 5242880 6553600 0.0125 0 0 0.25 -2.27009877548067e-09 + + +# iteration 393216 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +393216 0 2 0 0 5242880 5242880 3932160 0.01875 0 0 -0.25 1.7025740816105e-09 +393216 0 2 0 0 5242880 5242880 4063232 0.01875 0 0 -0.225 9.59262773157592e-10 +393216 0 2 0 0 5242880 5242880 4194304 0.01875 0 0 -0.2 1.80060419699424e-11 +393216 0 2 0 0 5242880 5242880 4325376 0.01875 0 0 -0.175 -2.20306178830874e-11 +393216 0 2 0 0 5242880 5242880 4456448 0.01875 0 0 -0.15 1.37016741702522e-10 +393216 0 2 0 0 5242880 5242880 4587520 0.01875 0 0 -0.125 1.09369182438833e-10 +393216 0 2 0 0 5242880 5242880 4718592 0.01875 0 0 -0.1 -1.55569968944095e-10 +393216 0 2 0 0 5242880 5242880 4849664 0.01875 0 0 -0.075 -5.14533776696524e-10 +393216 0 2 0 0 5242880 5242880 4980736 0.01875 0 0 -0.05 -1.05031724058809e-14 +393216 0 2 0 0 5242880 5242880 5111808 0.01875 0 0 -0.025 -3.1663930736651e-12 +393216 0 2 0 0 5242880 5242880 5242880 0.01875 0 0 0 0 +393216 0 2 0 0 5242880 5242880 5373952 0.01875 0 0 0.025 3.1663930736651e-12 +393216 0 2 0 0 5242880 5242880 5505024 0.01875 0 0 0.05 1.05031724058809e-14 +393216 0 2 0 0 5242880 5242880 5636096 0.01875 0 0 0.075 5.14533776696524e-10 +393216 0 2 0 0 5242880 5242880 5767168 0.01875 0 0 0.1 1.55569968944095e-10 +393216 0 2 0 0 5242880 5242880 5898240 0.01875 0 0 0.125 -1.09369182438833e-10 +393216 0 2 0 0 5242880 5242880 6029312 0.01875 0 0 0.15 -1.37016741702522e-10 +393216 0 2 0 0 5242880 5242880 6160384 0.01875 0 0 0.175 2.20306178830874e-11 +393216 0 2 0 0 5242880 5242880 6291456 0.01875 0 0 0.2 -1.80060419699424e-11 +393216 0 2 0 0 5242880 5242880 6422528 0.01875 0 0 0.225 -9.59262773157592e-10 +393216 0 2 0 0 5242880 5242880 6553600 0.01875 0 0 0.25 -1.7025740816105e-09 + + +# iteration 524288 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 0 0 0 5242880 5242880 0 0.025 0 0 -1 0 +524288 0 0 0 0 5242880 5242880 524288 0.025 0 0 -0.9 0 +524288 0 0 0 0 5242880 5242880 1048576 0.025 0 0 -0.8 0 +524288 0 0 0 0 5242880 5242880 1572864 0.025 0 0 -0.7 0 +524288 0 0 0 0 5242880 5242880 2097152 0.025 0 0 -0.6 0 +524288 0 0 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 0 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 0 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 0 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 4.80161119198463e-11 +524288 0 0 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 -3.71976833594504e-10 +524288 0 0 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 0 0 0 5242880 5242880 5767168 0.025 0 0 0.1 3.71976833594504e-10 +524288 0 0 0 0 5242880 5242880 6291456 0.025 0 0 0.2 -4.80161119198463e-11 +524288 0 0 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 0 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 0 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 +524288 0 0 0 0 5242880 5242880 8388608 0.025 0 0 0.6 0 +524288 0 0 0 0 5242880 5242880 8912896 0.025 0 0 0.7 0 +524288 0 0 0 0 5242880 5242880 9437184 0.025 0 0 0.8 0 +524288 0 0 0 0 5242880 5242880 9961472 0.025 0 0 0.9 0 +524288 0 0 0 0 5242880 5242880 10485760 0.025 0 0 1 0 + + +# iteration 524288 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 1 0 0 5242880 5242880 2621440 0.025 0 0 -0.5 0 +524288 0 1 0 0 5242880 5242880 2883584 0.025 0 0 -0.45 0 +524288 0 1 0 0 5242880 5242880 3145728 0.025 0 0 -0.4 0 +524288 0 1 0 0 5242880 5242880 3407872 0.025 0 0 -0.35 -3.0010069949904e-12 +524288 0 1 0 0 5242880 5242880 3670016 0.025 0 0 -0.3 0 +524288 0 1 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 5.02576150545701e-11 +524288 0 1 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 4.80161119198463e-11 +524288 0 1 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 3.65377977873393e-10 +524288 0 1 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 -3.71976833594504e-10 +524288 0 1 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 -2.64427137593633e-12 +524288 0 1 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 1 0 0 5242880 5242880 5505024 0.025 0 0 0.05 2.64427137593633e-12 +524288 0 1 0 0 5242880 5242880 5767168 0.025 0 0 0.1 3.71976833594504e-10 +524288 0 1 0 0 5242880 5242880 6029312 0.025 0 0 0.15 -3.65377977873393e-10 +524288 0 1 0 0 5242880 5242880 6291456 0.025 0 0 0.2 -4.80161119198463e-11 +524288 0 1 0 0 5242880 5242880 6553600 0.025 0 0 0.25 -5.02576150545701e-11 +524288 0 1 0 0 5242880 5242880 6815744 0.025 0 0 0.3 0 +524288 0 1 0 0 5242880 5242880 7077888 0.025 0 0 0.35 3.0010069949904e-12 +524288 0 1 0 0 5242880 5242880 7340032 0.025 0 0 0.4 0 +524288 0 1 0 0 5242880 5242880 7602176 0.025 0 0 0.45 0 +524288 0 1 0 0 5242880 5242880 7864320 0.025 0 0 0.5 0 + + +# iteration 524288 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +524288 0 2 0 0 5242880 5242880 3932160 0.025 0 0 -0.25 5.02576150545701e-11 +524288 0 2 0 0 5242880 5242880 4063232 0.025 0 0 -0.225 3.24428478060221e-11 +524288 0 2 0 0 5242880 5242880 4194304 0.025 0 0 -0.2 4.80161119198463e-11 +524288 0 2 0 0 5242880 5242880 4325376 0.025 0 0 -0.175 2.52641626667443e-10 +524288 0 2 0 0 5242880 5242880 4456448 0.025 0 0 -0.15 3.65377977873393e-10 +524288 0 2 0 0 5242880 5242880 4587520 0.025 0 0 -0.125 -6.54759637711926e-12 +524288 0 2 0 0 5242880 5242880 4718592 0.025 0 0 -0.1 -3.71976833594504e-10 +524288 0 2 0 0 5242880 5242880 4849664 0.025 0 0 -0.075 -8.34775128651562e-10 +524288 0 2 0 0 5242880 5242880 4980736 0.025 0 0 -0.05 -2.64427137593633e-12 +524288 0 2 0 0 5242880 5242880 5111808 0.025 0 0 -0.025 -1.42062519155791e-11 +524288 0 2 0 0 5242880 5242880 5242880 0.025 0 0 0 0 +524288 0 2 0 0 5242880 5242880 5373952 0.025 0 0 0.025 1.42062519155791e-11 +524288 0 2 0 0 5242880 5242880 5505024 0.025 0 0 0.05 2.64427137593633e-12 +524288 0 2 0 0 5242880 5242880 5636096 0.025 0 0 0.075 8.34775128651562e-10 +524288 0 2 0 0 5242880 5242880 5767168 0.025 0 0 0.1 3.71976833594504e-10 +524288 0 2 0 0 5242880 5242880 5898240 0.025 0 0 0.125 6.54759637711926e-12 +524288 0 2 0 0 5242880 5242880 6029312 0.025 0 0 0.15 -3.65377977873393e-10 +524288 0 2 0 0 5242880 5242880 6160384 0.025 0 0 0.175 -2.52641626667443e-10 +524288 0 2 0 0 5242880 5242880 6291456 0.025 0 0 0.2 -4.80161119198463e-11 +524288 0 2 0 0 5242880 5242880 6422528 0.025 0 0 0.225 -3.24428478060221e-11 +524288 0 2 0 0 5242880 5242880 6553600 0.025 0 0 0.25 -5.02576150545701e-11 + + +# iteration 655360 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +655360 0 2 0 0 5242880 5242880 3932160 0.03125 0 0 -0.25 -2.03283184165604e-10 +655360 0 2 0 0 5242880 5242880 4063232 0.03125 0 0 -0.225 -1.10218192534204e-10 +655360 0 2 0 0 5242880 5242880 4194304 0.03125 0 0 -0.2 6.71560801759896e-11 +655360 0 2 0 0 5242880 5242880 4325376 0.03125 0 0 -0.175 3.81864711955078e-10 +655360 0 2 0 0 5242880 5242880 4456448 0.03125 0 0 -0.15 5.43200962509205e-10 +655360 0 2 0 0 5242880 5242880 4587520 0.03125 0 0 -0.125 7.64770232818818e-11 +655360 0 2 0 0 5242880 5242880 4718592 0.03125 0 0 -0.1 -5.39370936802896e-10 +655360 0 2 0 0 5242880 5242880 4849664 0.03125 0 0 -0.075 -1.12595637443332e-09 +655360 0 2 0 0 5242880 5242880 4980736 0.03125 0 0 -0.05 -1.12561372260049e-11 +655360 0 2 0 0 5242880 5242880 5111808 0.03125 0 0 -0.025 -3.75721814771524e-11 +655360 0 2 0 0 5242880 5242880 5242880 0.03125 0 0 0 0 +655360 0 2 0 0 5242880 5242880 5373952 0.03125 0 0 0.025 3.75721814771524e-11 +655360 0 2 0 0 5242880 5242880 5505024 0.03125 0 0 0.05 1.12561372260049e-11 +655360 0 2 0 0 5242880 5242880 5636096 0.03125 0 0 0.075 1.12595637443332e-09 +655360 0 2 0 0 5242880 5242880 5767168 0.03125 0 0 0.1 5.39370936802896e-10 +655360 0 2 0 0 5242880 5242880 5898240 0.03125 0 0 0.125 -7.64770232818818e-11 +655360 0 2 0 0 5242880 5242880 6029312 0.03125 0 0 0.15 -5.43200962509205e-10 +655360 0 2 0 0 5242880 5242880 6160384 0.03125 0 0 0.175 -3.81864711955078e-10 +655360 0 2 0 0 5242880 5242880 6291456 0.03125 0 0 0.2 -6.71560801759896e-11 +655360 0 2 0 0 5242880 5242880 6422528 0.03125 0 0 0.225 1.10218192534204e-10 +655360 0 2 0 0 5242880 5242880 6553600 0.03125 0 0 0.25 2.03283184165604e-10 + + +# iteration 786432 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 1 0 0 5242880 5242880 2621440 0.0375 0 0 -0.5 -3.17246229286638e-14 +786432 0 1 0 0 5242880 5242880 2883584 0.0375 0 0 -0.45 1.04805866676244e-12 +786432 0 1 0 0 5242880 5242880 3145728 0.0375 0 0 -0.4 4.56771773182929e-13 +786432 0 1 0 0 5242880 5242880 3407872 0.0375 0 0 -0.35 -1.77414430260585e-11 +786432 0 1 0 0 5242880 5242880 3670016 0.0375 0 0 -0.3 -1.29435143159107e-11 +786432 0 1 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 1.14095870609471e-10 +786432 0 1 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 8.3050656629613e-11 +786432 0 1 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 7.1777994427776e-10 +786432 0 1 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 -6.90806513844085e-10 +786432 0 1 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 -2.86001292093552e-11 +786432 0 1 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 1 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 2.86001292093552e-11 +786432 0 1 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 6.90806513844085e-10 +786432 0 1 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 -7.1777994427776e-10 +786432 0 1 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 -8.3050656629613e-11 +786432 0 1 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 -1.14095870609471e-10 +786432 0 1 0 0 5242880 5242880 6815744 0.0375 0 0 0.3 1.29435143159107e-11 +786432 0 1 0 0 5242880 5242880 7077888 0.0375 0 0 0.35 1.77414430260585e-11 +786432 0 1 0 0 5242880 5242880 7340032 0.0375 0 0 0.4 -4.56771773182929e-13 +786432 0 1 0 0 5242880 5242880 7602176 0.0375 0 0 0.45 -1.04805866676244e-12 +786432 0 1 0 0 5242880 5242880 7864320 0.0375 0 0 0.5 3.17246229286638e-14 + + +# iteration 786432 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +786432 0 2 0 0 5242880 5242880 3932160 0.0375 0 0 -0.25 1.14095870609471e-10 +786432 0 2 0 0 5242880 5242880 4063232 0.0375 0 0 -0.225 6.68426446993694e-11 +786432 0 2 0 0 5242880 5242880 4194304 0.0375 0 0 -0.2 8.3050656629613e-11 +786432 0 2 0 0 5242880 5242880 4325376 0.0375 0 0 -0.175 4.8651162821256e-10 +786432 0 2 0 0 5242880 5242880 4456448 0.0375 0 0 -0.15 7.1777994427776e-10 +786432 0 2 0 0 5242880 5242880 4587520 0.0375 0 0 -0.125 1.17693966551757e-11 +786432 0 2 0 0 5242880 5242880 4718592 0.0375 0 0 -0.1 -6.90806513844085e-10 +786432 0 2 0 0 5242880 5242880 4849664 0.0375 0 0 -0.075 -1.37983248438278e-09 +786432 0 2 0 0 5242880 5242880 4980736 0.0375 0 0 -0.05 -2.86001292093552e-11 +786432 0 2 0 0 5242880 5242880 5111808 0.0375 0 0 -0.025 -7.6696357598216e-11 +786432 0 2 0 0 5242880 5242880 5242880 0.0375 0 0 0 0 +786432 0 2 0 0 5242880 5242880 5373952 0.0375 0 0 0.025 7.6696357598216e-11 +786432 0 2 0 0 5242880 5242880 5505024 0.0375 0 0 0.05 2.86001292093552e-11 +786432 0 2 0 0 5242880 5242880 5636096 0.0375 0 0 0.075 1.37983248438278e-09 +786432 0 2 0 0 5242880 5242880 5767168 0.0375 0 0 0.1 6.90806513844085e-10 +786432 0 2 0 0 5242880 5242880 5898240 0.0375 0 0 0.125 -1.17693966551757e-11 +786432 0 2 0 0 5242880 5242880 6029312 0.0375 0 0 0.15 -7.1777994427776e-10 +786432 0 2 0 0 5242880 5242880 6160384 0.0375 0 0 0.175 -4.8651162821256e-10 +786432 0 2 0 0 5242880 5242880 6291456 0.0375 0 0 0.2 -8.3050656629613e-11 +786432 0 2 0 0 5242880 5242880 6422528 0.0375 0 0 0.225 -6.68426446993694e-11 +786432 0 2 0 0 5242880 5242880 6553600 0.0375 0 0 0.25 -1.14095870609471e-10 + + +# iteration 917504 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +917504 0 2 0 0 5242880 5242880 3932160 0.04375 0 0 -0.25 1.55692360393826e-10 +917504 0 2 0 0 5242880 5242880 4063232 0.04375 0 0 -0.225 8.98292153340505e-11 +917504 0 2 0 0 5242880 5242880 4194304 0.04375 0 0 -0.2 9.87482959985408e-11 +917504 0 2 0 0 5242880 5242880 4325376 0.04375 0 0 -0.175 5.82061050143167e-10 +917504 0 2 0 0 5242880 5242880 4456448 0.04375 0 0 -0.15 8.7534961223934e-10 +917504 0 2 0 0 5242880 5242880 4587520 0.04375 0 0 -0.125 9.97820270600842e-11 +917504 0 2 0 0 5242880 5242880 4718592 0.04375 0 0 -0.1 -7.99350738378557e-10 +917504 0 2 0 0 5242880 5242880 4849664 0.04375 0 0 -0.075 -1.58914841471199e-09 +917504 0 2 0 0 5242880 5242880 4980736 0.04375 0 0 -0.05 -5.6796509625053e-11 +917504 0 2 0 0 5242880 5242880 5111808 0.04375 0 0 -0.025 -1.33697386495157e-10 +917504 0 2 0 0 5242880 5242880 5242880 0.04375 0 0 0 0 +917504 0 2 0 0 5242880 5242880 5373952 0.04375 0 0 0.025 1.33697386495157e-10 +917504 0 2 0 0 5242880 5242880 5505024 0.04375 0 0 0.05 5.6796509625053e-11 +917504 0 2 0 0 5242880 5242880 5636096 0.04375 0 0 0.075 1.58914841471199e-09 +917504 0 2 0 0 5242880 5242880 5767168 0.04375 0 0 0.1 7.99350738378557e-10 +917504 0 2 0 0 5242880 5242880 5898240 0.04375 0 0 0.125 -9.97820270600842e-11 +917504 0 2 0 0 5242880 5242880 6029312 0.04375 0 0 0.15 -8.7534961223934e-10 +917504 0 2 0 0 5242880 5242880 6160384 0.04375 0 0 0.175 -5.82061050143167e-10 +917504 0 2 0 0 5242880 5242880 6291456 0.04375 0 0 0.2 -9.87482959985408e-11 +917504 0 2 0 0 5242880 5242880 6422528 0.04375 0 0 0.225 -8.98292153340505e-11 +917504 0 2 0 0 5242880 5242880 6553600 0.04375 0 0 0.25 -1.55692360393826e-10 + + +# iteration 1048576 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 0 0 0 5242880 5242880 0 0.05 0 0 -1 0 +1048576 0 0 0 0 5242880 5242880 524288 0.05 0 0 -0.9 0 +1048576 0 0 0 0 5242880 5242880 1048576 0.05 0 0 -0.8 0 +1048576 0 0 0 0 5242880 5242880 1572864 0.05 0 0 -0.7 0 +1048576 0 0 0 0 5242880 5242880 2097152 0.05 0 0 -0.6 0 +1048576 0 0 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 -8.45989944764369e-14 +1048576 0 0 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 1.21805806182114e-12 +1048576 0 0 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 -3.45160381757618e-11 +1048576 0 0 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.13232846710165e-10 +1048576 0 0 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 -8.77529424125889e-10 +1048576 0 0 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 0 0 0 5242880 5242880 5767168 0.05 0 0 0.1 8.77529424125889e-10 +1048576 0 0 0 0 5242880 5242880 6291456 0.05 0 0 0.2 -1.13232846710165e-10 +1048576 0 0 0 0 5242880 5242880 6815744 0.05 0 0 0.3 3.45160381757618e-11 +1048576 0 0 0 0 5242880 5242880 7340032 0.05 0 0 0.4 -1.21805806182114e-12 +1048576 0 0 0 0 5242880 5242880 7864320 0.05 0 0 0.5 8.45989944764369e-14 +1048576 0 0 0 0 5242880 5242880 8388608 0.05 0 0 0.6 0 +1048576 0 0 0 0 5242880 5242880 8912896 0.05 0 0 0.7 0 +1048576 0 0 0 0 5242880 5242880 9437184 0.05 0 0 0.8 0 +1048576 0 0 0 0 5242880 5242880 9961472 0.05 0 0 0.9 0 +1048576 0 0 0 0 5242880 5242880 10485760 0.05 0 0 1 0 + + +# iteration 1048576 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 1 0 0 5242880 5242880 2621440 0.05 0 0 -0.5 -8.45989944764369e-14 +1048576 0 1 0 0 5242880 5242880 2883584 0.05 0 0 -0.45 2.79482311136651e-12 +1048576 0 1 0 0 5242880 5242880 3145728 0.05 0 0 -0.4 1.21805806182114e-12 +1048576 0 1 0 0 5242880 5242880 3407872 0.05 0 0 -0.35 -2.58018792963222e-11 +1048576 0 1 0 0 5242880 5242880 3670016 0.05 0 0 -0.3 -3.45160381757618e-11 +1048576 0 1 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 9.90476651796061e-11 +1048576 0 1 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.13232846710165e-10 +1048576 0 1 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 1.02049840337385e-09 +1048576 0 1 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 -8.77529424125889e-10 +1048576 0 1 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 -9.69948542780171e-11 +1048576 0 1 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 1 0 0 5242880 5242880 5505024 0.05 0 0 0.05 9.69948542780171e-11 +1048576 0 1 0 0 5242880 5242880 5767168 0.05 0 0 0.1 8.77529424125889e-10 +1048576 0 1 0 0 5242880 5242880 6029312 0.05 0 0 0.15 -1.02049840337385e-09 +1048576 0 1 0 0 5242880 5242880 6291456 0.05 0 0 0.2 -1.13232846710165e-10 +1048576 0 1 0 0 5242880 5242880 6553600 0.05 0 0 0.25 -9.90476651796061e-11 +1048576 0 1 0 0 5242880 5242880 6815744 0.05 0 0 0.3 3.45160381757618e-11 +1048576 0 1 0 0 5242880 5242880 7077888 0.05 0 0 0.35 2.58018792963222e-11 +1048576 0 1 0 0 5242880 5242880 7340032 0.05 0 0 0.4 -1.21805806182114e-12 +1048576 0 1 0 0 5242880 5242880 7602176 0.05 0 0 0.45 -2.79482311136651e-12 +1048576 0 1 0 0 5242880 5242880 7864320 0.05 0 0 0.5 8.45989944764369e-14 + + +# iteration 1048576 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1048576 0 2 0 0 5242880 5242880 3932160 0.05 0 0 -0.25 9.90476651796061e-11 +1048576 0 2 0 0 5242880 5242880 4063232 0.05 0 0 -0.225 5.77838901131156e-11 +1048576 0 2 0 0 5242880 5242880 4194304 0.05 0 0 -0.2 1.13232846710165e-10 +1048576 0 2 0 0 5242880 5242880 4325376 0.05 0 0 -0.175 6.86378938106402e-10 +1048576 0 2 0 0 5242880 5242880 4456448 0.05 0 0 -0.15 1.02049840337385e-09 +1048576 0 2 0 0 5242880 5242880 4587520 0.05 0 0 -0.125 7.940517629997e-11 +1048576 0 2 0 0 5242880 5242880 4718592 0.05 0 0 -0.1 -8.77529424125889e-10 +1048576 0 2 0 0 5242880 5242880 4849664 0.05 0 0 -0.075 -1.74812777216834e-09 +1048576 0 2 0 0 5242880 5242880 4980736 0.05 0 0 -0.05 -9.69948542780171e-11 +1048576 0 2 0 0 5242880 5242880 5111808 0.05 0 0 -0.025 -2.09176403050589e-10 +1048576 0 2 0 0 5242880 5242880 5242880 0.05 0 0 0 0 +1048576 0 2 0 0 5242880 5242880 5373952 0.05 0 0 0.025 2.09176403050589e-10 +1048576 0 2 0 0 5242880 5242880 5505024 0.05 0 0 0.05 9.69948542780171e-11 +1048576 0 2 0 0 5242880 5242880 5636096 0.05 0 0 0.075 1.74812777216834e-09 +1048576 0 2 0 0 5242880 5242880 5767168 0.05 0 0 0.1 8.77529424125889e-10 +1048576 0 2 0 0 5242880 5242880 5898240 0.05 0 0 0.125 -7.940517629997e-11 +1048576 0 2 0 0 5242880 5242880 6029312 0.05 0 0 0.15 -1.02049840337385e-09 +1048576 0 2 0 0 5242880 5242880 6160384 0.05 0 0 0.175 -6.86378938106402e-10 +1048576 0 2 0 0 5242880 5242880 6291456 0.05 0 0 0.2 -1.13232846710165e-10 +1048576 0 2 0 0 5242880 5242880 6422528 0.05 0 0 0.225 -5.77838901131156e-11 +1048576 0 2 0 0 5242880 5242880 6553600 0.05 0 0 0.25 -9.90476651796061e-11 + + +# iteration 1179648 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1179648 0 2 0 0 5242880 5242880 3932160 0.05625 0 0 -0.25 1.16100548303662e-10 +1179648 0 2 0 0 5242880 5242880 4063232 0.05625 0 0 -0.225 6.10234773446789e-11 +1179648 0 2 0 0 5242880 5242880 4194304 0.05625 0 0 -0.2 1.15569069071564e-10 +1179648 0 2 0 0 5242880 5242880 4325376 0.05625 0 0 -0.175 7.57218084160716e-10 +1179648 0 2 0 0 5242880 5242880 4456448 0.05625 0 0 -0.15 1.14978515973243e-09 +1179648 0 2 0 0 5242880 5242880 4587520 0.05625 0 0 -0.125 1.76389248042821e-10 +1179648 0 2 0 0 5242880 5242880 4718592 0.05625 0 0 -0.1 -9.02082302374948e-10 +1179648 0 2 0 0 5242880 5242880 4849664 0.05625 0 0 -0.075 -1.85227602700344e-09 +1179648 0 2 0 0 5242880 5242880 4980736 0.05625 0 0 -0.05 -1.4924199145024e-10 +1179648 0 2 0 0 5242880 5242880 5111808 0.05625 0 0 -0.025 -3.02089459928527e-10 +1179648 0 2 0 0 5242880 5242880 5242880 0.05625 0 0 0 0 +1179648 0 2 0 0 5242880 5242880 5373952 0.05625 0 0 0.025 3.02089459928527e-10 +1179648 0 2 0 0 5242880 5242880 5505024 0.05625 0 0 0.05 1.4924199145024e-10 +1179648 0 2 0 0 5242880 5242880 5636096 0.05625 0 0 0.075 1.85227602700344e-09 +1179648 0 2 0 0 5242880 5242880 5767168 0.05625 0 0 0.1 9.02082302374948e-10 +1179648 0 2 0 0 5242880 5242880 5898240 0.05625 0 0 0.125 -1.76389248042821e-10 +1179648 0 2 0 0 5242880 5242880 6029312 0.05625 0 0 0.15 -1.14978515973243e-09 +1179648 0 2 0 0 5242880 5242880 6160384 0.05625 0 0 0.175 -7.57218084160716e-10 +1179648 0 2 0 0 5242880 5242880 6291456 0.05625 0 0 0.2 -1.15569069071564e-10 +1179648 0 2 0 0 5242880 5242880 6422528 0.05625 0 0 0.225 -6.10234773446789e-11 +1179648 0 2 0 0 5242880 5242880 6553600 0.05625 0 0 0.25 -1.16100548303662e-10 + + +# iteration 1310720 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 1 0 0 5242880 5242880 2621440 0.0625 0 0 -0.5 -3.04437898501764e-13 +1310720 0 1 0 0 5242880 5242880 2883584 0.0625 0 0 -0.45 4.38967709837784e-12 +1310720 0 1 0 0 5242880 5242880 3145728 0.0625 0 0 -0.4 3.11205401726244e-12 +1310720 0 1 0 0 5242880 5242880 3407872 0.0625 0 0 -0.35 -3.66809800849549e-11 +1310720 0 1 0 0 5242880 5242880 3670016 0.0625 0 0 -0.3 -4.49737374078052e-11 +1310720 0 1 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 1.49538088653709e-10 +1310720 0 1 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.09402042980378e-10 +1310720 0 1 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 1.26435693396469e-09 +1310720 0 1 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 -8.82571386343993e-10 +1310720 0 1 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 -2.12154000385952e-10 +1310720 0 1 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 1 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 2.12154000385952e-10 +1310720 0 1 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 8.82571386343993e-10 +1310720 0 1 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 -1.26435693396469e-09 +1310720 0 1 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 -1.09402042980378e-10 +1310720 0 1 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 -1.49538088653709e-10 +1310720 0 1 0 0 5242880 5242880 6815744 0.0625 0 0 0.3 4.49737374078052e-11 +1310720 0 1 0 0 5242880 5242880 7077888 0.0625 0 0 0.35 3.66809800849549e-11 +1310720 0 1 0 0 5242880 5242880 7340032 0.0625 0 0 0.4 -3.11205401726244e-12 +1310720 0 1 0 0 5242880 5242880 7602176 0.0625 0 0 0.45 -4.38967709837784e-12 +1310720 0 1 0 0 5242880 5242880 7864320 0.0625 0 0 0.5 3.04437898501764e-13 + + +# iteration 1310720 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1310720 0 2 0 0 5242880 5242880 3932160 0.0625 0 0 -0.25 1.49538088653709e-10 +1310720 0 2 0 0 5242880 5242880 4063232 0.0625 0 0 -0.225 6.94423742593689e-11 +1310720 0 2 0 0 5242880 5242880 4194304 0.0625 0 0 -0.2 1.09402042980378e-10 +1310720 0 2 0 0 5242880 5242880 4325376 0.0625 0 0 -0.175 8.18554005637242e-10 +1310720 0 2 0 0 5242880 5242880 4456448 0.0625 0 0 -0.15 1.26435693396469e-09 +1310720 0 2 0 0 5242880 5242880 4587520 0.0625 0 0 -0.125 2.21176367874489e-10 +1310720 0 2 0 0 5242880 5242880 4718592 0.0625 0 0 -0.1 -8.82571386343993e-10 +1310720 0 2 0 0 5242880 5242880 4849664 0.0625 0 0 -0.075 -1.89863267700356e-09 +1310720 0 2 0 0 5242880 5242880 4980736 0.0625 0 0 -0.05 -2.12154000385952e-10 +1310720 0 2 0 0 5242880 5242880 5111808 0.0625 0 0 -0.025 -4.09720003295237e-10 +1310720 0 2 0 0 5242880 5242880 5242880 0.0625 0 0 0 0 +1310720 0 2 0 0 5242880 5242880 5373952 0.0625 0 0 0.025 4.09720003295237e-10 +1310720 0 2 0 0 5242880 5242880 5505024 0.0625 0 0 0.05 2.12154000385952e-10 +1310720 0 2 0 0 5242880 5242880 5636096 0.0625 0 0 0.075 1.89863267700356e-09 +1310720 0 2 0 0 5242880 5242880 5767168 0.0625 0 0 0.1 8.82571386343993e-10 +1310720 0 2 0 0 5242880 5242880 5898240 0.0625 0 0 0.125 -2.21176367874489e-10 +1310720 0 2 0 0 5242880 5242880 6029312 0.0625 0 0 0.15 -1.26435693396469e-09 +1310720 0 2 0 0 5242880 5242880 6160384 0.0625 0 0 0.175 -8.18554005637242e-10 +1310720 0 2 0 0 5242880 5242880 6291456 0.0625 0 0 0.2 -1.09402042980378e-10 +1310720 0 2 0 0 5242880 5242880 6422528 0.0625 0 0 0.225 -6.94423742593689e-11 +1310720 0 2 0 0 5242880 5242880 6553600 0.0625 0 0 0.25 -1.49538088653709e-10 + + +# iteration 1441792 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1441792 0 2 0 0 5242880 5242880 3932160 0.06875 0 0 -0.25 1.81307149993657e-10 +1441792 0 2 0 0 5242880 5242880 4063232 0.06875 0 0 -0.225 7.7773652278003e-11 +1441792 0 2 0 0 5242880 5242880 4194304 0.06875 0 0 -0.2 1.03259930987754e-10 +1441792 0 2 0 0 5242880 5242880 4325376 0.06875 0 0 -0.175 8.64003737307137e-10 +1441792 0 2 0 0 5242880 5242880 4456448 0.06875 0 0 -0.15 1.36522779944452e-09 +1441792 0 2 0 0 5242880 5242880 4587520 0.06875 0 0 -0.125 3.34266718489435e-10 +1441792 0 2 0 0 5242880 5242880 4718592 0.06875 0 0 -0.1 -8.06391597015418e-10 +1441792 0 2 0 0 5242880 5242880 4849664 0.06875 0 0 -0.075 -1.88530306181415e-09 +1441792 0 2 0 0 5242880 5242880 4980736 0.06875 0 0 -0.05 -2.82855130521546e-10 +1441792 0 2 0 0 5242880 5242880 5111808 0.06875 0 0 -0.025 -5.27734009270198e-10 +1441792 0 2 0 0 5242880 5242880 5242880 0.06875 0 0 0 0 +1441792 0 2 0 0 5242880 5242880 5373952 0.06875 0 0 0.025 5.27734009270198e-10 +1441792 0 2 0 0 5242880 5242880 5505024 0.06875 0 0 0.05 2.82855130521546e-10 +1441792 0 2 0 0 5242880 5242880 5636096 0.06875 0 0 0.075 1.88530306181415e-09 +1441792 0 2 0 0 5242880 5242880 5767168 0.06875 0 0 0.1 8.06391597015418e-10 +1441792 0 2 0 0 5242880 5242880 5898240 0.06875 0 0 0.125 -3.34266718489435e-10 +1441792 0 2 0 0 5242880 5242880 6029312 0.06875 0 0 0.15 -1.36522779944452e-09 +1441792 0 2 0 0 5242880 5242880 6160384 0.06875 0 0 0.175 -8.64003737307137e-10 +1441792 0 2 0 0 5242880 5242880 6291456 0.06875 0 0 0.2 -1.03259930987754e-10 +1441792 0 2 0 0 5242880 5242880 6422528 0.06875 0 0 0.225 -7.7773652278003e-11 +1441792 0 2 0 0 5242880 5242880 6553600 0.06875 0 0 0.25 -1.81307149993657e-10 + + +# iteration 1572864 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 0 0 0 5242880 5242880 0 0.075 0 0 -1 0 +1572864 0 0 0 0 5242880 5242880 524288 0.075 0 0 -0.9 0 +1572864 0 0 0 0 5242880 5242880 1048576 0.075 0 0 -0.8 0 +1572864 0 0 0 0 5242880 5242880 1572864 0.075 0 0 -0.7 -1.35771024053118e-15 +1572864 0 0 0 0 5242880 5242880 2097152 0.075 0 0 -0.6 1.98637402822518e-14 +1572864 0 0 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 -6.42636407051829e-13 +1572864 0 0 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 5.86269458905756e-12 +1572864 0 0 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 -5.08978900692902e-11 +1572864 0 0 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 9.43000122433091e-11 +1572864 0 0 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 -6.75829822660567e-10 +1572864 0 0 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 0 0 0 5242880 5242880 5767168 0.075 0 0 0.1 6.75829822660567e-10 +1572864 0 0 0 0 5242880 5242880 6291456 0.075 0 0 0.2 -9.43000122433091e-11 +1572864 0 0 0 0 5242880 5242880 6815744 0.075 0 0 0.3 5.08978900692902e-11 +1572864 0 0 0 0 5242880 5242880 7340032 0.075 0 0 0.4 -5.86269458905756e-12 +1572864 0 0 0 0 5242880 5242880 7864320 0.075 0 0 0.5 6.42636407051829e-13 +1572864 0 0 0 0 5242880 5242880 8388608 0.075 0 0 0.6 -1.98637402822518e-14 +1572864 0 0 0 0 5242880 5242880 8912896 0.075 0 0 0.7 1.35771024053118e-15 +1572864 0 0 0 0 5242880 5242880 9437184 0.075 0 0 0.8 0 +1572864 0 0 0 0 5242880 5242880 9961472 0.075 0 0 0.9 0 +1572864 0 0 0 0 5242880 5242880 10485760 0.075 0 0 1 0 + + +# iteration 1572864 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 1 0 0 5242880 5242880 2621440 0.075 0 0 -0.5 -6.42636407051829e-13 +1572864 0 1 0 0 5242880 5242880 2883584 0.075 0 0 -0.45 6.11615937294123e-12 +1572864 0 1 0 0 5242880 5242880 3145728 0.075 0 0 -0.4 5.86269458905756e-12 +1572864 0 1 0 0 5242880 5242880 3407872 0.075 0 0 -0.35 -3.1185883447397e-11 +1572864 0 1 0 0 5242880 5242880 3670016 0.075 0 0 -0.3 -5.08978900692902e-11 +1572864 0 1 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 6.6286639227355e-11 +1572864 0 1 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 9.43000122433091e-11 +1572864 0 1 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 1.45205973171395e-09 +1572864 0 1 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 -6.75829822660567e-10 +1572864 0 1 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 -3.56851564501752e-10 +1572864 0 1 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 1 0 0 5242880 5242880 5505024 0.075 0 0 0.05 3.56851564501752e-10 +1572864 0 1 0 0 5242880 5242880 5767168 0.075 0 0 0.1 6.75829822660567e-10 +1572864 0 1 0 0 5242880 5242880 6029312 0.075 0 0 0.15 -1.45205973171395e-09 +1572864 0 1 0 0 5242880 5242880 6291456 0.075 0 0 0.2 -9.43000122433091e-11 +1572864 0 1 0 0 5242880 5242880 6553600 0.075 0 0 0.25 -6.6286639227355e-11 +1572864 0 1 0 0 5242880 5242880 6815744 0.075 0 0 0.3 5.08978900692902e-11 +1572864 0 1 0 0 5242880 5242880 7077888 0.075 0 0 0.35 3.1185883447397e-11 +1572864 0 1 0 0 5242880 5242880 7340032 0.075 0 0 0.4 -5.86269458905756e-12 +1572864 0 1 0 0 5242880 5242880 7602176 0.075 0 0 0.45 -6.11615937294123e-12 +1572864 0 1 0 0 5242880 5242880 7864320 0.075 0 0 0.5 6.42636407051829e-13 + + +# iteration 1572864 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1572864 0 2 0 0 5242880 5242880 3932160 0.075 0 0 -0.25 6.6286639227355e-11 +1572864 0 2 0 0 5242880 5242880 4063232 0.075 0 0 -0.225 2.75737634945702e-12 +1572864 0 2 0 0 5242880 5242880 4194304 0.075 0 0 -0.2 9.43000122433091e-11 +1572864 0 2 0 0 5242880 5242880 4325376 0.075 0 0 -0.175 9.07923804940536e-10 +1572864 0 2 0 0 5242880 5242880 4456448 0.075 0 0 -0.15 1.45205973171395e-09 +1572864 0 2 0 0 5242880 5242880 4587520 0.075 0 0 -0.125 4.53038795858683e-10 +1572864 0 2 0 0 5242880 5242880 4718592 0.075 0 0 -0.1 -6.75829822660567e-10 +1572864 0 2 0 0 5242880 5242880 4849664 0.075 0 0 -0.075 -1.8117351507918e-09 +1572864 0 2 0 0 5242880 5242880 4980736 0.075 0 0 -0.05 -3.56851564501752e-10 +1572864 0 2 0 0 5242880 5242880 5111808 0.075 0 0 -0.025 -6.50323827196727e-10 +1572864 0 2 0 0 5242880 5242880 5242880 0.075 0 0 0 0 +1572864 0 2 0 0 5242880 5242880 5373952 0.075 0 0 0.025 6.50323827196727e-10 +1572864 0 2 0 0 5242880 5242880 5505024 0.075 0 0 0.05 3.56851564501752e-10 +1572864 0 2 0 0 5242880 5242880 5636096 0.075 0 0 0.075 1.8117351507918e-09 +1572864 0 2 0 0 5242880 5242880 5767168 0.075 0 0 0.1 6.75829822660567e-10 +1572864 0 2 0 0 5242880 5242880 5898240 0.075 0 0 0.125 -4.53038795858683e-10 +1572864 0 2 0 0 5242880 5242880 6029312 0.075 0 0 0.15 -1.45205973171395e-09 +1572864 0 2 0 0 5242880 5242880 6160384 0.075 0 0 0.175 -9.07923804940536e-10 +1572864 0 2 0 0 5242880 5242880 6291456 0.075 0 0 0.2 -9.43000122433091e-11 +1572864 0 2 0 0 5242880 5242880 6422528 0.075 0 0 0.225 -2.75737634945702e-12 +1572864 0 2 0 0 5242880 5242880 6553600 0.075 0 0 0.25 -6.6286639227355e-11 + + +# iteration 1703936 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1703936 0 2 0 0 5242880 5242880 3932160 0.08125 0 0 -0.25 6.96062224198494e-11 +1703936 0 2 0 0 5242880 5242880 4063232 0.08125 0 0 -0.225 -1.10388286118339e-11 +1703936 0 2 0 0 5242880 5242880 4194304 0.08125 0 0 -0.2 7.52374759716012e-11 +1703936 0 2 0 0 5242880 5242880 4325376 0.08125 0 0 -0.175 9.3008305679465e-10 +1703936 0 2 0 0 5242880 5242880 4456448 0.08125 0 0 -0.15 1.52889975737573e-09 +1703936 0 2 0 0 5242880 5242880 4587520 0.08125 0 0 -0.125 5.89320989216024e-10 +1703936 0 2 0 0 5242880 5242880 4718592 0.08125 0 0 -0.1 -4.94475691873812e-10 +1703936 0 2 0 0 5242880 5242880 4849664 0.08125 0 0 -0.075 -1.67817614897074e-09 +1703936 0 2 0 0 5242880 5242880 4980736 0.08125 0 0 -0.05 -4.281106418443e-10 +1703936 0 2 0 0 5242880 5242880 5111808 0.08125 0 0 -0.025 -7.70426056284634e-10 +1703936 0 2 0 0 5242880 5242880 5242880 0.08125 0 0 0 0 +1703936 0 2 0 0 5242880 5242880 5373952 0.08125 0 0 0.025 7.70426056284634e-10 +1703936 0 2 0 0 5242880 5242880 5505024 0.08125 0 0 0.05 4.281106418443e-10 +1703936 0 2 0 0 5242880 5242880 5636096 0.08125 0 0 0.075 1.67817614897074e-09 +1703936 0 2 0 0 5242880 5242880 5767168 0.08125 0 0 0.1 4.94475691873812e-10 +1703936 0 2 0 0 5242880 5242880 5898240 0.08125 0 0 0.125 -5.89320989216024e-10 +1703936 0 2 0 0 5242880 5242880 6029312 0.08125 0 0 0.15 -1.52889975737573e-09 +1703936 0 2 0 0 5242880 5242880 6160384 0.08125 0 0 0.175 -9.3008305679465e-10 +1703936 0 2 0 0 5242880 5242880 6291456 0.08125 0 0 0.2 -7.52374759716012e-11 +1703936 0 2 0 0 5242880 5242880 6422528 0.08125 0 0 0.225 1.10388286118339e-11 +1703936 0 2 0 0 5242880 5242880 6553600 0.08125 0 0 0.25 -6.96062224198494e-11 + + +# iteration 1835008 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 1 0 0 5242880 5242880 2621440 0.0875 0 0 -0.5 -1.14959691072114e-12 +1835008 0 1 0 0 5242880 5242880 2883584 0.0875 0 0 -0.45 7.22601572039165e-12 +1835008 0 1 0 0 5242880 5242880 3145728 0.0875 0 0 -0.4 9.22265678178953e-12 +1835008 0 1 0 0 5242880 5242880 3407872 0.0875 0 0 -0.35 -2.91131087878753e-11 +1835008 0 1 0 0 5242880 5242880 3670016 0.0875 0 0 -0.3 -4.30227031662326e-11 +1835008 0 1 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.02889344216125e-10 +1835008 0 1 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 4.8500592431111e-11 +1835008 0 1 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 1.59439886756226e-09 +1835008 0 1 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 -2.54991675922393e-10 +1835008 0 1 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 -4.89255647569594e-10 +1835008 0 1 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 1 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 4.89255647569594e-10 +1835008 0 1 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 2.54991675922393e-10 +1835008 0 1 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 -1.59439886756226e-09 +1835008 0 1 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 -4.8500592431111e-11 +1835008 0 1 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 -1.02889344216125e-10 +1835008 0 1 0 0 5242880 5242880 6815744 0.0875 0 0 0.3 4.30227031662326e-11 +1835008 0 1 0 0 5242880 5242880 7077888 0.0875 0 0 0.35 2.91131087878753e-11 +1835008 0 1 0 0 5242880 5242880 7340032 0.0875 0 0 0.4 -9.22265678178953e-12 +1835008 0 1 0 0 5242880 5242880 7602176 0.0875 0 0 0.45 -7.22601572039165e-12 +1835008 0 1 0 0 5242880 5242880 7864320 0.0875 0 0 0.5 1.14959691072114e-12 + + +# iteration 1835008 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1835008 0 2 0 0 5242880 5242880 3932160 0.0875 0 0 -0.25 1.02889344216125e-10 +1835008 0 2 0 0 5242880 5242880 4063232 0.0875 0 0 -0.225 -1.18041709106814e-11 +1835008 0 2 0 0 5242880 5242880 4194304 0.0875 0 0 -0.2 4.8500592431111e-11 +1835008 0 2 0 0 5242880 5242880 4325376 0.0875 0 0 -0.175 9.33637341977913e-10 +1835008 0 2 0 0 5242880 5242880 4456448 0.0875 0 0 -0.15 1.59439886756226e-09 +1835008 0 2 0 0 5242880 5242880 4587520 0.0875 0 0 -0.125 7.8096373624358e-10 +1835008 0 2 0 0 5242880 5242880 4718592 0.0875 0 0 -0.1 -2.54991675922393e-10 +1835008 0 2 0 0 5242880 5242880 4849664 0.0875 0 0 -0.075 -1.48597429731427e-09 +1835008 0 2 0 0 5242880 5242880 4980736 0.0875 0 0 -0.05 -4.89255647569594e-10 +1835008 0 2 0 0 5242880 5242880 5111808 0.0875 0 0 -0.025 -8.8000695156835e-10 +1835008 0 2 0 0 5242880 5242880 5242880 0.0875 0 0 0 0 +1835008 0 2 0 0 5242880 5242880 5373952 0.0875 0 0 0.025 8.8000695156835e-10 +1835008 0 2 0 0 5242880 5242880 5505024 0.0875 0 0 0.05 4.89255647569594e-10 +1835008 0 2 0 0 5242880 5242880 5636096 0.0875 0 0 0.075 1.48597429731427e-09 +1835008 0 2 0 0 5242880 5242880 5767168 0.0875 0 0 0.1 2.54991675922393e-10 +1835008 0 2 0 0 5242880 5242880 5898240 0.0875 0 0 0.125 -7.8096373624358e-10 +1835008 0 2 0 0 5242880 5242880 6029312 0.0875 0 0 0.15 -1.59439886756226e-09 +1835008 0 2 0 0 5242880 5242880 6160384 0.0875 0 0 0.175 -9.33637341977913e-10 +1835008 0 2 0 0 5242880 5242880 6291456 0.0875 0 0 0.2 -4.8500592431111e-11 +1835008 0 2 0 0 5242880 5242880 6422528 0.0875 0 0 0.225 1.18041709106814e-11 +1835008 0 2 0 0 5242880 5242880 6553600 0.0875 0 0 0.25 -1.02889344216125e-10 + + +# iteration 1966080 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +1966080 0 2 0 0 5242880 5242880 3932160 0.09375 0 0 -0.25 1.34436501201734e-10 +1966080 0 2 0 0 5242880 5242880 4063232 0.09375 0 0 -0.225 -1.03885846193062e-11 +1966080 0 2 0 0 5242880 5242880 4194304 0.09375 0 0 -0.2 2.69188612372906e-11 +1966080 0 2 0 0 5242880 5242880 4325376 0.09375 0 0 -0.175 9.38286274781054e-10 +1966080 0 2 0 0 5242880 5242880 4456448 0.09375 0 0 -0.15 1.65348419736237e-09 +1966080 0 2 0 0 5242880 5242880 4587520 0.09375 0 0 -0.125 9.42916074141038e-10 +1966080 0 2 0 0 5242880 5242880 4718592 0.09375 0 0 -0.1 2.10926091407752e-11 +1966080 0 2 0 0 5242880 5242880 4849664 0.09375 0 0 -0.075 -1.23712620703209e-09 +1966080 0 2 0 0 5242880 5242880 4980736 0.09375 0 0 -0.05 -5.31834245624345e-10 +1966080 0 2 0 0 5242880 5242880 5111808 0.09375 0 0 -0.025 -9.7040738870439e-10 +1966080 0 2 0 0 5242880 5242880 5242880 0.09375 0 0 0 0 +1966080 0 2 0 0 5242880 5242880 5373952 0.09375 0 0 0.025 9.7040738870439e-10 +1966080 0 2 0 0 5242880 5242880 5505024 0.09375 0 0 0.05 5.31834245624345e-10 +1966080 0 2 0 0 5242880 5242880 5636096 0.09375 0 0 0.075 1.23712620703209e-09 +1966080 0 2 0 0 5242880 5242880 5767168 0.09375 0 0 0.1 -2.10926091407752e-11 +1966080 0 2 0 0 5242880 5242880 5898240 0.09375 0 0 0.125 -9.42916074141038e-10 +1966080 0 2 0 0 5242880 5242880 6029312 0.09375 0 0 0.15 -1.65348419736237e-09 +1966080 0 2 0 0 5242880 5242880 6160384 0.09375 0 0 0.175 -9.38286274781054e-10 +1966080 0 2 0 0 5242880 5242880 6291456 0.09375 0 0 0.2 -2.69188612372906e-11 +1966080 0 2 0 0 5242880 5242880 6422528 0.09375 0 0 0.225 1.03885846193062e-11 +1966080 0 2 0 0 5242880 5242880 6553600 0.09375 0 0 0.25 -1.34436501201734e-10 + + +# iteration 2097152 +# refinement level 0 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 0 0 0 5242880 5242880 0 0.1 0 0 -1 0 +2097152 0 0 0 0 5242880 5242880 524288 0.1 0 0 -0.9 -2.31296463463574e-17 +2097152 0 0 0 0 5242880 5242880 1048576 0.1 0 0 -0.8 3.46944695195361e-16 +2097152 0 0 0 0 5242880 5242880 1572864 0.1 0 0 -0.7 -1.33434929772136e-14 +2097152 0 0 0 0 5242880 5242880 2097152 0.1 0 0 -0.6 1.30913798320383e-13 +2097152 0 0 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 -1.80851861264486e-12 +2097152 0 0 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 1.32743815939307e-11 +2097152 0 0 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 -2.44367743632938e-11 +2097152 0 0 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 6.21578251832252e-12 +2097152 0 0 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 3.4977364523255e-10 +2097152 0 0 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 0 0 0 5242880 5242880 5767168 0.1 0 0 0.1 -3.4977364523255e-10 +2097152 0 0 0 0 5242880 5242880 6291456 0.1 0 0 0.2 -6.21578251832252e-12 +2097152 0 0 0 0 5242880 5242880 6815744 0.1 0 0 0.3 2.44367743632938e-11 +2097152 0 0 0 0 5242880 5242880 7340032 0.1 0 0 0.4 -1.32743815939307e-11 +2097152 0 0 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.80851861264486e-12 +2097152 0 0 0 0 5242880 5242880 8388608 0.1 0 0 0.6 -1.30913798320383e-13 +2097152 0 0 0 0 5242880 5242880 8912896 0.1 0 0 0.7 1.33434929772136e-14 +2097152 0 0 0 0 5242880 5242880 9437184 0.1 0 0 0.8 -3.46944695195361e-16 +2097152 0 0 0 0 5242880 5242880 9961472 0.1 0 0 0.9 2.31296463463574e-17 +2097152 0 0 0 0 5242880 5242880 10485760 0.1 0 0 1 0 + + +# iteration 2097152 +# refinement level 1 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 1 0 0 5242880 5242880 2621440 0.1 0 0 -0.5 -1.80851861264486e-12 +2097152 0 1 0 0 5242880 5242880 2883584 0.1 0 0 -0.45 7.96866421228411e-12 +2097152 0 1 0 0 5242880 5242880 3145728 0.1 0 0 -0.4 1.32743815939307e-11 +2097152 0 1 0 0 5242880 5242880 3407872 0.1 0 0 -0.35 -6.55429992687158e-12 +2097152 0 1 0 0 5242880 5242880 3670016 0.1 0 0 -0.3 -2.44367743632938e-11 +2097152 0 1 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 -3.29398095894514e-11 +2097152 0 1 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 6.21578251832252e-12 +2097152 0 1 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 1.70451336841312e-09 +2097152 0 1 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 3.4977364523255e-10 +2097152 0 1 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 -5.46878123804569e-10 +2097152 0 1 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 1 0 0 5242880 5242880 5505024 0.1 0 0 0.05 5.46878123804569e-10 +2097152 0 1 0 0 5242880 5242880 5767168 0.1 0 0 0.1 -3.4977364523255e-10 +2097152 0 1 0 0 5242880 5242880 6029312 0.1 0 0 0.15 -1.70451336841312e-09 +2097152 0 1 0 0 5242880 5242880 6291456 0.1 0 0 0.2 -6.21578251832252e-12 +2097152 0 1 0 0 5242880 5242880 6553600 0.1 0 0 0.25 3.29398095894514e-11 +2097152 0 1 0 0 5242880 5242880 6815744 0.1 0 0 0.3 2.44367743632938e-11 +2097152 0 1 0 0 5242880 5242880 7077888 0.1 0 0 0.35 6.55429992687158e-12 +2097152 0 1 0 0 5242880 5242880 7340032 0.1 0 0 0.4 -1.32743815939307e-11 +2097152 0 1 0 0 5242880 5242880 7602176 0.1 0 0 0.45 -7.96866421228411e-12 +2097152 0 1 0 0 5242880 5242880 7864320 0.1 0 0 0.5 1.80851861264486e-12 + + +# iteration 2097152 +# refinement level 2 multigrid level 0 map 0 component 0 time level 0 +# column format: it tl rl c ml ix iy iz time x y z data +2097152 0 2 0 0 5242880 5242880 3932160 0.1 0 0 -0.25 -3.29398095894514e-11 +2097152 0 2 0 0 5242880 5242880 4063232 0.1 0 0 -0.225 -1.20037052355624e-10 +2097152 0 2 0 0 5242880 5242880 4194304 0.1 0 0 -0.2 6.21578251832252e-12 +2097152 0 2 0 0 5242880 5242880 4325376 0.1 0 0 -0.175 9.4248303267124e-10 +2097152 0 2 0 0 5242880 5242880 4456448 0.1 0 0 -0.15 1.70451336841312e-09 +2097152 0 2 0 0 5242880 5242880 4587520 0.1 0 0 -0.125 1.18932784150608e-09 +2097152 0 2 0 0 5242880 5242880 4718592 0.1 0 0 -0.1 3.4977364523255e-10 +2097152 0 2 0 0 5242880 5242880 4849664 0.1 0 0 -0.075 -9.3463225122233e-10 +2097152 0 2 0 0 5242880 5242880 4980736 0.1 0 0 -0.05 -5.46878123804569e-10 +2097152 0 2 0 0 5242880 5242880 5111808 0.1 0 0 -0.025 -1.03273274654203e-09 +2097152 0 2 0 0 5242880 5242880 5242880 0.1 0 0 0 0 +2097152 0 2 0 0 5242880 5242880 5373952 0.1 0 0 0.025 1.03273274654203e-09 +2097152 0 2 0 0 5242880 5242880 5505024 0.1 0 0 0.05 5.46878123804569e-10 +2097152 0 2 0 0 5242880 5242880 5636096 0.1 0 0 0.075 9.3463225122233e-10 +2097152 0 2 0 0 5242880 5242880 5767168 0.1 0 0 0.1 -3.4977364523255e-10 +2097152 0 2 0 0 5242880 5242880 5898240 0.1 0 0 0.125 -1.18932784150608e-09 +2097152 0 2 0 0 5242880 5242880 6029312 0.1 0 0 0.15 -1.70451336841312e-09 +2097152 0 2 0 0 5242880 5242880 6160384 0.1 0 0 0.175 -9.4248303267124e-10 +2097152 0 2 0 0 5242880 5242880 6291456 0.1 0 0 0.2 -6.21578251832252e-12 +2097152 0 2 0 0 5242880 5242880 6422528 0.1 0 0 0.225 1.20037052355624e-10 +2097152 0 2 0 0 5242880 5242880 6553600 0.1 0 0 0.25 3.29398095894514e-11 + + diff --git a/Carpet/CarpetLib/COPYING b/Carpet/CarpetLib/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetLib/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetLib/README b/Carpet/CarpetLib/README new file mode 100644 index 000000000..050a838b0 --- /dev/null +++ b/Carpet/CarpetLib/README @@ -0,0 +1,8 @@ +Cactus Code Thorn CarpetLib +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/README,v 1.3 2004/01/25 14:57:29 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn contains the backend library that provides mesh refinement. diff --git a/Carpet/CarpetLib/configuration.ccl b/Carpet/CarpetLib/configuration.ccl new file mode 100644 index 000000000..1e2583eda --- /dev/null +++ b/Carpet/CarpetLib/configuration.ccl @@ -0,0 +1,8 @@ +# Configuration definitions for thorn CarpetLib +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/configuration.ccl,v 1.1 2004/04/18 14:09:59 schnetter Exp $ + +PROVIDES CarpetLib +{ + SCRIPT + LANG +} diff --git a/Carpet/CarpetLib/interface.ccl b/Carpet/CarpetLib/interface.ccl new file mode 100644 index 000000000..593228e75 --- /dev/null +++ b/Carpet/CarpetLib/interface.ccl @@ -0,0 +1,22 @@ +# Interface definition for thorn CarpetLib +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/interface.ccl,v 1.5 2004/05/04 22:09:54 schnetter Exp $ + +IMPLEMENTS: CarpetLib + +includes header: defs.hh in defs.hh +includes header: dist.hh in dist.hh + +includes header: bbox.hh in bbox.hh +includes header: bboxset.hh in bboxset.hh +includes header: vect.hh in vect.hh + +includes header: data.hh in data.hh +includes header: gdata.hh in gdata.hh + +includes header: dh.hh in dh.hh +includes header: gf.hh in gf.hh +includes header: ggf.hh in ggf.hh +includes header: gh.hh in gh.hh +includes header: th.hh in th.hh + +includes header: operators.hh in operators.hh diff --git a/Carpet/CarpetLib/param.ccl b/Carpet/CarpetLib/param.ccl new file mode 100644 index 000000000..1b4e14a87 --- /dev/null +++ b/Carpet/CarpetLib/param.ccl @@ -0,0 +1,24 @@ +# Parameter definitions for thorn CarpetLib +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/param.ccl,v 1.8 2004/05/21 18:13:41 schnetter Exp $ + +private: + +BOOLEAN verbose "Print info to the screen" STEERABLE=always +{ +} "no" + +BOOLEAN check_array_accesses "Check all array accesses in Fortran" STEERABLE=always +{ +} "no" + +BOOLEAN barriers "Insert barriers at strategic places for debugging purposes (slows down execution)" STEERABLE=always +{ +} "no" + +BOOLEAN output_bboxes "Output bounding box information to the screen" STEERABLE=always +{ +} "no" + +BOOLEAN save_memory_during_regridding "Save some memory during regridding at the expense of speed" +{ +} "no" diff --git a/Carpet/CarpetLib/schedule.ccl b/Carpet/CarpetLib/schedule.ccl new file mode 100644 index 000000000..ef0ff81a6 --- /dev/null +++ b/Carpet/CarpetLib/schedule.ccl @@ -0,0 +1,2 @@ +# Schedule definitions for thorn CarpetLib +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/schedule.ccl,v 1.2 2003/09/19 16:06:41 schnetter Exp $ diff --git a/Carpet/CarpetLib/src/bbox.cc b/Carpet/CarpetLib/src/bbox.cc new file mode 100644 index 000000000..9269e042d --- /dev/null +++ b/Carpet/CarpetLib/src/bbox.cc @@ -0,0 +1,270 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/bbox.cc,v 1.26 2004/06/26 15:08:09 schnetter Exp $ + +#include <assert.h> + +#include <iostream> +#include <limits> + +#include "defs.hh" +#include "vect.hh" + +#include "bbox.hh" + +using namespace std; + + + +// Constructors +template<class T, int D> +bbox<T,D>::bbox (): _lower(T(1)), _upper(T(0)), _stride(T(1)) { } + +template<class T, int D> +bbox<T,D>::bbox (const bbox& b) + : _lower(b._lower), _upper(b._upper), _stride(b._stride) +{ } + +template<class T, int D> +bbox<T,D>& bbox<T,D>::operator= (const bbox& b) { + _lower=b._lower; _upper=b._upper; _stride=b._stride; + return *this; +} + +template<class T, int D> +bbox<T,D>::bbox (const vect<T,D>& lower, const vect<T,D>& upper, + const vect<T,D>& stride) + : _lower(lower), _upper(upper), _stride(stride) +{ + assert (all(_stride>T(0))); + assert (all((_upper-_lower)%_stride == T(0))); + if (numeric_limits<T>::is_integer && numeric_limits<T>::is_signed) { + // prevent accidental wrap-around + assert (all(_lower < numeric_limits<T>::max() / 2)); + assert (all(_lower > numeric_limits<T>::min() / 2)); + assert (all(_upper < numeric_limits<T>::max() / 2)); + assert (all(_upper > numeric_limits<T>::min() / 2)); + } +} + +// Accessors +template<class T, int D> +T bbox<T,D>::size () const { + if (empty()) return 0; +// return prod((shape()+stride()-1)/stride()); + const vect<T,D> sh((shape()+stride()-1)/stride()); + T sz = 1, max = numeric_limits<T>::max(); + for (int d=0; d<D; ++d) { + assert (sh[d] <= max); + sz *= sh[d]; + max /= sh[d]; + } + return sz; +} + +// Queries +template<class T, int D> +bool bbox<T,D>::contains (const vect<T,D>& x) const { + return all(x>=lower() && x<=upper()); +} + +// Operators +template<class T, int D> +bool bbox<T,D>::operator== (const bbox& b) const { + if (empty() && b.empty()) return true; + assert (all(stride()==b.stride())); + return all(lower()==b.lower() && upper()==b.upper()); +} + +template<class T, int D> +bool bbox<T,D>::operator!= (const bbox& b) const { + return ! (*this == b); +} + +template<class T, int D> +bool bbox<T,D>::operator< (const bbox& b) const { + // An arbitraty order: empty boxes come first, then sorted by lower + // bound, then by upper bound, then by coarseness + if (b.empty()) return false; + if (empty()) return true; + for (int d=D-1; d>=0; --d) { + if (lower()[d] < b.lower()[d]) return true; + if (lower()[d] > b.lower()[d]) return false; + } + for (int d=D-1; d>=0; --d) { + if (upper()[d] < b.upper()[d]) return true; + if (upper()[d] > b.upper()[d]) return false; + } + for (int d=D-1; d>=0; --d) { + if (stride()[d] > b.stride()[d]) return true; + if (stride()[d] < b.stride()[d]) return false; + } + return false; +} + +template<class T, int D> +bool bbox<T,D>::operator> (const bbox& b) const { + return b < *this; +} + +template<class T, int D> +bool bbox<T,D>::operator<= (const bbox& b) const { + return ! (b > *this); +} + +template<class T, int D> +bool bbox<T,D>::operator>= (const bbox& b) const { + return b <= *this; +} + +// Intersection +template<class T, int D> +bbox<T,D> bbox<T,D>::operator& (const bbox& b) const { + assert (all(stride()==b.stride())); + vect<T,D> lo = max(lower(),b.lower()); + vect<T,D> up = min(upper(),b.upper()); + return bbox(lo,up,stride()); +} + +// Containment +template<class T, int D> +bool bbox<T,D>::is_contained_in (const bbox& b) const { + if (empty()) return true; + // no alignment check + return all(lower()>=b.lower() && upper()<=b.upper()); +} + +// Alignment check +template<class T, int D> +bool bbox<T,D>::is_aligned_with (const bbox& b) const { + return all(stride()==b.stride() && (lower()-b.lower()) % stride() == T(0)); +} + +// Expand the bbox a little by multiples of the stride +template<class T, int D> +bbox<T,D> bbox<T,D>::expand (const vect<T,D>& lo, const vect<T,D>& hi) const { + // Allow expansion only into directions where the extent is not negative + assert (all(lower()<=upper() || (lo==T(0) && hi==T(0)))); + const vect<T,D> str = stride(); + const vect<T,D> lb = lower() - lo * str; + const vect<T,D> ub = upper() + hi * str; + return bbox(lb,ub,str); +} + +// Find the smallest b-compatible box around *this +template<class T, int D> +bbox<T,D> bbox<T,D>::expanded_for (const bbox& b) const { + if (empty()) return bbox(b.lower(), b.lower()-b.stride(), b.stride()); + const vect<T,D> str = b.stride(); + const vect<T,D> loff = ((lower() - b.lower()) % str + str) % str; + const vect<T,D> uoff = ((upper() - b.lower()) % str + str) % str; + const vect<T,D> lo = lower() - loff; // go outwards + const vect<T,D> up = upper() + (str - uoff) % str; + return bbox(lo,up,str); +} + +// Find the largest b-compatible box inside *this +template<class T, int D> +bbox<T,D> bbox<T,D>::contracted_for (const bbox& b) const { + if (empty()) return bbox(b.lower(), b.lower()-b.stride(), b.stride()); + const vect<T,D> str = b.stride(); + const vect<T,D> loff = ((lower() - b.lower()) % str + str) % str; + const vect<T,D> uoff = ((upper() - b.lower()) % str + str) % str; + const vect<T,D> lo = lower() + (str - loff) % str; // go inwards + const vect<T,D> up = upper() - uoff; + return bbox(lo,up,str); +} + +// Smallest bbox containing both boxes +template<class T, int D> +bbox<T,D> bbox<T,D>::expanded_containing (const bbox& b) const { + if (empty()) return b; + if (b.empty()) return *this; + assert (is_aligned_with(b)); + const vect<T,D> lo = min(lower(), b.lower()); + const vect<T,D> up = max(upper(), b.upper()); + const vect<T,D> str = min(stride(), b.stride()); + return bbox(lo,up,str); +} + +// Iterators +template<class T, int D> +bbox<T,D>::iterator::iterator (const bbox& box, const vect<T,D>& pos) + : box(box), pos(pos) { + if (box.empty()) this->pos=box.upper(); +} + +template<class T, int D> +bool bbox<T,D>::iterator::operator!= (const iterator& i) const { + return any(pos!=i.pos); +} + +template<class T, int D> +typename bbox<T,D>::iterator& bbox<T,D>::iterator::operator++ () { + for (int d=0; d<D; ++d) { + pos[d]+=box.stride()[d]; + if (pos[d]<=box.upper()[d]) break; + pos[d]=box.lower()[d]; + } + return *this; +} + +template<class T, int D> +typename bbox<T,D>::iterator bbox<T,D>::begin () const { + return iterator(*this, lower()); +} + +template<class T, int D> +typename bbox<T,D>::iterator bbox<T,D>::end () const { + return iterator(*this, lower()); +} + + + +// Input +template<class T,int D> +void bbox<T,D>::input (istream& is) { + try { + skipws (is); + consume (is, '('); + is >> _lower; + skipws (is); + consume (is, ':'); + is >> _upper; + skipws (is); + consume (is, ':'); + is >> _stride; + skipws (is); + consume (is, ')'); + } catch (input_error &err) { + cout << "Input error while reading a bbox" << endl; + throw err; + } + if (any(_stride<=T(0))) { + cout << "While reading the bbox " << *this << ":" << endl + << " The stride is not positive." << endl; + throw input_error(); + } + if (any((_upper-_lower)%_stride != T(0))) { + cout << "While reading the bbox " << *this << ":" << endl + << " The stride does not evenly divide the extent." << endl; + throw input_error(); + } + assert (all(_stride>T(0))); + assert (all((_upper-_lower)%_stride == T(0))); +} + + + +// Output +template<class T,int D> +void bbox<T,D>::output (ostream& os) const { + os << "(" << lower() << ":" << upper() << ":" << stride() << ")"; +} + + + +// Note: We need all dimensions all the time. +template class bbox<int,0>; +template class bbox<int,1>; +template class bbox<int,2>; +template class bbox<int,3>; +template class bbox<double,3>; diff --git a/Carpet/CarpetLib/src/bbox.hh b/Carpet/CarpetLib/src/bbox.hh new file mode 100644 index 000000000..e23d000ac --- /dev/null +++ b/Carpet/CarpetLib/src/bbox.hh @@ -0,0 +1,171 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/bbox.hh,v 1.15 2004/04/18 13:03:44 schnetter Exp $ + +#ifndef BBOX_HH +#define BBOX_HH + +#include <iostream> + +#include "defs.hh" +#include "vect.hh" + +using namespace std; + + + +// Forward declaration +template<class T, int D> class bbox; + +// Input/Output +template<class T, int D> +istream& operator>> (istream& is, bbox<T,D>& b); +template<class T, int D> +ostream& operator<< (ostream& os, const bbox<T,D>& b); + + + +/** + * A bounding box, i.e. a rectangle with lower and upper bound and a + * stride. + */ +template<class T, int D> +class bbox { + + // Fields + + /** Bounding box bounds and stride. The bounds are inclusive. */ + vect<T,D> _lower, _upper, _stride; + +public: + + // Constructors + + /** Construct an empty bbox. */ + bbox (); + + /** Copy constructor. */ + bbox (const bbox& b); + + /** Assignment operator. */ + bbox& operator= (const bbox& b); + + /** Create a bbox from bounds and stride. */ + bbox (const vect<T,D>& lower, const vect<T,D>& upper, + const vect<T,D>& stride); + + // Accessors + // (Don't return references; *this might be a temporary) + + /** Get lower bound. */ + vect<T,D> lower () const { return _lower; } + + /** Get upper bound. */ + vect<T,D> upper () const { return _upper; } + + /** Get stride. */ + vect<T,D> stride () const { return _stride; } + + /** Get the shape (or extent). */ + vect<T,D> shape () const { return _upper - _lower + _stride; } + + /** Determine whether the bbox is empty. */ + bool empty() const { + return any(lower()>upper()); + } + + /** Return the size, which is the product of the shape. */ + T size () const; + + // Queries + + /** Find out whether the bbox contains the point x. */ + bool contains (const vect<T,D>& x) const; + + // Operators + bool operator== (const bbox& b) const; + bool operator!= (const bbox& b) const; + bool operator< (const bbox& b) const; + bool operator> (const bbox& b) const; + bool operator<= (const bbox& b) const; + bool operator>= (const bbox& b) const; + + /** Calculate the intersection (the set of common points) with the + bbox b. */ + bbox operator& (const bbox& b) const; + + /** Find out whether this bbox is contained in the bbox b. */ + bool is_contained_in (const bbox& b) const; + + /** Find out whether this bbox is aligned with the bbox b. + ("aligned" means that both bboxes have the same stride and that + their boundaries are commesurate.) */ + bool is_aligned_with (const bbox& b) const; + + /** Expand (enlarge) the bbox by multiples of the stride. */ + bbox expand (const vect<T,D>& lo, const vect<T,D>& hi) const; + + /** Find the smallest b-compatible box around this bbox. + ("compatible" means having the same stride.) */ + bbox expanded_for (const bbox& b) const; + + /** Find the largest b-compatible box inside this bbox. */ + bbox contracted_for (const bbox& b) const; + + /** Find the smallest bbox containing both boxes. */ + bbox expanded_containing (const bbox<T,D>& b) const; + + // Iterators + + /** An iterator over all points in a bbox. */ + class iterator { + protected: + /** The bbox over which we iterate. */ + const bbox& box; + /** Current position. */ + vect<T,D> pos; + public: + /** Constructor. */ + iterator (const bbox& box, const vect<T,D>& pos); + /** Accessor. */ + const vect<T,D>& operator* () const { return pos; } + /** Check whether the position is the same. */ + bool operator!= (const iterator& i) const; + /** Advance. */ + iterator& operator++ (); + }; + + /** Create an iterator that points to the first point in a bbox. */ + iterator begin () const; + /** Create an iterator that points "after the last point" in a bbox, + which means that it also points to the first point. */ + iterator end () const; + + // Input/Output helpers + void input (istream& is); + void output (ostream& os) const; +}; + + + +// Input + +/** Read a formatted bbox from a stream. */ +template<class T,int D> +inline istream& operator>> (istream& is, bbox<T,D>& b) { + b.input(is); + return is; +} + + + +// Output + +/** Write a bbox formatted to a stream. */ +template<class T,int D> +inline ostream& operator<< (ostream& os, const bbox<T,D>& b) { + b.output(os); + return os; +} + + + +#endif // BBOX_HH diff --git a/Carpet/CarpetLib/src/bboxset.cc b/Carpet/CarpetLib/src/bboxset.cc new file mode 100644 index 000000000..94cf1997e --- /dev/null +++ b/Carpet/CarpetLib/src/bboxset.cc @@ -0,0 +1,393 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/bboxset.cc,v 1.16 2004/06/13 22:46:48 schnetter Exp $ + +#include <assert.h> + +#include <iostream> +#include <limits> +#include <set> +#include <stack> + +#include "defs.hh" + +#include "bboxset.hh" + +using namespace std; + + + +// Constructors +template<class T, int D> +bboxset<T,D>::bboxset () { + assert (invariant()); +} + +template<class T, int D> +bboxset<T,D>::bboxset (const box& b) { + if (!b.empty()) bs.insert(b); + assert (invariant()); +} + +template<class T, int D> +bboxset<T,D>::bboxset (const bboxset& s): bs(s.bs) { + assert (invariant()); +} + +template<class T, int D> +bboxset<T,D>::bboxset (const bset& bs): bs(bs) { + assert (invariant()); +} + + + +// Invariant +template<class T, int D> +bool bboxset<T,D>::invariant () const { + for (const_iterator bi=begin(); bi!=end(); ++bi) { + if ((*bi).empty()) return false; + if (! (*bi).is_aligned_with(*bs.begin())) return false; + // check for overlap (quadratic -- expensive) + for (const_iterator bi2=begin(); bi2!=bi; ++bi2) { + if (! ((*bi2) & (*bi)).empty()) return false; + } + } + return true; +} + + + +// Normalisation +template<class T, int D> +void bboxset<T,D>::normalize () { + assert (invariant()); + const int num_initial_boxes = bs.size(); + int num_combined_boxes = 0; + stack<box> todo, done; + for (typename set<box>::const_iterator elt = bs.begin(); elt != bs.end(); ++elt) { + done.push (*elt); + } + // TODO: This will not catch all cases where bboxes can be combined. + for (int d=0; d<D; ++d) { + todo = done; + done = stack<box>(); + while (! todo.empty()) { + restart:; + box item = todo.top(); + todo.pop(); + stack<box> work = done; + done = stack<box>(); + while (! work.empty()) { + box comp = work.top(); + work.pop(); + { + assert (all(comp.stride() == item.stride())); + if (comp.upper()[d] + item.stride()[d] == item.lower()[d]) { + if (all((comp.lower() == item.lower() + && comp.upper() == item.upper()).replace (d, true))) { + box newbox = box(comp.lower(), item.upper(), item.stride()); + todo.push (newbox); + while (! work.empty()) { + done.push (work.top()); + work.pop(); + } + ++num_combined_boxes; + goto restart; + } + } + if (item.upper()[d] + item.stride()[d] == comp.lower()[d]) { + if (all((comp.lower() == item.lower() + && comp.upper() == item.upper()).replace (d, true))) { + box newbox = box(item.lower(), comp.upper(), item.stride()); + todo.push (newbox); + while (! work.empty()) { + done.push (work.top()); + work.pop(); + } + ++num_combined_boxes; + goto restart; + } + } + } + done.push (comp); + } // while work + done.push (item); + } // while todo + } // for d + bs.clear(); + while (! done.empty()) { + bs.insert (done.top()); + done.pop(); + } + const int num_final_boxes = bs.size(); + assert (num_initial_boxes - num_combined_boxes == num_final_boxes); + assert (invariant()); +} + + + +// Accessors +template<class T, int D> +T bboxset<T,D>::size () const { + T s=0; + for (const_iterator bi=begin(); bi!=end(); ++bi) { + const T bs = (*bi).size(); + assert (numeric_limits<T>::max() - bs >= s); + s += bs; + } + return s; +} + + + +// Add (bboxes that don't overlap) +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator+= (const box& b) { + if (b.empty()) return *this; + // check for overlap + for (const_iterator bi=begin(); bi!=end(); ++bi) { + assert ((*bi & b).empty()); + } + bs.insert(b); + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator+= (const bboxset& s) { + for (const_iterator bi=s.begin(); bi!=s.end(); ++bi) { + *this += *bi; + } + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator+ (const box& b) const { + bboxset r(*this); + r += b; + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator+ (const bboxset& s) const { + bboxset r(*this); + r += s; + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::plus (const bbox<T,D>& b1, const bbox<T,D>& b2) { + return bboxset(b1) + b2; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::plus (const bbox<T,D>& b, const bboxset<T,D>& s) { + return s + b; +} + + + +// Union +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator|= (const box& b) { + *this += b - *this; + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator|= (const bboxset& s) { + *this += s - *this; + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator| (const box& b) const { + bboxset r(*this); + r |= b; + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator| (const bboxset& s) const { + bboxset r(*this); + r |= s; + assert (r.invariant()); + return r; +} + + + +// Intersection +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator& (const box& b) const { + // start with an empty set + bboxset r; + // walk all my elements + for (const_iterator bi=begin(); bi!=end(); ++bi) { + // insert the intersection with the bbox + r += *bi & b; + } + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator& (const bboxset& s) const { + // start with an empty set + bboxset r; + // walk all the bboxes + for (const_iterator bi=s.begin(); bi!=s.end(); ++bi) { + // insert the intersection with this bbox + r += *this & *bi; + } + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator&= (const box& b) { + *this = *this & b; + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator&= (const bboxset& s) { + *this = *this & s; + assert (invariant()); + return *this; +} + + + +// Difference +template<class T, int D> +bboxset<T,D> bboxset<T,D>::minus (const bbox<T,D>& b1, const bbox<T,D>& b2) { + assert (b1.is_aligned_with(b2)); + if (b1.empty()) return bboxset<T,D>(); + if (b2.empty()) return bboxset<T,D>(b1); + const vect<T,D> str = b1.stride(); + bboxset<T,D> r; + for (int d=0; d<D; ++d) { + // make resulting bboxes as large as possible in x-direction (for + // better consumption by Fortranly ordered arrays) + vect<T,D> lb, ub; + bbox<T,D> b; + for (int dd=0; dd<D; ++dd) { + if (dd<d) { + lb[dd] = b2.lower()[dd]; + ub[dd] = b2.upper()[dd]; + } else if (dd>d) { + lb[dd] = b1.lower()[dd]; + ub[dd] = b1.upper()[dd]; + } + } + lb[d] = b1.lower()[d]; + ub[d] = b2.lower()[d] - str[d]; + b = bbox<T,D>(lb,ub,str) & b1; + r += b; + lb[d] = b2.upper()[d] + str[d]; + ub[d] = b1.upper()[d]; + b = bbox<T,D>(lb,ub,str) & b1; + r += b; + } + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator- (const box& b) const { + // start with an empty set + bboxset r; + // walk all my elements + for (const_iterator bi=begin(); bi!=end(); ++bi) { + // insert the difference with the bbox + r += *bi - b; + } + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator-= (const box& b) { + *this = *this - b; + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D>& bboxset<T,D>::operator-= (const bboxset& s) { + for (const_iterator bi=s.begin(); bi!=s.end(); ++bi) { + *this -= *bi; + } + assert (invariant()); + return *this; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::operator- (const bboxset& s) const { + bboxset r(*this); + r -= s; + assert (r.invariant()); + return r; +} + +template<class T, int D> +bboxset<T,D> bboxset<T,D>::minus (const bbox<T,D>& b, const bboxset<T,D>& s) { + bboxset<T,D> r = bboxset<T,D>(b) - s; + assert (r.invariant()); + return r; +} + + + +// Equality +template<class T, int D> +bool bboxset<T,D>::operator<= (const bboxset<T,D>& s) const { + return (*this - s).empty(); +} + +template<class T, int D> +bool bboxset<T,D>::operator< (const bboxset<T,D>& s) const { + return (*this - s).empty() && ! (s - *this).empty(); +} + +template<class T, int D> +bool bboxset<T,D>::operator>= (const bboxset<T,D>& s) const { + return s <= *this; +} + +template<class T, int D> +bool bboxset<T,D>::operator> (const bboxset<T,D>& s) const { + return s < *this; +} + +template<class T, int D> +bool bboxset<T,D>::operator== (const bboxset<T,D>& s) const { + return (*this <= s) && (*this >= s); +} + +template<class T, int D> +bool bboxset<T,D>::operator!= (const bboxset<T,D>& s) const { + return ! (*this == s); +} + + + +// Output +template<class T,int D> +void bboxset<T,D>::output (ostream& os) const { + T Tdummy; + os << "bboxset<" << typestring(Tdummy) << "," << D << ">:" + << "size=" << size() << "," + << "setsize=" << setsize() << "," + << "set=" << bs; +} + + + +template class bboxset<int,3>; diff --git a/Carpet/CarpetLib/src/bboxset.hh b/Carpet/CarpetLib/src/bboxset.hh new file mode 100644 index 000000000..a94c8940a --- /dev/null +++ b/Carpet/CarpetLib/src/bboxset.hh @@ -0,0 +1,156 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/bboxset.hh,v 1.11 2003/09/19 16:06:41 schnetter Exp $ + +#ifndef BBOXSET_HH +#define BBOXSET_HH + +#include <assert.h> + +#include <iostream> +#include <set> + +#include "bbox.hh" +#include "defs.hh" +#include "vect.hh" + +using namespace std; + + + +// Forward declaration +template<class T, int D> class bboxset; + +// template<class T,int D> +// bboxset<T,D> operator+ (const bbox<T,D>& b1, const bbox<T,D>& b2); +// template<class T,int D> +// bboxset<T,D> operator+ (const bbox<T,D>& b, const bboxset<T,D>& s); + +// template<class T,int D> +// bboxset<T,D> operator- (const bbox<T,D>& b1, const bbox<T,D>& b2); +// template<class T,int D> +// bboxset<T,D> operator- (const bbox<T,D>& b, const bboxset<T,D>& s); + +// Output +template<class T,int D> +ostream& operator<< (ostream& os, const bboxset<T,D>& s); + + + +// Bounding box class +template<class T, int D> +class bboxset { + + // Types + typedef bbox<T,D> box; + typedef set<box> bset; + + // Fields + bset bs; + // Invariant: + // All bboxes have the same stride. + // No bbox is empty. + // The bboxes don't overlap. + +public: + + // Constructors + bboxset (); + bboxset (const box& b); + bboxset (const bboxset& s); + bboxset (const bset& bs); + + // Invariant + bool invariant () const; + + // Normalisation + void normalize (); + + // Accessors + bool empty () const { return bs.empty(); } + T size () const; + int setsize () const { return bs.size(); } + + // Add (bboxes that don't overlap) + bboxset& operator+= (const box& b); + bboxset& operator+= (const bboxset& s); + bboxset operator+ (const box& b) const; + bboxset operator+ (const bboxset& s) const; + static bboxset plus (const box& b1, const box& b2); + static bboxset plus (const box& b, const bboxset& s); + + // Union + bboxset& operator|= (const box& b); + bboxset& operator|= (const bboxset& s); + bboxset operator| (const box& b) const; + bboxset operator| (const bboxset& s) const; + + // Intersection + bboxset operator& (const box& b) const; + bboxset operator& (const bboxset& s) const; + bboxset& operator&= (const box& b); + bboxset& operator&= (const bboxset& s); + + // Difference + // friend bboxset operator- <T,D>(const box& b1, const box& b2); + static bboxset minus (const box& b1, const box& b2); + bboxset operator- (const box& b) const; + bboxset& operator-= (const box& b); + bboxset& operator-= (const bboxset& s); + bboxset operator- (const bboxset& s) const; + // friend bboxset operator- <T,D>(const box& b, const bboxset& s); + static bboxset minus (const box& b, const bboxset& s); + + // Equality + bool operator== (const bboxset& s) const; + bool operator!= (const bboxset& s) const; + bool operator< (const bboxset& s) const; + bool operator<= (const bboxset& s) const; + bool operator> (const bboxset& s) const; + bool operator>= (const bboxset& s) const; + + // Iterators + typedef typename bset::const_iterator const_iterator; + typedef typename bset::iterator iterator; + + const_iterator begin () const { return bs.begin(); } + const_iterator end () const { return bs.end(); } +// iterator begin () const { return bs.begin(); } +// iterator end () const { return bs.end(); } + + // Output + void output (ostream& os) const; +}; + + + +template<class T,int D> +inline bboxset<T,D> operator+ (const bbox<T,D>& b1, const bbox<T,D>& b2) { + return bboxset<T,D>::plus(b1,b2); +} + +template<class T,int D> +inline bboxset<T,D> operator+ (const bbox<T,D>& b, const bboxset<T,D>& s) { + return bboxset<T,D>::plus(b,s); +} + +template<class T,int D> +inline bboxset<T,D> operator- (const bbox<T,D>& b1, const bbox<T,D>& b2) { + return bboxset<T,D>::minus(b1,b2); +} + +template<class T,int D> +inline bboxset<T,D> operator- (const bbox<T,D>& b, const bboxset<T,D>& s) { + return bboxset<T,D>::minus(b,s); +} + + + +// Output +template<class T,int D> +inline ostream& operator<< (ostream& os, const bboxset<T,D>& s) { + s.output(os); + return os; +} + + + +#endif // BBOXSET_HH diff --git a/Carpet/CarpetLib/src/checkindex.F77 b/Carpet/CarpetLib/src/checkindex.F77 new file mode 100644 index 000000000..e726a012b --- /dev/null +++ b/Carpet/CarpetLib/src/checkindex.F77 @@ -0,0 +1,23 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/checkindex.F77,v 1.1 2003/11/05 16:18:39 schnetter Exp $ + +#include "cctk.h" + + + + subroutine checkindex (i,j,k, di,dj,dk, imax,jmax,kmax, where) + implicit none + integer i,j,k + integer di,dj,dk + integer imax,jmax,kmax + character*(*) where + character*1000 msg + + if ( i.lt.1 .or. i+di-1.gt.imax + $ .or. j.lt.1 .or. j+dj-1.gt.jmax + $ .or. k.lt.1 .or. k+dk-1.gt.kmax) then + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,"), extent is (",i4,",",i4,",",i4,")")') + $ where, imax,jmax,kmax, i,j,k, di,dj,dk + call CCTK_WARN (0, msg(1:len_trim(msg))) + end if + end diff --git a/Carpet/CarpetLib/src/copy_3d_complex16.F77 b/Carpet/CarpetLib/src/copy_3d_complex16.F77 new file mode 100644 index 000000000..2432e900c --- /dev/null +++ b/Carpet/CarpetLib/src/copy_3d_complex16.F77 @@ -0,0 +1,114 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/copy_3d_complex16.F77,v 1.2 2004/03/11 12:01:34 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine copy_3d_complex16 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + integer srciext, srcjext, srckext + CCTK_COMPLEX16 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_COMPLEX16 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).ne.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / srcbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / srcbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / srcbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over region + do k = 1, regkext + do j = 1, regjext + do i = 1, regiext + + if (check_array_accesses.ne.0) then + call checkindex (srcioff+i, srcjoff+j+1, srckoff+k+1, 1,1,1, + $ "source") + call checkindex (dstioff+i, dstjoff+j+1, dstkoff+k+1, 1,1,1, + $ "destination") + end if + + dst (dstioff+i, dstjoff+j, dstkoff+k) + $ = src (srcioff+i, srcjoff+j, srckoff+k) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/copy_3d_int4.F77 b/Carpet/CarpetLib/src/copy_3d_int4.F77 new file mode 100644 index 000000000..b440a32b2 --- /dev/null +++ b/Carpet/CarpetLib/src/copy_3d_int4.F77 @@ -0,0 +1,114 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/copy_3d_int4.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine copy_3d_int4 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + integer srciext, srcjext, srckext + CCTK_INT4 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_INT4 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).ne.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / srcbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / srcbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / srcbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over region + do k = 1, regkext + do j = 1, regjext + do i = 1, regiext + + if (check_array_accesses.ne.0) then + call checkindex (srcioff+i, srcjoff+j+1, srckoff+k+1, 1,1,1, + $ "source") + call checkindex (dstioff+i, dstjoff+j+1, dstkoff+k+1, 1,1,1, + $ "destination") + end if + + dst (dstioff+i, dstjoff+j, dstkoff+k) + $ = src (srcioff+i, srcjoff+j, srckoff+k) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/copy_3d_real8.F77 b/Carpet/CarpetLib/src/copy_3d_real8.F77 new file mode 100644 index 000000000..716ffd135 --- /dev/null +++ b/Carpet/CarpetLib/src/copy_3d_real8.F77 @@ -0,0 +1,114 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/copy_3d_real8.F77,v 1.8 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine copy_3d_real8 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).ne.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / srcbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / srcbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / srcbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over region + do k = 1, regkext + do j = 1, regjext + do i = 1, regiext + + if (check_array_accesses.ne.0) then + call checkindex (srcioff+i, srcjoff+j+1, srckoff+k+1, 1,1,1, + $ "source") + call checkindex (dstioff+i, dstjoff+j+1, dstkoff+k+1, 1,1,1, + $ "destination") + end if + + dst (dstioff+i, dstjoff+j, dstkoff+k) + $ = src (srcioff+i, srcjoff+j, srckoff+k) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/data.cc b/Carpet/CarpetLib/src/data.cc new file mode 100644 index 000000000..5c9d219e7 --- /dev/null +++ b/Carpet/CarpetLib/src/data.cc @@ -0,0 +1,1388 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/data.cc,v 1.55 2004/05/21 18:13:41 schnetter Exp $ + +#include <assert.h> +#include <limits.h> +#include <stdlib.h> +#include <math.h> + +#include <algorithm> +#include <iostream> +#include <limits> +#include <sstream> +#include <string> +#include <vector> + +#include <mpi.h> + +#include "cctk.h" + +#include "bbox.hh" +#include "defs.hh" +#include "dist.hh" +#include "vect.hh" + +#include "data.hh" + +using namespace std; + + + +static size_t total_allocated_bytes; // total number of allocated bytes + + + +// Constructors +template<class T, int D> +data<T,D>::data (const int varindex_, const operator_type transport_operator_, + const int vectorlength, const int vectorindex, + data* const vectorleader) + : gdata<D>(varindex_, transport_operator_), + _storage(NULL), _allocated_bytes(0), + vectorlength(vectorlength), vectorindex(vectorindex), + vectorleader(vectorleader) +{ + assert (vectorlength>=1); + assert (vectorindex>=0 && vectorindex<vectorlength); + assert ((vectorindex==0 && !vectorleader) + || (vectorindex!=0 && vectorleader)); + if (vectorindex==0) vectorclients.resize (vectorlength); + if (vectorleader) vectorleader->register_client (vectorindex); +} + +template<class T, int D> +data<T,D>::data (const int varindex_, const operator_type transport_operator_, + const int vectorlength, const int vectorindex, + data* const vectorleader, + const ibbox& extent_, const int proc_) + : gdata<D>(varindex_, transport_operator_), + _storage(NULL), _allocated_bytes(0), + vectorlength(vectorlength), vectorindex(vectorindex), + vectorleader(vectorleader) +{ + assert (vectorlength>=1); + assert (vectorindex>=0 && vectorindex<vectorlength); + assert ((vectorindex==0 && !vectorleader) + || (vectorindex!=0 && vectorleader)); + if (vectorindex==0) vectorclients.resize (vectorlength); + if (vectorleader) vectorleader->register_client (vectorindex); + allocate(extent_, proc_); +} + +// Destructors +template<class T, int D> +data<T,D>::~data () +{ + if (vectorleader) vectorleader->unregister_client (vectorindex); + if (vectorindex==0) assert (! has_clients()); + free(); +} + +// Pseudo constructors +template<class T, int D> +data<T,D>* data<T,D>::make_typed (const int varindex_, + const operator_type transport_operator_) + const +{ + return new data(varindex_, transport_operator_); +} + + + +// Vector mamagement +template<class T, int D> +void data<T,D>::register_client (const int index) +{ + assert (! vectorclients.at(index)); + vectorclients.at(index) = true; +} + +template<class T, int D> +void data<T,D>::unregister_client (const int index) +{ + assert (vectorclients.at(index)); + vectorclients.at(index) = false; +} + +template<class T, int D> +bool data<T,D>::has_clients () +{ + bool retval = false; + for (size_t n=0; n<vectorlength; ++n) { + retval |= vectorclients.at(n); + } + return retval; +} + + + +// Storage management +template<class T, int D> +void data<T,D>::getmem (const size_t nelems) +{ + const size_t nbytes = nelems * sizeof(T); + try { + assert (this->_allocated_bytes == 0); + this->_storage = new T[nelems]; + this->_allocated_bytes = nbytes; + } catch (...) { + T Tdummy; + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "Failed to allocate %.0f bytes (%.3f MB) of memory for type %s. %.0f bytes (%.3f MB) are currently allocated.", + (double)nbytes, nbytes/1.0e6, + typestring(Tdummy), + (double)total_allocated_bytes, total_allocated_bytes/1.0e6); + } + total_allocated_bytes += nbytes; +} + + + +template<class T, int D> +void data<T,D>::freemem () +{ + delete [] _storage; + total_allocated_bytes -= this->_allocated_bytes; + this->_allocated_bytes = 0; +} + + + +template<class T, int D> +void data<T,D>::allocate (const ibbox& extent_, + const int proc_, + void* const mem) +{ + assert (!this->_has_storage); + this->_has_storage = true; + // prevent accidental wrap-around + assert (all(extent_.lower() < numeric_limits<int>::max() / 2)); + assert (all(extent_.lower() > numeric_limits<int>::min() / 2)); + assert (all(extent_.upper() < numeric_limits<int>::max() / 2)); + assert (all(extent_.upper() > numeric_limits<int>::min() / 2)); + // data + this->_extent = extent_; + this->_shape = max(ivect(0), this->_extent.shape() / this->_extent.stride()); + this->_size = 1; + for (int d=0; d<D; ++d) { + this->_stride[d] = this->_size; + assert (this->_shape[d]==0 || this->_size <= INT_MAX / this->_shape[d]); + this->_size *= this->_shape[d]; + } + this->_proc = proc_; + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank==this->_proc) { + this->_owns_storage = !mem; + if (this->_owns_storage) { + if (this->vectorindex == 0) { + assert (! this->vectorleader); + getmem (this->vectorlength * this->_size); + } else { + assert (this->vectorleader); + this->_storage = this->vectorleader->vectordata (this->vectorindex); + } + } else { + this->_storage = (T*)mem; + } + } else { + assert (!mem); + } +} + +template<class T, int D> +void data<T,D>::free () +{ + if (this->_storage && this->_owns_storage && this->vectorindex==0) { + freemem (); + } + _storage = 0; + this->_has_storage = false; +} + +template<class T, int D> +void data<T,D>::transfer_from (gdata<D>* gsrc) +{ + assert (this->vectorlength==1); + data* src = (data*)gsrc; + assert (src->vectorlength==1); + assert (!_storage); + *this = *src; + *src = data(this->varindex, this->transport_operator); +} + +template<class T, int D> +T* data<T,D>::vectordata (const int vectorindex) const +{ + assert (this->vectorindex==0); + assert (! this->vectorleader); + assert (vectorindex>=0 && vectorindex<this->vectorlength); + assert (this->_storage && this->_owns_storage); + return this->_storage + vectorindex * this->_size; +} + + + +// Processor management +template<class T, int D> +void data<T,D>::change_processor (comm_state<D>& state, + const int newproc, + void* const mem) +{ + switch (state.thestate) { + case state_recv: + change_processor_recv (newproc, mem); + break; + case state_send: + change_processor_send (newproc, mem); + break; + case state_wait: + change_processor_wait (newproc, mem); + break; + default: + assert(0); + } +} + + + +template<class T, int D> +void data<T,D>::change_processor_recv (const int newproc, void* const mem) +{ + assert (!this->comm_active); + this->comm_active = true; + + if (newproc == this->_proc) { + assert (!mem); + return; + } + + if (this->_has_storage) { + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == newproc) { + // copy from other processor + + assert (!_storage); + this->_owns_storage = !mem; + if (this->_owns_storage) { + getmem (this->_size); + } else { + _storage = (T*)mem; + } + + const double wtime1 = MPI_Wtime(); + T dummy; + MPI_Irecv (_storage, this->_size, dist::datatype(dummy), this->_proc, + this->tag, dist::comm, &this->request); + const double wtime2 = MPI_Wtime(); + this->wtime_irecv += wtime2 - wtime1; + + } else if (rank == this->_proc) { + // copy to other processor + + } else { + assert (!mem); + assert (!_storage); + } + } +} + + + +template<class T, int D> +void data<T,D>::change_processor_send (const int newproc, void* const mem) +{ + assert (this->comm_active); + + if (newproc == this->_proc) { + assert (!mem); + return; + } + + if (this->_has_storage) { + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == newproc) { + // copy from other processor + + } else if (rank == this->_proc) { + // copy to other processor + + assert (!mem); + assert (_storage); + + const double wtime1 = MPI_Wtime(); + T dummy; + MPI_Isend (_storage, this->_size, dist::datatype(dummy), newproc, + this->tag, dist::comm, &this->request); + const double wtime2 = MPI_Wtime(); + this->wtime_isend += wtime2 - wtime1; + + } else { + assert (!mem); + assert (!_storage); + } + } +} + + + +template<class T, int D> +void data<T,D>::change_processor_wait (const int newproc, void* const mem) +{ + assert (this->comm_active); + this->comm_active = false; + + if (newproc == this->_proc) { + assert (!mem); + return; + } + + if (this->_has_storage) { + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == newproc) { + // copy from other processor + + const double wtime1 = MPI_Wtime(); + MPI_Status status; + MPI_Wait (&this->request, &status); + const double wtime2 = MPI_Wtime(); + this->wtime_irecvwait += wtime2 - wtime1; + + } else if (rank == this->_proc) { + // copy to other processor + + assert (!mem); + assert (_storage); + + const double wtime1 = MPI_Wtime(); + MPI_Status status; + MPI_Wait (&this->request, &status); + const double wtime2 = MPI_Wtime(); + this->wtime_isendwait += wtime2 - wtime1; + + if (this->_owns_storage) { + freemem (); + } + _storage = 0; + + } else { + assert (!mem); + assert (!_storage); + } + } + + this->_proc = newproc; +} + + + +// Data manipulators +template<class T, int D> +void data<T,D> +::copy_from_innerloop (const gdata<D>* gsrc, const ibbox& box) +{ + const data* src = (const data*)gsrc; + assert (this->has_storage() && src->has_storage()); + assert (all(box.lower()>=this->extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=this->extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==this->extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-this->extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + assert (this->proc() == src->proc()); + + const int groupindex = CCTK_GroupIndexFromVarI(this->varindex); + const int group_tags_table = CCTK_GroupTagsTableI(groupindex); + assert (group_tags_table >= 0); + + // Disallow this. + T Tdummy; + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "There is no copy operator available for the variable type %s, dimension %d.", + typestring(Tdummy), D); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == this->proc()); + + for (typename ibbox::iterator it=box.begin(); it!=box.end(); ++it) { + const ivect index = *it; + (*this)[index] = (*src)[index]; + } + +} + + + +template<class T, int D> +void data<T,D> +::interpolate_from_innerloop (const vector<const gdata<D>*> gsrcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (this->has_storage()); + assert (all(box.lower()>=this->extent().lower())); + assert (all(box.upper()<=this->extent().upper())); + assert (all(box.stride()==this->extent().stride())); + assert (all((box.lower()-this->extent().lower())%box.stride() == 0)); + vector<const data*> srcs(gsrcs.size()); + for (int t=0; t<(int)srcs.size(); ++t) srcs[t] = (const data*)gsrcs[t]; + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs[t]->has_storage()); + assert (all(box.lower()>=srcs[t]->extent().lower())); + assert (all(box.upper()<=srcs[t]->extent().upper())); + assert (this->proc() == srcs[t]->proc()); + } + assert (order_space >= 0); + assert (order_time >= 0); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == this->proc()); + + assert (this->varindex >= 0); + const int groupindex = CCTK_GroupIndexFromVarI (this->varindex); + assert (groupindex >= 0); + char* groupname = CCTK_GroupName(groupindex); + T Tdummy; + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "There is no interpolator available for the group \"%s\" with variable type %s, dimension %d, spatial interpolation order %d, temporal interpolation order %d.", + groupname, typestring(Tdummy), D, order_space, order_time); + ::free (groupname); +} + + + +extern "C" { + void CCTK_FCALL CCTK_FNAME(copy_3d_int4) + (const CCTK_INT4* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_INT4* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(copy_3d_real8) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(copy_3d_complex16) + (const CCTK_COMPLEX16* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_COMPLEX16* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); +} + +template<> +void data<CCTK_INT4,3> +::copy_from_innerloop (const gdata<3>* gsrc, const ibbox& box) +{ + const data* src = (const data*)gsrc; + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + assert (proc() == src->proc()); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == proc()); + + const ibbox& sext = src->extent(); + const ibbox& dext = extent(); + + int srcshp[3], dstshp[3]; + int srcbbox[3][3], dstbbox[3][3], regbbox[3][3]; + + for (int d=0; d<3; ++d) { + srcshp[d] = (sext.shape() / sext.stride())[d]; + dstshp[d] = (dext.shape() / dext.stride())[d]; + + srcbbox[0][d] = sext.lower()[d]; + srcbbox[1][d] = sext.upper()[d]; + srcbbox[2][d] = sext.stride()[d]; + + dstbbox[0][d] = dext.lower()[d]; + dstbbox[1][d] = dext.upper()[d]; + dstbbox[2][d] = dext.stride()[d]; + + regbbox[0][d] = box.lower()[d]; + regbbox[1][d] = box.upper()[d]; + regbbox[2][d] = box.stride()[d]; + } + + assert (all(dext.stride() == box.stride())); + if (all(sext.stride() == dext.stride())) { + CCTK_FNAME(copy_3d_int4) ((const CCTK_INT4*)src->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_INT4*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, + dstbbox, + regbbox); + + } else { + assert (0); + } +} + +template<> +void data<CCTK_REAL8,3> +::copy_from_innerloop (const gdata<3>* gsrc, const ibbox& box) +{ + const data* src = (const data*)gsrc; + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + assert (proc() == src->proc()); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == proc()); + + const ibbox& sext = src->extent(); + const ibbox& dext = extent(); + + int srcshp[3], dstshp[3]; + int srcbbox[3][3], dstbbox[3][3], regbbox[3][3]; + + for (int d=0; d<3; ++d) { + srcshp[d] = (sext.shape() / sext.stride())[d]; + dstshp[d] = (dext.shape() / dext.stride())[d]; + + srcbbox[0][d] = sext.lower()[d]; + srcbbox[1][d] = sext.upper()[d]; + srcbbox[2][d] = sext.stride()[d]; + + dstbbox[0][d] = dext.lower()[d]; + dstbbox[1][d] = dext.upper()[d]; + dstbbox[2][d] = dext.stride()[d]; + + regbbox[0][d] = box.lower()[d]; + regbbox[1][d] = box.upper()[d]; + regbbox[2][d] = box.stride()[d]; + } + + assert (all(dext.stride() == box.stride())); + if (all(sext.stride() == dext.stride())) { + CCTK_FNAME(copy_3d_real8) ((const CCTK_REAL8*)src->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, + dstbbox, + regbbox); + + } else { + assert (0); + } +} + +template<> +void data<CCTK_COMPLEX16,3> +::copy_from_innerloop (const gdata<3>* gsrc, const ibbox& box) +{ + const data* src = (const data*)gsrc; + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + assert (proc() == src->proc()); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == proc()); + + const ibbox& sext = src->extent(); + const ibbox& dext = extent(); + + int srcshp[3], dstshp[3]; + int srcbbox[3][3], dstbbox[3][3], regbbox[3][3]; + + for (int d=0; d<3; ++d) { + srcshp[d] = (sext.shape() / sext.stride())[d]; + dstshp[d] = (dext.shape() / dext.stride())[d]; + + srcbbox[0][d] = sext.lower()[d]; + srcbbox[1][d] = sext.upper()[d]; + srcbbox[2][d] = sext.stride()[d]; + + dstbbox[0][d] = dext.lower()[d]; + dstbbox[1][d] = dext.upper()[d]; + dstbbox[2][d] = dext.stride()[d]; + + regbbox[0][d] = box.lower()[d]; + regbbox[1][d] = box.upper()[d]; + regbbox[2][d] = box.stride()[d]; + } + + assert (all(dext.stride() == box.stride())); + if (all(sext.stride() == dext.stride())) { + CCTK_FNAME(copy_3d_complex16) ((const CCTK_COMPLEX16*)src->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_COMPLEX16*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, + dstbbox, + regbbox); + + } else { + assert (0); + } +} + + + +extern "C" { + + void CCTK_FCALL CCTK_FNAME(restrict_3d_real8) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(restrict_3d_real8_rf2) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + + + + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_rf2) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_o3) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_o3_rf2) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_minmod) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_eno) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_o5) + (const CCTK_REAL8* src, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_rf2) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_o3) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_o3_rf2) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_minmod) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_eno) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_2tl_o5) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_rf2) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_o3) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_o3_rf2) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_minmod) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_eno) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); + void CCTK_FCALL CCTK_FNAME(prolongate_3d_real8_3tl_o5) + (const CCTK_REAL8* src1, const CCTK_REAL8& t1, + const CCTK_REAL8* src2, const CCTK_REAL8& t2, + const CCTK_REAL8* src3, const CCTK_REAL8& t3, + const int& srciext, const int& srcjext, const int& srckext, + CCTK_REAL8* dst, const CCTK_REAL8& t, + const int& dstiext, const int& dstjext, const int& dstkext, + const int srcbbox[3][3], + const int dstbbox[3][3], + const int regbbox[3][3]); +} + +template<> +void data<CCTK_REAL8,3> +::interpolate_from_innerloop (const vector<const gdata<3>*> gsrcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + const CCTK_REAL eps = 1.0e-10; + + assert (has_storage()); + assert (all(box.lower()>=extent().lower())); + assert (all(box.upper()<=extent().upper())); + assert (all(box.stride()==extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0)); + vector<const data*> srcs(gsrcs.size()); + for (int t=0; t<(int)srcs.size(); ++t) srcs[t] = (const data*)gsrcs[t]; + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs[t]->has_storage()); + assert (all(box.lower()>=srcs[t]->extent().lower())); + assert (all(box.upper()<=srcs[t]->extent().upper())); + } + + assert (proc() == srcs[0]->proc()); + + int rank; + MPI_Comm_rank (dist::comm, &rank); + assert (rank == proc()); + + const ibbox& sext = srcs[0]->extent(); + const ibbox& dext = extent(); + + int srcshp[3], dstshp[3]; + int srcbbox[3][3], dstbbox[3][3], regbbox[3][3]; + + for (int d=0; d<3; ++d) { + srcshp[d] = (sext.shape() / sext.stride())[d]; + dstshp[d] = (dext.shape() / dext.stride())[d]; + + srcbbox[0][d] = sext.lower()[d]; + srcbbox[1][d] = sext.upper()[d]; + srcbbox[2][d] = sext.stride()[d]; + + dstbbox[0][d] = dext.lower()[d]; + dstbbox[1][d] = dext.upper()[d]; + dstbbox[2][d] = dext.stride()[d]; + + regbbox[0][d] = box.lower()[d]; + regbbox[1][d] = box.upper()[d]; + regbbox[2][d] = box.stride()[d]; + } + + // Check that the times are consistent + assert (times.size() > 0); + CCTK_REAL min_time = times[0]; + CCTK_REAL max_time = times[0]; + for (size_t tl=1; tl<times.size(); ++tl) { + // Catch broken compilers that only know min(int) and max(int) + assert (min(1.3, 1.4) > 1.2); + min_time = min(min_time, times[tl]); + max_time = max(max_time, times[tl]); + } + if (time < min_time - eps || time > max_time + eps) { + ostringstream buf; + buf << "Internal error: extrapolation in time." + << " time=" << time + << " times=" << times; + CCTK_WARN (0, buf.str().c_str()); + } + + // Is it necessary to interpolate in time? + if (times.size() > 1) { + for (size_t tl=0; tl<times.size(); ++tl) { + // Catch broken compilers that only know abs(int) + assert (abs(1.5) > 1.4); + if (abs(times[tl] - time) < eps) { + // It is not. + vector<const gdata<3>*> my_gsrcs(1); + vector<CCTK_REAL> my_times(1); + my_gsrcs[0] = gsrcs[tl]; + my_times[0] = times[tl]; + const int my_order_time = 0; + this->interpolate_from_innerloop + (my_gsrcs, my_times, box, time, order_space, my_order_time); + return; + } + } + } + + assert (all(dext.stride() == box.stride())); + if (all(sext.stride() < dext.stride())) { + // Restrict + + assert (times.size() == 1); + assert (abs(times[0] - time) < eps); + + switch (transport_operator) { + + case op_Lagrange: + case op_TVD: + case op_ENO: + assert (srcs.size() == 1); + if (all (dext.stride() == sext.stride() * 2)) { + CCTK_FNAME(restrict_3d_real8_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(restrict_3d_real8) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + + default: + assert (0); + + } // switch (transport_operator) + + } else if (all(sext.stride() > dext.stride())) { + // Prolongate + + switch (transport_operator) { + + case op_Lagrange: + switch (order_time) { + + case 0: + assert (times.size() == 1); + assert (abs(times[0] - time) < eps); + assert (srcs.size()>=1); + switch (order_space) { + case 0: + case 1: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 2: + case 3: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_o3_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8_o3) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 4: + case 5: + CCTK_FNAME(prolongate_3d_real8_o5) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + + case 1: + assert (srcs.size()>=2); + switch (order_space) { + case 0: + case 1: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_2tl_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8_2tl) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 2: + case 3: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_2tl_o3_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8_2tl_o3) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 4: + case 5: + CCTK_FNAME(prolongate_3d_real8_2tl_o5) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + + case 2: + assert (srcs.size()>=3); + switch (order_space) { + case 0: + case 1: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_3tl_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8_3tl) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 2: + case 3: + if (all (sext.stride() == dext.stride() * 2)) { + CCTK_FNAME(prolongate_3d_real8_3tl_o3_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } else { + CCTK_FNAME(prolongate_3d_real8_3tl_o3) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + } + break; + case 4: + case 5: + CCTK_FNAME(prolongate_3d_real8_3tl_o5) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + + default: + assert (0); + } // switch (order_time) + break; + + case op_TVD: + switch (order_time) { + case 0: + assert (times.size() == 1); + assert (abs(times[0] - time) < eps); + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"TVD\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); +// CCTK_FNAME(prolongate_3d_real8_minmod) +// ((const CCTK_REAL8*)srcs[0]->storage(), +// srcshp[0], srcshp[1], srcshp[2], +// (CCTK_REAL8*)storage(), +// dstshp[0], dstshp[1], dstshp[2], +// srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + case 1: + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"TVD\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_2tl_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); +// CCTK_FNAME(prolongate_3d_real8_2tl_minmod) +// ((const CCTK_REAL8*)srcs[0]->storage(), times[0], +// (const CCTK_REAL8*)srcs[1]->storage(), times[1], +// srcshp[0], srcshp[1], srcshp[2], +// (CCTK_REAL8*)storage(), time, +// dstshp[0], dstshp[1], dstshp[2], +// srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + case 2: + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"TVD\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_3tl_rf2) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); +// CCTK_FNAME(prolongate_3d_real8_3tl_minmod) +// ((const CCTK_REAL8*)srcs[0]->storage(), times[0], +// (const CCTK_REAL8*)srcs[1]->storage(), times[1], +// (const CCTK_REAL8*)srcs[2]->storage(), times[2], +// srcshp[0], srcshp[1], srcshp[2], +// (CCTK_REAL8*)storage(), time, +// dstshp[0], dstshp[1], dstshp[2], +// srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + default: + assert (0); + } // switch (order_time) + break; + + case op_ENO: + switch (order_time) { + case 0: + assert (times.size() == 1); + assert (abs(times[0] - time) < eps); + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"ENO\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_eno) + ((const CCTK_REAL8*)srcs[0]->storage(), + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + case 1: + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"ENO\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_2tl_eno) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + case 2: + switch (order_space) { + case 0: + case 1: + CCTK_WARN (0, "There is no stencil for op=\"ENO\" with order_space=1"); + break; + case 2: + case 3: + CCTK_FNAME(prolongate_3d_real8_3tl_eno) + ((const CCTK_REAL8*)srcs[0]->storage(), times[0], + (const CCTK_REAL8*)srcs[1]->storage(), times[1], + (const CCTK_REAL8*)srcs[2]->storage(), times[2], + srcshp[0], srcshp[1], srcshp[2], + (CCTK_REAL8*)storage(), time, + dstshp[0], dstshp[1], dstshp[2], + srcbbox, dstbbox, regbbox); + break; + default: + assert (0); + } + break; + default: + assert (0); + } // switch (order_time) + break; + + default: + assert(0); + } // switch (transport_operator) + + } else { + assert (0); + } +} + + + + + +// Output +template<class T,int D> +ostream& data<T,D>::output (ostream& os) const +{ + T Tdummy; + os << "data<" << typestring(Tdummy) << "," << D << ">:" + << "extent=" << this->extent() << "," + << "stride=" << this->stride() << ",size=" << this->size(); + return os; +} + + + +#define INSTANTIATE(T) \ +template class data<T,3>; + +#include "instantiate" + +#undef INSTANTIATE diff --git a/Carpet/CarpetLib/src/data.hh b/Carpet/CarpetLib/src/data.hh new file mode 100644 index 000000000..ba44556ff --- /dev/null +++ b/Carpet/CarpetLib/src/data.hh @@ -0,0 +1,130 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/data.hh,v 1.23 2004/06/08 22:57:22 schnetter Exp $ + +#ifndef DATA_HH +#define DATA_HH + +#include <cassert> +#include <iostream> +#include <string> +#include <vector> + +#include "cctk.h" + +#include "defs.hh" +#include "dist.hh" +#include "bbox.hh" +#include "gdata.hh" +#include "vect.hh" + +using namespace std; + + + +// A distributed multi-dimensional array +template<class T,int D> +class data: public gdata<D> +{ + + // Types + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + + // Fields + T* _storage; // the data (if located on this processor) + size_t _allocated_bytes; // number of allocated bytes + + // For vector groups with contiguous storage + int vectorlength; // number of vector elements + int vectorindex; // index of this vector element + data* vectorleader; // if index!=0: first vector element + vector<bool> vectorclients; // if index==0: registered elements + + void register_client (int index); + void unregister_client (int index); + bool has_clients (); + +public: + + // Constructors + data (const int varindex = -1, + const operator_type transport_operator = op_error, + const int vectorlength = 1, const int vectorindex = 0, + data* const vectorleader = NULL); + data (const int varindex, const operator_type transport_operator, + const int vectorlength, const int vectorindex, + data* const vectorleader, + const ibbox& extent, const int proc); + + // Destructors + virtual ~data (); + + // Pseudo constructors + virtual data* make_typed (const int varindex, + const operator_type transport_operator) const; + + // Storage management +private: + void getmem (const size_t nelems); + void freemem (); +public: + virtual void allocate (const ibbox& extent, const int proc, + void* const mem=0); + virtual void free (); + virtual void transfer_from (gdata<D>* gsrc); + +private: + T* vectordata (const int vectorindex) const; +public: + + // Processor management + virtual void change_processor (comm_state<D>& state, + const int newproc, void* const mem=0); +private: + virtual void change_processor_recv (const int newproc, void* const mem=0); + virtual void change_processor_send (const int newproc, void* const mem=0); + virtual void change_processor_wait (const int newproc, void* const mem=0); +public: + + // Accessors + virtual const void* storage () const + { + assert (this->_has_storage); + return _storage; + } + + virtual void* storage () { + assert (this->_has_storage); + return _storage; + } + + // Data accessors + const T& operator[] (const ivect& index) const + { + assert (_storage); + return _storage[offset(index)]; + } + + T& operator[] (const ivect& index) + { + assert (_storage); + return _storage[offset(index)]; + } + + // Data manipulators + void copy_from_innerloop (const gdata<D>* gsrc, + const ibbox& box); + void interpolate_from_innerloop (const vector<const gdata<D>*> gsrcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + +public: + + // Output + ostream& output (ostream& os) const; +}; + + + +#endif // DATA_HH diff --git a/Carpet/CarpetLib/src/defs.cc b/Carpet/CarpetLib/src/defs.cc new file mode 100644 index 000000000..69cd22fca --- /dev/null +++ b/Carpet/CarpetLib/src/defs.cc @@ -0,0 +1,176 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/defs.cc,v 1.19 2004/05/21 18:13:41 schnetter Exp $ + +#include <assert.h> +#include <ctype.h> + +#include <iostream> +#include <list> +#include <set> +#include <stack> +#include <vector> + +#include "cctk.h" + +#include "defs.hh" + +using namespace std; + + + +template<class T> +T ipow (T x, int y) { + if (y<0) { + y = -y; + x = T(1)/x; + } + T res = T(1); + for (;;) { + if (y%2) res *= x; + y /= 2; + if (y==0) break; + x *= x; + } + return res; +} + + + +void skipws (istream& is) { + while (is.good() && isspace(is.peek())) { + is.get(); + } +} + + + +void expect (istream& is, const char c) { + if (is.peek() == c) return; + cout << "While reading characters from a stream:" << endl + << " Character '" << c << "' expected, but not found." << endl + << " The next up to 100 available characters are \""; + for (int i=0; i<100; ++i) { + const int uc = is.get(); + if (uc<0) break; + cout << (unsigned char)uc; + } + cout << "\"." << endl; + throw input_error(); +} + + + +void consume (istream& is, const char c) { + expect (is, c); + is.get(); +} + + + +// Vector input +template<class T> +istream& input (istream& is, vector<T>& v) { + v.clear(); + try { + skipws (is); + consume (is, '['); + skipws (is); + while (is.good() && is.peek() != ']') { + T elem; + is >> elem; + v.push_back (elem); + skipws (is); + if (is.peek() != ',') break; + is.get(); + skipws (is); + } + skipws (is); + consume (is, ']'); + } catch (input_error &err) { + cout << "Input error while reading a vector<>" << endl + << " The following elements have been read so far: " << v << endl; + throw err; + } + return is; +} + + + +// List output +template<class T> +ostream& output (ostream& os, const list<T>& l) { + os << "["; + for (typename list<T>::const_iterator ti=l.begin(); ti!=l.end(); ++ti) { + if (ti!=l.begin()) os << ","; + os << *ti; + } + os << "]"; + return os; +} + +// Set output +template<class T> +ostream& output (ostream& os, const set<T>& s) { + os << "{"; + for (typename set<T>::const_iterator ti=s.begin(); ti!=s.end(); ++ti) { + if (ti!=s.begin()) os << ","; + os << *ti; + } + os << "}"; + return os; +} + +// Stack output +template<class T> +ostream& output (ostream& os, const stack<T>& s) { + stack<T> s2 (s); + list<T> l; + while (! s2.empty()) { + l.insert (l.begin(), s2.top()); + s2.pop(); + } + return output (os, l); +} + +// Vector output +template<class T> +ostream& output (ostream& os, const vector<T>& v) { + os << "["; + int cnt=0; + for (typename vector<T>::const_iterator ti=v.begin(); ti!=v.end(); ++ti) { + if (ti!=v.begin()) os << ","; + os << cnt++ << ":" << *ti; + } + os << "]"; + return os; +} + + + +#include "bbox.hh" +#include "bboxset.hh" + +template int ipow (int x, int y); + +template istream& input (istream& os, vector<bbox<int,3> >& v); +template istream& input (istream& os, vector<bbox<CCTK_REAL,3> >& v); +template istream& input (istream& os, vector<vector<bbox<int,3> > >& v); +template istream& input (istream& os, vector<vector<bbox<CCTK_REAL,3> > >& v); +template istream& input (istream& os, vector<vect<vect<bool,2>,3> >& v); +template istream& input (istream& os, vector<vector<vect<vect<bool,2>,3> > >& v); + +template ostream& output (ostream& os, const list<bbox<int,3> >& l); +template ostream& output (ostream& os, const set<bbox<int,3> >& s); +template ostream& output (ostream& os, const set<bboxset<int,3> >& s); +template ostream& output (ostream& os, const stack<bbox<int,3> >& s); +template ostream& output (ostream& os, const vector<int>& v); +template ostream& output (ostream& os, const vector<CCTK_REAL>& v); +template ostream& output (ostream& os, const vector<bbox<int,3> >& v); +template ostream& output (ostream& os, const vector<bbox<CCTK_REAL,3> >& v); +template ostream& output (ostream& os, const vector<list<bbox<int,3> > >& v); +template ostream& output (ostream& os, const vector<vector<int> >& v); +template ostream& output (ostream& os, const vector<vector<CCTK_REAL> >& v); +template ostream& output (ostream& os, const vector<vector<bbox<int,3> > >& v); +template ostream& output (ostream& os, const vector<vector<bbox<CCTK_REAL,3> > >& v); +template ostream& output (ostream& os, const vector<vector<vect<vect<bool,2>,3> > >& v); +template ostream& output (ostream& os, const vector<vect<vect<bool,2>,3> >& v); +template ostream& output (ostream& os, const vector<vector<vector<bbox<int,3> > > >& v); diff --git a/Carpet/CarpetLib/src/defs.hh b/Carpet/CarpetLib/src/defs.hh new file mode 100644 index 000000000..4297ba8c6 --- /dev/null +++ b/Carpet/CarpetLib/src/defs.hh @@ -0,0 +1,194 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/defs.hh,v 1.13 2004/03/01 19:43:08 schnetter Exp $ + +#ifndef DEFS_HH +#define DEFS_HH + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <assert.h> + +#include <algorithm> +#include <complex> +#include <iostream> +#include <list> +#include <set> +#include <stack> +#include <vector> + +#include "cctk.h" + +using namespace std; + +// A general type +enum centering { vertex_centered, cell_centered }; + +// Useful helper +template<class T> +inline T square (const T& x) { return x*x; } + +// Another useful helper +template<class T> +T ipow (T x, int y); + + + +// Input streams +struct input_error { }; +void skipws (istream& is); +void expect (istream& is, const char c); +void consume (istream& is, const char c); + + + +// Names for types + +#if 0 + +inline const char * typestring (const char& dummy) +{ return "char"; } + +inline const char * typestring (const signed char& dummy) +{ return "signed char"; } + +inline const char * typestring (const unsigned char& dummy) +{ return "unsigned char"; } + +inline const char * typestring (const short& dummy) +{ return "short"; } + +inline const char * typestring (const unsigned short& dummy) +{ return "unsigned short"; } + +inline const char * typestring (const int& dummy) +{ return "int"; } + +inline const char * typestring (const unsigned int& dummy) +{ return "unsigned int"; } + +inline const char * typestring (const long& dummy) +{ return "long"; } + +inline const char * typestring (const unsigned long& dummy) +{ return "unsigned long"; } + +inline const char * typestring (const long long& dummy) +{ return "long long"; } + +inline const char * typestring (const unsigned long long& dummy) +{ return "unsigned long long"; } + +inline const char * typestring (const float& dummy) +{ return "float"; } + +inline const char * typestring (const double& dummy) +{ return "double"; } + +inline const char * typestring (const long double& dummy) +{ return "long double"; } + +inline const char * typestring (const complex<float>& dummy) +{ return "complex<float>"; } + +inline const char * typestring (const complex<double>& dummy) +{ return "complex<double>"; } + +inline const char * typestring (const complex<long double>& dummy) +{ return "complex<long double>"; } + +#else + +# ifdef CCTK_INT1 +inline const char * typestring (const CCTK_INT1& dummy) +{ return "CCTK_INT1"; } +# endif + +# ifdef CCTK_INT2 +inline const char * typestring (const CCTK_INT2& dummy) +{ return "CCTK_INT2"; } +# endif + +# ifdef CCTK_INT4 +inline const char * typestring (const CCTK_INT4& dummy) +{ return "CCTK_INT4"; } +# endif + +# ifdef CCTK_INT8 +inline const char * typestring (const CCTK_INT8& dummy) +{ return "CCTK_INT8"; } +# endif + +# ifdef CCTK_REAL4 +inline const char * typestring (const CCTK_REAL4& dummy) +{ return "CCTK_REAL4"; } +# endif + +# ifdef CCTK_REAL8 +inline const char * typestring (const CCTK_REAL8& dummy) +{ return "CCTK_REAL8"; } +# endif + +# ifdef CCTK_REAL16 +inline const char * typestring (const CCTK_REAL16& dummy) +{ return "CCTK_REAL16"; } +# endif + +# ifdef CCTK_REAL4 +inline const char * typestring (const CCTK_COMPLEX8& dummy) +{ return "CCTK_COMPLEX8"; } +# endif + +# ifdef CCTK_REAL8 +inline const char * typestring (const CCTK_COMPLEX16& dummy) +{ return "CCTK_COMPLEX16"; } +# endif + +# ifdef CCTK_REAL16 +inline const char * typestring (const CCTK_COMPLEX32& dummy) +{ return "CCTK_COMPLEX32"; } +# endif + +#endif + + + +// Container input +template<class T> istream& input (istream& is, vector<T>& v); + +template<class T> +inline istream& operator>> (istream& is, vector<T>& v) { + return input(is,v); +} + + + +// Container output +template<class T> ostream& output (ostream& os, const list<T>& l); +template<class T> ostream& output (ostream& os, const set<T>& s); +template<class T> ostream& output (ostream& os, const stack<T>& s); +template<class T> ostream& output (ostream& os, const vector<T>& v); + +template<class T> +inline ostream& operator<< (ostream& os, const list<T>& l) { + return output(os,l); +} + +template<class T> +inline ostream& operator<< (ostream& os, const set<T>& s) { + return output(os,s); +} + +template<class T> +inline ostream& operator<< (ostream& os, const stack<T>& s) { + return output(os,s); +} + +template<class T> +inline ostream& operator<< (ostream& os, const vector<T>& v) { + return output(os,v); +} + + + +#endif // DEFS_HH diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc new file mode 100644 index 000000000..e7e8778ff --- /dev/null +++ b/Carpet/CarpetLib/src/dh.cc @@ -0,0 +1,689 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.cc,v 1.57 2004/09/17 16:37:26 schnetter Exp $ + +#include <assert.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "defs.hh" +#include "dist.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "dh.hh" + +using namespace std; + + + +// Constructors +template<int D> +dh<D>::dh (gh<D>& h, + const ivect& lghosts, const ivect& ughosts, + const int prolongation_order_space, const int buffer_width) + : h(h), + lghosts(lghosts), ughosts(ughosts), + prolongation_order_space(prolongation_order_space), + buffer_width(buffer_width) +{ + assert (all(lghosts>=0 && ughosts>=0)); + assert (prolongation_order_space>=0); + assert (buffer_width>=0); + h.add(this); + CHECKPOINT; + recompose (false); +} + +// Destructors +template<int D> +dh<D>::~dh () +{ + CHECKPOINT; + h.remove(this); +} + +// Helpers +template<int D> +int dh<D>::prolongation_stencil_size () const { + assert (prolongation_order_space>=0); + return prolongation_order_space/2; +} + +// Modifiers +template<int D> +void dh<D>::recompose (const bool do_prolongate) { + DECLARE_CCTK_PARAMETERS; + + CHECKPOINT; + + boxes.clear(); + + boxes.resize(h.reflevels()); + for (int rl=0; rl<h.reflevels(); ++rl) { + boxes.at(rl).resize(h.components(rl)); + for (int c=0; c<h.components(rl); ++c) { + boxes.at(rl).at(c).resize(h.mglevels(rl,c)); + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibbox intr = h.extents.at(rl).at(c).at(ml); + + // Interior + // (the interior of the grid has the extent as specified by + // the user) + boxes.at(rl).at(c).at(ml).interior = intr; + + // Exterior (add ghost zones) + // (the content of the exterior is completely determined by + // the interior of this or other components; the content of + // the exterior is redundant) + ivect ldist(lghosts), udist(ughosts); + for (int d=0; d<D; ++d) { + if (h.outer_boundaries.at(rl).at(c)[d][0]) ldist[d] = 0; + if (h.outer_boundaries.at(rl).at(c)[d][1]) udist[d] = 0; + } + boxes.at(rl).at(c).at(ml).exterior = intr.expand(ldist, udist); + + // Boundaries (ghost zones only) + // (interior + boundaries = exterior) + boxes.at(rl).at(c).at(ml).boundaries + = boxes.at(rl).at(c).at(ml).exterior - intr; + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + + // Sync boxes + const int cs = h.components(rl); + boxes.at(rl).at(c).at(ml).send_sync.resize(cs); + boxes.at(rl).at(c).at(ml).recv_sync.resize(cs); + + // Refinement boxes + if (rl>0) { + const int csm1 = h.components(rl-1); + boxes.at(rl).at(c).at(ml).send_ref_coarse.resize(csm1); + boxes.at(rl).at(c).at(ml).recv_ref_coarse.resize(csm1); + boxes.at(rl).at(c).at(ml).recv_ref_bnd_coarse.resize(csm1); + } + if (rl<h.reflevels()-1) { + const int csp1 = h.components(rl+1); + boxes.at(rl).at(c).at(ml).recv_ref_fine.resize(csp1); + boxes.at(rl).at(c).at(ml).send_ref_fine.resize(csp1); + boxes.at(rl).at(c).at(ml).send_ref_bnd_fine.resize(csp1); + } + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibset& bnds = boxes.at(rl).at(c).at(ml).boundaries; + + // Sync boxes + for (int cc=0; cc<h.components(rl); ++cc) { + assert (ml<h.mglevels(rl,cc)); + // intersect boundaries with interior of that component + ibset ovlp = bnds & boxes.at(rl).at(cc).at(ml).interior; + ovlp.normalize(); + for (typename ibset::const_iterator b=ovlp.begin(); + b!=ovlp.end(); ++b) { + boxes.at(rl).at(c ).at(ml).recv_sync.at(cc).push_back(*b); + boxes.at(rl).at(cc).at(ml).send_sync.at(c ).push_back(*b); + } + } // for cc + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibbox& intr = boxes.at(rl).at(c).at(ml).interior; + const ibbox& extr = boxes.at(rl).at(c).at(ml).exterior; + + // Multigrid boxes + if (ml>0) { + const ibbox intrf = boxes.at(rl).at(c).at(ml-1).interior; + const ibbox extrf = boxes.at(rl).at(c).at(ml-1).exterior; + // Restriction (interior) + { + // (the restriction must fill all of the interior of the + // coarse grid, and may use the exterior of the fine grid) + const ibbox recv = intr; + assert (intr.empty() || ! recv.empty()); + const ibbox send = recv.expanded_for(extrf); + assert (intr.empty() || ! send.empty()); + // TODO: put the check back in, taking outer boundaries + // into account +#if 0 + assert (send.is_contained_in(extrf)); +#endif + boxes.at(rl).at(c).at(ml-1).send_mg_coarse.push_back(send); + boxes.at(rl).at(c).at(ml ).recv_mg_fine .push_back(recv); + } + // Prolongation (interior) + { + // (the prolongation may use the exterior of the coarse + // grid, and may fill only the interior of the fine grid, + // and the bbox must be as large as possible) + const ibbox recv = extr.contracted_for(intrf) & intrf; + assert (intr.empty() || ! recv.empty()); + const ibbox send = recv.expanded_for(extr); + assert (intr.empty() || ! send.empty()); + boxes.at(rl).at(c).at(ml-1).recv_mg_coarse.push_back(recv); + boxes.at(rl).at(c).at(ml ).send_mg_fine .push_back(send); + } + } // if not finest multigrid level + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibbox& intr = boxes.at(rl).at(c).at(ml).interior; + const ibbox& extr = boxes.at(rl).at(c).at(ml).exterior; + + // Refinement boxes + if (rl<h.reflevels()-1) { + for (int cc=0; cc<h.components(rl+1); ++cc) { + const ibbox intrf = boxes.at(rl+1).at(cc).at(ml).interior; + // Prolongation (interior) + // TODO: prefer boxes from the same processor + { + // (the prolongation may use the exterior of the coarse + // grid, and must fill all of the interior of the fine + // grid) + const int pss = prolongation_stencil_size(); + ibset recvs + = extr.expand(-pss,-pss).contracted_for(intrf) & intrf; + const iblistvect& rrc + = boxes.at(rl+1).at(cc).at(ml).recv_ref_coarse; + for (typename iblistvect::const_iterator lvi=rrc.begin(); + lvi!=rrc.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + recvs -= *li; + } + } + recvs.normalize(); + assert (recvs.setsize() <= 1); + if (recvs.setsize() == 1) { + const ibbox recv = *recvs.begin(); + const ibbox send = recv.expanded_for(extr); + assert (! send.empty()); + assert (send.is_contained_in(extr)); + boxes.at(rl+1).at(cc).at(ml).recv_ref_coarse.at(c ) + .push_back(recv); + boxes.at(rl ).at(c ).at(ml).send_ref_fine .at(cc) + .push_back(send); + } + } + + } // for cc + } // if not finest refinement level + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibbox& intr = boxes.at(rl).at(c).at(ml).interior; + const ibbox& extr = boxes.at(rl).at(c).at(ml).exterior; + + // Refinement boxes + if (rl<h.reflevels()-1) { + for (int cc=0; cc<h.components(rl+1); ++cc) { + const ibbox intrf = boxes.at(rl+1).at(cc).at(ml).interior; + const ibbox& extrf = boxes.at(rl+1).at(cc).at(ml).exterior; + const ibset& bndsf = boxes.at(rl+1).at(cc).at(ml).boundaries; + // Prolongation (boundaries) + // TODO: prefer boxes from the same processor + { + // (the prolongation may use the exterior of the coarse + // grid, and must fill all of the boundary of the fine + // grid) + const int pss = prolongation_stencil_size(); + // Prolongation boundaries + ibset pbndsf = bndsf; + { + // Do not count what is synced + const iblistvect& rs + = boxes.at(rl+1).at(cc).at(ml).recv_sync; + for (typename iblistvect::const_iterator lvi=rs.begin(); + lvi!=rs.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + pbndsf -= *li; + } + } + pbndsf.normalize(); + } + // Buffer zones + ibset buffers; + { + for (typename ibset::const_iterator pbi=pbndsf.begin(); + pbi!=pbndsf.end(); ++pbi) { + buffers |= (*pbi).expand(buffer_width, buffer_width) & extrf; + } + buffers.normalize(); + } + // Add boundaries + const ibbox maxrecvs + = extr.expand(-pss,-pss).contracted_for(extrf); + ibset recvs = buffers & maxrecvs; + recvs.normalize(); + { + // Do not prolongate what is already prolongated + const iblistvect& rrbc + = boxes.at(rl+1).at(cc).at(ml).recv_ref_bnd_coarse; + for (typename iblistvect::const_iterator lvi=rrbc.begin(); + lvi!=rrbc.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + recvs -= *li; + } + } + recvs.normalize(); + } + { + for (typename ibset::const_iterator ri = recvs.begin(); + ri != recvs.end(); ++ri) { + const ibbox & recv = *ri; + const ibbox send = recv.expanded_for(extr); + assert (! send.empty()); + assert (send.is_contained_in(extr)); + assert (send.is_contained_in(extr.expand(-pss,-pss))); + boxes.at(rl+1).at(cc).at(ml).recv_ref_bnd_coarse.at(c ) + .push_back(recv); + boxes.at(rl ).at(c ).at(ml).send_ref_bnd_fine .at(cc) + .push_back(send); + } + } + } + + } // for cc + } // if not finest refinement level + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + const ibbox& intr = boxes.at(rl).at(c).at(ml).interior; + const ibbox& extr = boxes.at(rl).at(c).at(ml).exterior; + + // Refinement boxes + if (rl<h.reflevels()-1) { + for (int cc=0; cc<h.components(rl+1); ++cc) { + const ibbox intrf = boxes.at(rl+1).at(cc).at(ml).interior; + // Restriction (interior) + { + // (the restriction may fill the interior of the of the + // coarse grid, and may use the interior of the fine + // grid, and the bbox must be as large as possible) + // (the restriction must not use points that are filled + // by boundary prolongation) + ibset sends = intrf & intr.expanded_for(intrf); + // remove what is received during boundary prolongation + for (int ccc=0; ccc<h.components(rl); ++ccc) { + const iblist& sendlist + = boxes.at(rl+1).at(cc).at(ml).recv_ref_bnd_coarse.at(ccc); + for (typename iblist::const_iterator sli = sendlist.begin(); + sli != sendlist.end(); ++sli) { + sends -= *sli; + } + } + sends.normalize(); + for (typename ibset::const_iterator si = sends.begin(); + si != sends.end(); ++si) { + const ibbox recv = (*si).contracted_for(intr); + if (! recv.empty()) { + const ibbox & send = recv.expanded_for(intrf); + assert (! send.empty()); + boxes.at(rl+1).at(cc).at(ml).send_ref_coarse.at(c ) + .push_back(send); + boxes.at(rl ).at(c ).at(ml).recv_ref_fine .at(cc) + .push_back(recv); + } + } + } + + } // for cc + } // if not finest refinement level + + } // for ml + } // for c + } // for rl + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + + // Boundaries that are not synced, or are neither synced nor + // prolonged to from coarser grids (outer boundaries) + ibset& sync_not = boxes.at(rl).at(c).at(ml).sync_not; + ibset& recv_not = boxes.at(rl).at(c).at(ml).recv_not; + + // The whole boundary + sync_not = boxes.at(rl).at(c).at(ml).boundaries; + recv_not = boxes.at(rl).at(c).at(ml).boundaries; + + // Subtract boxes received during synchronisation + const iblistvect& recv_sync = boxes.at(rl).at(c).at(ml).recv_sync; + for (typename iblistvect::const_iterator lvi=recv_sync.begin(); + lvi!=recv_sync.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + sync_not -= *li; + recv_not -= *li; + } + } + + // Subtract boxes received during prolongation + const iblistvect& recv_ref_bnd_coarse + = boxes.at(rl).at(c).at(ml).recv_ref_bnd_coarse; + for (typename iblistvect::const_iterator + lvi=recv_ref_bnd_coarse.begin(); + lvi!=recv_ref_bnd_coarse.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + recv_not -= *li; + } + } + + } // for ml + } // for c + } // for rl + + // Calculate bases + bases.resize(h.reflevels()); + for (int rl=0; rl<h.reflevels(); ++rl) { + if (h.components(rl)==0) { + bases.at(rl).resize(0); + } else { + bases.at(rl).resize(h.mglevels(rl,0)); + for (int ml=0; ml<h.mglevels(rl,0); ++ml) { + bases.at(rl).at(ml).exterior = ibbox(); + bases.at(rl).at(ml).interior = ibbox(); + for (int c=0; c<h.components(rl); ++c) { + bases.at(rl).at(ml).exterior + = (bases.at(rl).at(ml).exterior + .expanded_containing(boxes.at(rl).at(c).at(ml).exterior)); + bases.at(rl).at(ml).interior + = (bases.at(rl).at(ml).interior + .expanded_containing(boxes.at(rl).at(c).at(ml).interior)); + } + bases.at(rl).at(ml).boundaries + = bases.at(rl).at(ml).exterior - bases.at(rl).at(ml).interior; + } + } + } + + if (output_bboxes) { + cout << endl << h << endl; + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + cout << endl; + cout << "dh bboxes:" << endl; + cout << "rl=" << rl << " c=" << c << " ml=" << ml << endl; + cout << "exterior=" << boxes.at(rl).at(c).at(ml).exterior << endl; + cout << "interior=" << boxes.at(rl).at(c).at(ml).interior << endl; + cout << "send_mg_fine=" << boxes.at(rl).at(c).at(ml).send_mg_fine << endl; + cout << "send_mg_coarse=" << boxes.at(rl).at(c).at(ml).send_mg_coarse << endl; + cout << "recv_mg_fine=" << boxes.at(rl).at(c).at(ml).recv_mg_fine << endl; + cout << "recv_mg_coarse=" << boxes.at(rl).at(c).at(ml).recv_mg_coarse << endl; + cout << "send_ref_fine=" << boxes.at(rl).at(c).at(ml).send_ref_fine << endl; + cout << "send_ref_coarse=" << boxes.at(rl).at(c).at(ml).send_ref_coarse << endl; + cout << "recv_ref_fine=" << boxes.at(rl).at(c).at(ml).recv_ref_fine << endl; + cout << "recv_ref_coarse=" << boxes.at(rl).at(c).at(ml).recv_ref_coarse << endl; + cout << "send_sync=" << boxes.at(rl).at(c).at(ml).send_sync << endl; + cout << "send_ref_bnd_fine=" << boxes.at(rl).at(c).at(ml).send_ref_bnd_fine << endl; + cout << "boundaries=" << boxes.at(rl).at(c).at(ml).boundaries << endl; + cout << "recv_sync=" << boxes.at(rl).at(c).at(ml).recv_sync << endl; + cout << "recv_ref_bnd_coarse=" << boxes.at(rl).at(c).at(ml).recv_ref_bnd_coarse << endl; + cout << "sync_not=" << boxes.at(rl).at(c).at(ml).sync_not << endl; + cout << "recv_not=" << boxes.at(rl).at(c).at(ml).recv_not << endl; + } + } + } + for (int rl=0; rl<h.reflevels(); ++rl) { + if (h.components(rl)>0) { + for (int ml=0; ml<h.mglevels(rl,0); ++ml) { + cout << endl; + cout << "dh bases:" << endl; + cout << "rl=" << rl << " ml=" << ml << endl; + cout << "exterior=" << bases.at(rl).at(ml).exterior << endl; + cout << "interior=" << bases.at(rl).at(ml).interior << endl; + cout << "boundaries=" << bases.at(rl).at(ml).boundaries << endl; + } + } + } + } // if output_bboxes + + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + + // Assert that all boundaries are synced or received + { + const ibset& sync_not = boxes.at(rl).at(c).at(ml).sync_not; +#if 0 + const ibset& recv_not = boxes.at(rl).at(c).at(ml).recv_not; +#endif + + // Check that no boundaries are left over + if (rl==0) assert (sync_not.empty()); +#if 0 + assert (recv_not.empty()); +#endif + } + + // Assert that the interior is received exactly once during + // prolongation, and that nothing else is received + { + if (rl==0) { + const iblistvect& recv_ref_coarse + = boxes.at(rl).at(c).at(ml).recv_ref_coarse; + assert (recv_ref_coarse.empty()); + } else { // rl!=0 + const iblistvect& recv_ref_coarse + = boxes.at(rl).at(c).at(ml).recv_ref_coarse; + ibset intr = boxes.at(rl).at(c).at(ml).interior; + for (typename iblistvect::const_iterator + lvi=recv_ref_coarse.begin(); + lvi!=recv_ref_coarse.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + const int old_sz = intr.size(); + const int this_sz = li->size(); + intr -= *li; + const int new_sz = intr.size(); + // TODO + assert (new_sz + this_sz == old_sz); + } + } + // TODO + // This need not be empty at outer boundaries. Check that + // those are indeed outer boundaries! But what size of the + // boundary region should be used for that? +#if 0 + assert (intr.empty()); +#endif + } + } + + // Assert that the boundaries are received at most once during + // prolongation and synchronisation, and that nothing else is + // received + { + const iblistvect& recv_sync = boxes.at(rl).at(c).at(ml).recv_sync; + const iblistvect& recv_ref_bnd_coarse + = boxes.at(rl).at(c).at(ml).recv_ref_bnd_coarse; + ibset bnds = boxes.at(rl).at(c).at(ml).boundaries; + for (typename iblistvect::const_iterator lvi=recv_sync.begin(); + lvi!=recv_sync.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + const int old_sz = bnds.size(); + const int this_sz = li->size(); + bnds -= *li; + const int new_sz = bnds.size(); + assert (new_sz + this_sz == old_sz); + } + } + for (typename iblistvect::const_iterator + lvi=recv_ref_bnd_coarse.begin(); + lvi!=recv_ref_bnd_coarse.end(); ++lvi) { + for (typename iblist::const_iterator li=lvi->begin(); + li!=lvi->end(); ++li) { + const int old_sz = bnds.size(); + const int this_sz = li->size(); + bnds -= *li; + const int new_sz = bnds.size(); + // TODO + // The new size can be larger if part of the + // prolongation went into the buffer zone. +// assert (new_sz + this_sz == old_sz); + assert (new_sz + this_sz >= old_sz); + } + } + // TODO + // This need not be empty at outer boundaries. Check that + // those are indeed outer boundaries! But what size of the + // boundary region should be used for that? +#if 0 + assert (bnds.empty()); +#endif + } + + } // for ml + } // for c + } // for rl + + if (! save_memory_during_regridding) { + + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + (*f)->recompose_crop (); + } + for (int rl=0; rl<h.reflevels(); ++rl) { + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + (*f)->recompose_allocate (rl); + } + for (comm_state<D> state; !state.done(); state.step()) { + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + (*f)->recompose_fill (state, rl, do_prolongate); + } + } + for (typename list<ggf<D>*>::reverse_iterator f=gfs.rbegin(); f!=gfs.rend(); ++f) { + (*f)->recompose_free (rl); + } + for (comm_state<D> state; !state.done(); state.step()) { + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + (*f)->recompose_bnd_prolongate (state, rl, do_prolongate); + } + } + for (comm_state<D> state; !state.done(); state.step()) { + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + (*f)->recompose_sync (state, rl, do_prolongate); + } + } + } // for rl + + } else { // save memory + + ggf<D>* vectorleader = NULL; + for (typename list<ggf<D>*>::iterator f=gfs.begin(); f!=gfs.end(); ++f) { + + (*f)->recompose_crop (); + for (int rl=0; rl<h.reflevels(); ++rl) { + (*f)->recompose_allocate (rl); + for (comm_state<D> state; !state.done(); state.step()) { + (*f)->recompose_fill (state, rl, do_prolongate); + } + assert ((*f)->vectorlength >= 1); + if ((*f)->vectorlength == 1) { + assert (! vectorleader); + (*f)->recompose_free (rl); + } else { + // treat vector groups specially: delete the leader only + // after all other elements have been deleted + if ((*f)->vectorindex == 0) { + // first element: delete nothing + if (rl == 0) { + assert (! vectorleader); + vectorleader = *f; + } + assert (vectorleader); + } else { + assert (vectorleader); + (*f)->recompose_free (rl); + if ((*f)->vectorindex == (*f)->vectorlength-1) { + // this was the last element: delete the leader as well + vectorleader->recompose_free (rl); + if (rl == h.reflevels()-1) { + vectorleader = NULL; + } + } + } + } + for (comm_state<D> state; !state.done(); state.step()) { + (*f)->recompose_bnd_prolongate (state, rl, do_prolongate); + } + for (comm_state<D> state; !state.done(); state.step()) { + (*f)->recompose_sync (state, rl, do_prolongate); + } + } // for rl + + } // for gf + assert (! vectorleader); + + } // save memory +} + + + +// Grid function management +template<int D> +void dh<D>::add (ggf<D>* f) { + CHECKPOINT; + gfs.push_back(f); +} + +template<int D> +void dh<D>::remove (ggf<D>* f) { + CHECKPOINT; + gfs.remove(f); +} + + + +// Output +template<int D> +void dh<D>::output (ostream& os) const { + os << "dh<" << D << ">:" + << "ghosts=[" << lghosts << "," << ughosts << "]," + << "gfs={"; + int cnt=0; + for (typename list<ggf<D>*>::const_iterator f = gfs.begin(); + f != gfs.end(); ++f) { + if (cnt++) os << ","; + (*f)->output(os); + } + os << "}"; +} + + + +template class dh<3>; diff --git a/Carpet/CarpetLib/src/dh.hh b/Carpet/CarpetLib/src/dh.hh new file mode 100644 index 000000000..22a9bd425 --- /dev/null +++ b/Carpet/CarpetLib/src/dh.hh @@ -0,0 +1,146 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dh.hh,v 1.20 2004/08/07 19:47:11 schnetter Exp $ + +#ifndef DH_HH +#define DH_HH + +#include <assert.h> + +#include <iostream> +#include <list> +#include <string> +#include <vector> + +#include "bbox.hh" +#include "bboxset.hh" +#include "defs.hh" +#include "gh.hh" +#include "vect.hh" + +using namespace std; + + + +// Forward declaration +template<int D> class ggf; +template<int D> class dh; + +// Output +template<int D> +ostream& operator<< (ostream& os, const dh<D>& d); + + + +// A data hierarchy (grid hierarchy plus ghost zones) +template<int D> +class dh { + + // Types + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + typedef bboxset<int,D> ibset; + typedef list<ibbox> iblist; + typedef vector<iblist> iblistvect; // vector of lists + +public: + + // in here, the term "boundary" means both ghost zones and + // refinement boundaries, but does not refer to outer (physical) + // boundaries. + + // ghost zones, refinement boundaries, and outer boundaries are not + // used as sources for synchronisation. this design choice might + // not be good. + + struct dboxes { + ibbox exterior; // whole region (including boundaries) + + ibbox interior; // interior (without boundaries) + iblist send_mg_fine; + iblist send_mg_coarse; + iblist recv_mg_fine; + iblist recv_mg_coarse; + iblistvect send_ref_fine; + iblistvect send_ref_coarse; + iblistvect recv_ref_fine; + iblistvect recv_ref_coarse; + iblistvect send_sync; // send while syncing + iblistvect send_ref_bnd_fine; // sent to finer grids + + ibset boundaries; // boundaries + iblistvect recv_sync; // received while syncing + iblistvect recv_ref_bnd_coarse; // received from coarser grids + ibset sync_not; // not received while syncing (outer boundary of that level) + ibset recv_not; // not received while syncing or prolongating (globally outer boundary) + +#if 0 + // after regridding: + iblistvect prev_send; // sent from previous dh + iblistvect recv_prev; // received from previous dh + iblistvect send_prev_fine; // sent to finer + iblistvect recv_prev_coarse; // received from coarser +#endif + }; + +private: + + struct dbases { + ibbox exterior; // whole region (including boundaries) + ibbox interior; // interior (without boundaries) + ibset boundaries; // boundaries + }; + + typedef vector<dboxes> mboxes; // ... for each multigrid level + typedef vector<mboxes> cboxes; // ... for each component + typedef vector<cboxes> rboxes; // ... for each refinement level + + typedef vector<dbases> mbases; // ... for each multigrid level + typedef vector<mbases> rbases; // ... for each refinement level + +public: // should be readonly + + // Fields + gh<D>& h; // hierarchy + ivect lghosts, ughosts; // ghost zones + + int prolongation_order_space; // order of spatial prolongation operator + int buffer_width; // buffer inside refined grids + + rboxes boxes; + rbases bases; + + list<ggf<D>*> gfs; // list of all grid functions + +public: + + // Constructors + dh (gh<D>& h, const ivect& lghosts, const ivect& ughosts, + int prolongation_order_space, int buffer_width); + + // Destructors + virtual ~dh (); + + // Helpers + int prolongation_stencil_size () const; + + // Modifiers + void recompose (const bool do_prolongate); + + // Grid function management + void add (ggf<D>* f); + void remove (ggf<D>* f); + + // Output + virtual void output (ostream& os) const; +}; + + + +template<int D> +inline ostream& operator<< (ostream& os, const dh<D>& d) { + d.output(os); + return os; +} + + + +#endif // DH_HH diff --git a/Carpet/CarpetLib/src/dist.cc b/Carpet/CarpetLib/src/dist.cc new file mode 100644 index 000000000..7e41e3cdb --- /dev/null +++ b/Carpet/CarpetLib/src/dist.cc @@ -0,0 +1,83 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dist.cc,v 1.8 2004/07/08 12:36:01 tradke Exp $ + +#include <assert.h> + +#include <mpi.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "defs.hh" + +#include "dist.hh" + +using namespace std; + + + +namespace dist { + + MPI_Comm comm = MPI_COMM_NULL; + +#if 0 + MPI_Datatype mpi_complex_float; + MPI_Datatype mpi_complex_double; + MPI_Datatype mpi_complex_long_double; +#else + MPI_Datatype mpi_complex8; + MPI_Datatype mpi_complex16; + MPI_Datatype mpi_complex32; +#endif + + void init (int& argc, char**& argv) { + MPI_Init (&argc, &argv); + pseudoinit(); + } + + void pseudoinit () { + comm = MPI_COMM_WORLD; + +#if 0 + MPI_Type_contiguous (2, MPI_FLOAT, &mpi_complex_float); + MPI_Type_commit (&mpi_complex_float); + MPI_Type_contiguous (2, MPI_DOUBLE, &mpi_complex_double); + MPI_Type_commit (&mpi_complex_double); + MPI_Type_contiguous (2, MPI_LONG_DOUBLE, &mpi_complex_long_double); + MPI_Type_commit (&mpi_complex_long_double); +#else +# ifdef CCTK_REAL4 + CCTK_REAL4 dummy4; + MPI_Type_contiguous (2, datatype(dummy4), &mpi_complex8); + MPI_Type_commit (&mpi_complex8); +# endif +# ifdef CCTK_REAL8 + CCTK_REAL8 dummy8; + MPI_Type_contiguous (2, datatype(dummy8), &mpi_complex16); + MPI_Type_commit (&mpi_complex16); +# endif +# ifdef CCTK_REAL16 + CCTK_REAL16 dummy16; + MPI_Type_contiguous (2, datatype(dummy16), &mpi_complex32); + MPI_Type_commit (&mpi_complex32); +# endif +#endif + } + + void finalize () { + MPI_Finalize (); + } + + void checkpoint (const char* file, int line) { + DECLARE_CCTK_PARAMETERS; + if (verbose) { + int rank; + MPI_Comm_rank (comm, &rank); + printf ("CHECKPOINT: processor %d, file %s, line %d\n", + rank, file, line); + } + if (barriers) { + MPI_Barrier (comm); + } + } + +} // namespace dist diff --git a/Carpet/CarpetLib/src/dist.hh b/Carpet/CarpetLib/src/dist.hh new file mode 100644 index 000000000..ab89ae580 --- /dev/null +++ b/Carpet/CarpetLib/src/dist.hh @@ -0,0 +1,120 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/dist.hh,v 1.10 2004/03/01 19:43:39 schnetter Exp $ + +#ifndef DIST_HH +#define DIST_HH + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> + +#include <complex> + +#include <mpi.h> + +#include "cctk.h" + +#include "defs.hh" + +using namespace std; + + + +namespace dist { + + extern MPI_Comm comm; + +#if 0 + extern MPI_Datatype mpi_complex_float; + extern MPI_Datatype mpi_complex_double; + extern MPI_Datatype mpi_complex_long_double; +#else + extern MPI_Datatype mpi_complex8; + extern MPI_Datatype mpi_complex16; + extern MPI_Datatype mpi_complex32; +#endif + + void init (int& argc, char**& argv); + void pseudoinit (); + void finalize (); + + // Debugging output +#define CHECKPOINT dist::checkpoint(__FILE__, __LINE__) + void checkpoint (const char* file, int line); + + + + // Datatype helpers + inline MPI_Datatype datatype (const char& dummy) + { return MPI_CHAR; } + + inline MPI_Datatype datatype (const signed char& dummy) + { return MPI_UNSIGNED_CHAR; } + + inline MPI_Datatype datatype (const unsigned char& dummy) + { return MPI_BYTE; } + + inline MPI_Datatype datatype (const short& dummy) + { return MPI_SHORT; } + + inline MPI_Datatype datatype (const unsigned short& dummy) + { return MPI_UNSIGNED_SHORT; } + + inline MPI_Datatype datatype (const int& dummy) + { return MPI_INT; } + + inline MPI_Datatype datatype (const unsigned int& dummy) + { return MPI_UNSIGNED; } + + inline MPI_Datatype datatype (const long& dummy) + { return MPI_LONG; } + + inline MPI_Datatype datatype (const unsigned long& dummy) + { return MPI_UNSIGNED_LONG; } + + inline MPI_Datatype datatype (const long long& dummy) + { return MPI_LONG_LONG_INT; } + + inline MPI_Datatype datatype (const float& dummy) + { return MPI_FLOAT; } + + inline MPI_Datatype datatype (const double& dummy) + { return MPI_DOUBLE; } + + inline MPI_Datatype datatype (const long double& dummy) + { return MPI_LONG_DOUBLE; } + +#if 0 + + inline MPI_Datatype datatype (const complex<float>& dummy) + { return mpi_complex_float; } + + inline MPI_Datatype datatype (const complex<double>& dummy) + { return mpi_complex_double; } + + inline MPI_Datatype datatype (const complex<long double>& dummy) + { return mpi_complex_long_double; } + +#else + +# ifdef CCTK_REAL4 + inline MPI_Datatype datatype (const CCTK_COMPLEX8& dummy) + { return mpi_complex8; } +# endif + +# ifdef CCTK_REAL8 + inline MPI_Datatype datatype (const CCTK_COMPLEX16& dummy) + { return mpi_complex16; } +# endif + +# ifdef CCTK_REAL16 + inline MPI_Datatype datatype (const CCTK_COMPLEX32& dummy) + { return mpi_complex32; } +# endif + +#endif + +} // namespace dist + + + +#endif // DIST_HH diff --git a/Carpet/CarpetLib/src/gdata.cc b/Carpet/CarpetLib/src/gdata.cc new file mode 100644 index 000000000..f05c88122 --- /dev/null +++ b/Carpet/CarpetLib/src/gdata.cc @@ -0,0 +1,438 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gdata.cc,v 1.29 2004/04/07 16:58:07 schnetter Exp $ + +#include <assert.h> +#include <stdlib.h> + +#include <iostream> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "util_ErrorCodes.h" +#include "util_Table.h" + +#include "bbox.hh" +#include "defs.hh" +#include "dist.hh" +#include "vect.hh" + +#include "gdata.hh" + +using namespace std; + + + +// Communication state control +template<int D> +comm_state<D>::comm_state () + : thestate(state_recv), + current(0) +{ +} + +template<int D> +void comm_state<D>::step () +{ + assert (thestate!=state_done); + assert (current==tmps.size()); + thestate=astate(size_t(thestate)+1); + current=0; +} + +template<int D> +bool comm_state<D>::done () +{ + return thestate==state_done; +} + +template<int D> +comm_state<D>::~comm_state () +{ + assert (thestate==state_recv || thestate==state_done); +} + + + +// Hand out the next MPI tag +static int nexttag () +{ + static int last = 100; + ++last; + if (last > 30000) last = 100; + return last; +} + + + +// Constructors +template<int D> +gdata<D>::gdata (const int varindex_, const operator_type transport_operator_) + : varindex(varindex_), transport_operator(transport_operator_), + wtime_isend(0.0), wtime_isendwait(0.0), + wtime_irecv(0.0), wtime_irecvwait(0.0), + _has_storage(false), + comm_active(false), + tag(nexttag()) +{ + DECLARE_CCTK_PARAMETERS; + if (barriers) { + MPI_Barrier (dist::comm); + } +} + +// Destructors +template<int D> +gdata<D>::~gdata () +{ + DECLARE_CCTK_PARAMETERS; + if (barriers) { + MPI_Barrier (dist::comm); + } +} + + + +// Data manipulators +template<int D> +void gdata<D>::copy_from (comm_state<D>& state, + const gdata* src, const ibbox& box) +{ + switch (state.thestate) { + case state_recv: + copy_from_recv (state, src, box); + break; + case state_send: + copy_from_send (state, src, box); + break; + case state_wait: + copy_from_wait (state, src, box); + break; + default: + assert(0); + } +} + + + +template<int D> +void gdata<D>::copy_from_nocomm (const gdata* src, const ibbox& box) +{ + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + if (box.empty()) return; + + assert (proc() == src->proc()); + + // copy on same processor + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == proc()) { + copy_from_innerloop (src, box); + } +} + + + +template<int D> +void gdata<D>::copy_from_recv (comm_state<D>& state, + const gdata* src, const ibbox& box) +{ + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + if (box.empty()) return; + + if (proc() == src->proc()) { + // copy on same processor + + } else { + + // copy to different processor + gdata<D>* const tmp = make_typed(varindex, transport_operator); + // TODO: is this efficient? + state.tmps.push_back (tmp); + ++state.current; + tmp->allocate (box, src->proc()); + tmp->change_processor_recv (proc()); + + } +} + + + +template<int D> +void gdata<D>::copy_from_send (comm_state<D>& state, + const gdata* src, const ibbox& box) +{ + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + if (box.empty()) return; + + if (proc() == src->proc()) { + // copy on same processor + + copy_from_nocomm (src, box); + + } else { + + // copy to different processor + gdata<D>* const tmp = state.tmps.at(state.current++); + assert (tmp); + tmp->copy_from_nocomm (src, box); + tmp->change_processor_send (proc()); + + } +} + + + +template<int D> +void gdata<D>::copy_from_wait (comm_state<D>& state, + const gdata* src, const ibbox& box) +{ + assert (has_storage() && src->has_storage()); + assert (all(box.lower()>=extent().lower() + && box.lower()>=src->extent().lower())); + assert (all(box.upper()<=extent().upper() + && box.upper()<=src->extent().upper())); + assert (all(box.stride()==extent().stride() + && box.stride()==src->extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0 + && (box.lower()-src->extent().lower())%box.stride() == 0)); + + if (box.empty()) return; + + if (proc() == src->proc()) { + // copy on same processor + + } else { + + // copy to different processor + gdata<D>* const tmp = state.tmps.at(state.current++); + assert (tmp); + tmp->change_processor_wait (proc()); + copy_from_nocomm (tmp, box); + delete tmp; + + } +} + + + +template<int D> +void gdata<D> +::interpolate_from (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (transport_operator != op_error); + if (transport_operator == op_none) return; + switch (state.thestate) { + case state_recv: + interpolate_from_recv (state, srcs, times, box, time, order_space, order_time); + break; + case state_send: + interpolate_from_send (state, srcs, times, box, time, order_space, order_time); + break; + case state_wait: + interpolate_from_wait (state, srcs, times, box, time, order_space, order_time); + break; + default: + assert(0); + } +} + + + +template<int D> +void gdata<D> +::interpolate_from_nocomm (const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (has_storage()); + assert (all(box.lower()>=extent().lower())); + assert (all(box.upper()<=extent().upper())); + assert (all(box.stride()==extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0)); + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs.at(t)->has_storage()); + assert (all(box.lower()>=srcs.at(t)->extent().lower())); + assert (all(box.upper()<=srcs.at(t)->extent().upper())); + } + + assert (! box.empty()); + if (box.empty()) return; + + assert (proc() == srcs.at(0)->proc()); + + assert (transport_operator != op_error); + assert (transport_operator != op_none); + + // interpolate on same processor + int rank; + MPI_Comm_rank (dist::comm, &rank); + if (rank == proc()) { + interpolate_from_innerloop + (srcs, times, box, time, order_space, order_time); + } +} + + + +template<int D> +void gdata<D> +::interpolate_from_recv (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (has_storage()); + assert (all(box.lower()>=extent().lower())); + assert (all(box.upper()<=extent().upper())); + assert (all(box.stride()==extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0)); + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs.at(t)->has_storage()); + assert (all(box.lower()>=srcs.at(t)->extent().lower())); + assert (all(box.upper()<=srcs.at(t)->extent().upper())); + } + + assert (! box.empty()); + if (box.empty()) return; + + if (proc() == srcs.at(0)->proc()) { + // interpolate on same processor + + } else { + // interpolate from other processor + + gdata<D>* const tmp = make_typed(varindex, transport_operator); + // TODO: is this efficient? + state.tmps.push_back (tmp); + ++state.current; + tmp->allocate (box, srcs.at(0)->proc()); + tmp->change_processor_recv (proc()); + + } +} + + + +template<int D> +void gdata<D> +::interpolate_from_send (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (has_storage()); + assert (all(box.lower()>=extent().lower())); + assert (all(box.upper()<=extent().upper())); + assert (all(box.stride()==extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0)); + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs.at(t)->has_storage()); + assert (all(box.lower()>=srcs.at(t)->extent().lower())); + assert (all(box.upper()<=srcs.at(t)->extent().upper())); + } + + assert (! box.empty()); + if (box.empty()) return; + + if (proc() == srcs.at(0)->proc()) { + // interpolate on same processor + + interpolate_from_nocomm (srcs, times, box, time, order_space, order_time); + + } else { + // interpolate from other processor + + gdata<D>* const tmp = state.tmps.at(state.current++); + assert (tmp); + tmp->interpolate_from_nocomm (srcs, times, box, time, order_space, order_time); + tmp->change_processor_send (proc()); + + } +} + + + +template<int D> +void gdata<D> +::interpolate_from_wait (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) +{ + assert (has_storage()); + assert (all(box.lower()>=extent().lower())); + assert (all(box.upper()<=extent().upper())); + assert (all(box.stride()==extent().stride())); + assert (all((box.lower()-extent().lower())%box.stride() == 0)); + assert (srcs.size() == times.size() && srcs.size()>0); + for (int t=0; t<(int)srcs.size(); ++t) { + assert (srcs.at(t)->has_storage()); + assert (all(box.lower()>=srcs.at(t)->extent().lower())); + assert (all(box.upper()<=srcs.at(t)->extent().upper())); + } + + assert (! box.empty()); + if (box.empty()) return; + + if (proc() == srcs.at(0)->proc()) { + // interpolate on same processor + + } else { + // interpolate from other processor + + gdata<D>* const tmp = state.tmps.at(state.current++); + assert (tmp); + tmp->change_processor_wait (proc()); + copy_from_nocomm (tmp, box); + delete tmp; + + } +} + + + +template class comm_state<3>; +template class gdata<3>; diff --git a/Carpet/CarpetLib/src/gdata.hh b/Carpet/CarpetLib/src/gdata.hh new file mode 100644 index 000000000..9355238dd --- /dev/null +++ b/Carpet/CarpetLib/src/gdata.hh @@ -0,0 +1,219 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gdata.hh,v 1.24 2004/04/19 07:56:35 schnetter Exp $ + +#ifndef GDATA_HH +#define GDATA_HH + +#include <assert.h> +#include <stdlib.h> + +#include <iostream> +#include <string> +#include <vector> + +#include "cctk.h" + +#include "defs.hh" +#include "dist.hh" +#include "bbox.hh" +#include "operators.hh" +#include "vect.hh" + +using namespace std; + + + + +template<int D> +class gdata; + + + +// State information for communications +enum astate { state_recv, state_send, state_wait, state_done }; + +template<int D> +struct comm_state { + astate thestate; + comm_state (); + void step (); + bool done (); + ~comm_state (); + + vector<gdata<D>*> tmps; + size_t current; +}; + + + +// A generic data storage without type information +template<int D> +class gdata { + + // Types + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + +protected: // should be readonly + + // Fields + int varindex; // Cactus variable index, or -1 + operator_type transport_operator; + + double wtime_isend, wtime_isendwait; + double wtime_irecv, wtime_irecvwait; + + bool _has_storage; // has storage associated (on some processor) + bool _owns_storage; // owns the storage + // (only valid if there is storage on this processor; it means that + // the memory is allocated and freed by this class) + int _size; // size + + int _proc; // stored on processor + + ivect _shape, _stride; // shape and index order + + ibbox _extent; // bbox for all data + + bool comm_active; + MPI_Request request; + + int tag; // MPI tag for this object + +public: + + // Constructors + gdata (const int varindex, + const operator_type transport_operator = op_error); + + // Destructors + virtual ~gdata (); + + // Pseudo constructors + virtual gdata<D>* + make_typed (const int varindex, + const operator_type transport_operator = op_error) const = 0; + + // Processor management + virtual void change_processor (comm_state<D>& state, + const int newproc, void* const mem=0) = 0; + protected: + virtual void change_processor_recv (const int newproc, void* const mem=0) = 0; + virtual void change_processor_send (const int newproc, void* const mem=0) = 0; + virtual void change_processor_wait (const int newproc, void* const mem=0) = 0; + public: + + // Storage management + virtual void transfer_from (gdata<D>* src) = 0; + + virtual void allocate (const ibbox& extent, const int proc, + void* const mem=0) = 0; + virtual void free () = 0; + + // Accessors + + bool has_storage () const { + return _has_storage; + } + bool owns_storage () const { + assert (_has_storage); + return _owns_storage; + } + + virtual const void* storage () const = 0; + + virtual void* storage () = 0; + + int size () const { + assert (_has_storage); + return _size; + } + + int proc () const { + assert (_has_storage); + return _proc; + } + + const ivect& shape () const { + assert (_has_storage); + return _shape; + } + + const ivect& stride () const { + assert (_has_storage); + return _stride; + } + + const ibbox& extent () const { + assert (_has_storage); + return _extent; + } + + // Data accessors + int offset (const ivect& index) const { + assert (_has_storage); + assert (all((index-extent().lower()) % extent().stride() == 0)); + ivect ind = (index-extent().lower()) / extent().stride(); + assert (all(ind>=0 && ind<=shape())); + return dot(ind, stride()); + } + + // Data manipulators + public: + void copy_from (comm_state<D>& state, + const gdata* src, const ibbox& box); + private: + void copy_from_nocomm (const gdata* src, const ibbox& box); + void copy_from_recv (comm_state<D>& state, + const gdata* src, const ibbox& box); + void copy_from_send (comm_state<D>& state, + const gdata* src, const ibbox& box); + void copy_from_wait (comm_state<D>& state, + const gdata* src, const ibbox& box); + public: + void interpolate_from (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + private: + void interpolate_from_nocomm (const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + void interpolate_from_recv (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + void interpolate_from_send (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + void interpolate_from_wait (comm_state<D>& state, + const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time); + public: + +protected: + virtual void + copy_from_innerloop (const gdata* src, const ibbox& box) = 0; + virtual void + interpolate_from_innerloop (const vector<const gdata*> srcs, + const vector<CCTK_REAL> times, + const ibbox& box, const CCTK_REAL time, + const int order_space, + const int order_time) = 0; + +}; + + + +#endif // GDATA_HH diff --git a/Carpet/CarpetLib/src/gf.cc b/Carpet/CarpetLib/src/gf.cc new file mode 100644 index 000000000..69537d537 --- /dev/null +++ b/Carpet/CarpetLib/src/gf.cc @@ -0,0 +1,91 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gf.cc,v 1.21 2004/08/07 19:47:11 schnetter Exp $ + +#include <assert.h> + +#include "cctk.h" + +#include "defs.hh" + +#include "gf.hh" + +using namespace std; + + + +// Constructors +template<class T,int D> +gf<T,D>::gf (const int varindex, const operator_type transport_operator, + th<D>& t, dh<D>& d, + const int tmin, const int tmax, const int prolongation_order_time, + const int vectorlength, const int vectorindex, + gf* const vectorleader) + : ggf<D>(varindex, transport_operator, + t, d, tmin, tmax, prolongation_order_time, + vectorlength, vectorindex, vectorleader) +{ + // this->recompose (); + this->recompose_crop (); + for (int rl=0; rl<this->h.reflevels(); ++rl) { + this->recompose_allocate (rl); +#if 0 + for (comm_state<D> state; !state.done(); state.step()) { + this->recompose_fill (state, rl, false); + } +#endif + this->recompose_free (rl); +#if 0 + for (comm_state<D> state; !state.done(); state.step()) { + this->recompose_bnd_prolongate (state, rl, false); + } + for (comm_state<D> state; !state.done(); state.step()) { + this->recompose_sync (state, rl, false); + } +#endif + } // for rl +} + +// Destructors +template<class T,int D> +gf<T,D>::~gf () { } + + + +// Access to the data +template<class T,int D> +const data<T,D>* gf<T,D>::operator() (int tl, int rl, int c, int ml) const { + assert (tl>=this->tmin && tl<=this->tmax); + assert (rl>=0 && rl<this->h.reflevels()); + assert (c>=0 && c<this->h.components(rl)); + assert (ml>=0 && ml<this->h.mglevels(rl,c)); + return (const data<T,D>*)this->storage.at(tl-this->tmin).at(rl).at(c).at(ml); +} + +template<class T,int D> +data<T,D>* gf<T,D>::operator() (int tl, int rl, int c, int ml) { + assert (tl>=this->tmin && tl<=this->tmax); + assert (rl>=0 && rl<this->h.reflevels()); + assert (c>=0 && c<this->h.components(rl)); + assert (ml>=0 && ml<this->h.mglevels(rl,c)); + return (data<T,D>*)this->storage.at(tl-this->tmin).at(rl).at(c).at(ml); +} + + + +// Output +template<class T,int D> +ostream& gf<T,D>::output (ostream& os) const { + T Tdummy; + os << "gf<" << typestring(Tdummy) << "," << D << ">:" + << this->varindex << "[" << CCTK_VarName(this->varindex) << "]," + << "dt=[" << this->tmin << ":" << this->tmax<< "]"; + return os; +} + + + +#define INSTANTIATE(T) \ +template class gf<T,3>; + +#include "instantiate" + +#undef INSTANTIATE diff --git a/Carpet/CarpetLib/src/gf.hh b/Carpet/CarpetLib/src/gf.hh new file mode 100644 index 000000000..13fc8107e --- /dev/null +++ b/Carpet/CarpetLib/src/gf.hh @@ -0,0 +1,87 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gf.hh,v 1.12 2004/03/23 12:40:27 schnetter Exp $ + +#ifndef GF_HH +#define GF_HH + +#include <assert.h> +#include <math.h> + +#include <iostream> +#include <string> + +#include "bbox.hh" +#include "bboxset.hh" +#include "data.hh" +#include "defs.hh" +#include "dh.hh" +#include "ggf.hh" +#include "th.hh" +#include "vect.hh" + +using namespace std; + + + +// A real grid function +template<class T,int D> +class gf: public ggf<D> { + + // Types + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + typedef bboxset<int,D> ibset; + typedef list<ibbox> iblist; + typedef vector<iblist> iblistvect; + + typedef data<T,D>* tdata; // data ... + typedef vector<tdata> mdata; // ... for each multigrid level + typedef vector<mdata> cdata; // ... for each component + typedef vector<cdata> rdata; // ... for each refinement level + typedef vector<rdata> fdata; // ... for each time level + +public: + + // Constructors + gf (const int varindex, const operator_type transport_operator, + th<D>& t, dh<D>& d, + const int tmin, const int tmax, const int prolongation_order_time, + const int vectorlength, const int vectorindex, + gf* const vectorleader); + + // Destructors + virtual ~gf (); + + + + // Helpers + +protected: + + virtual gdata<D>* typed_data (int tl, int rl, int c, int ml) + { + return new data<T,D>(this->varindex, this->transport_operator, + this->vectorlength, this->vectorindex, + this->vectorleader + ? (data<T,D>*)(*this->vectorleader)(tl,rl,c,ml) + : NULL); + } + + + + // Access to the data + +public: + + virtual const data<T,D>* operator() (int tl, int rl, int c, int ml) const; + + virtual data<T,D>* operator() (int tl, int rl, int c, int ml); + + + + // Output + virtual ostream& output (ostream& os) const; +}; + + + +#endif // GF_HH diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc new file mode 100644 index 000000000..c26b22dbc --- /dev/null +++ b/Carpet/CarpetLib/src/ggf.cc @@ -0,0 +1,608 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.cc,v 1.46 2004/09/17 16:37:26 schnetter Exp $ + +#include <assert.h> +#include <math.h> +#include <stdlib.h> + +#include <iostream> +#include <string> + +#include "cctk.h" + +#include "defs.hh" +#include "dh.hh" +#include "th.hh" + +#include "ggf.hh" + +using namespace std; + + + +// Constructors +template<int D> +ggf<D>::ggf (const int varindex, const operator_type transport_operator, + th<D>& t, dh<D>& d, + const int tmin, const int tmax, + const int prolongation_order_time, + const int vectorlength, const int vectorindex, + ggf* const vectorleader) + : varindex(varindex), transport_operator(transport_operator), t(t), + tmin(tmin), tmax(tmax), + prolongation_order_time(prolongation_order_time), + h(d.h), d(d), + storage(tmax-tmin+1), + vectorlength(vectorlength), vectorindex(vectorindex), + vectorleader(vectorleader) +{ + assert (&t.h == &d.h); + + assert (vectorlength >= 1); + assert (vectorindex >= 0 && vectorindex < vectorlength); + assert ((vectorindex==0 && !vectorleader) + || (vectorindex!=0 && vectorleader)); + + d.add(this); +} + +// Destructors +template<int D> +ggf<D>::~ggf () { + d.remove(this); +} + +// Comparison +template<int D> +bool ggf<D>::operator== (const ggf<D>& f) const { + return this == &f; +} + + + +// Modifiers +template<int D> +void ggf<D>::recompose_crop () +{ + // Free storage that will not be needed + storage.resize(tmax-tmin+1); + for (int tl=tmin; tl<=tmax; ++tl) { + for (int rl=h.reflevels(); rl<(int)storage.at(tl-tmin).size(); ++rl) { + for (int c=0; c<(int)storage.at(tl-tmin).at(rl).size(); ++c) { + for (int ml=0; ml<(int)storage.at(tl-tmin).at(rl).at(c).size(); ++ml) { + delete storage.at(tl-tmin).at(rl).at(c).at(ml); + } // for ml + } // for c + } // for rl + storage.at(tl-tmin).resize(h.reflevels()); + } // for tl +} + +template<int D> +void ggf<D>::recompose_allocate (const int rl) +{ + // TODO: restructure storage only when needed + + // Retain storage that might be needed + oldstorage.resize(tmax-tmin+1); + for (int tl=tmin; tl<=tmax; ++tl) { + oldstorage.at(tl-tmin).resize(h.reflevels()); + assert (oldstorage.at(tl-tmin).at(rl).size() == 0); + oldstorage.at(tl-tmin).at(rl) = storage.at(tl-tmin).at(rl); + storage.at(tl-tmin).at(rl).resize(0); + } + + // Resize structure and allocate storage + storage.resize(tmax-tmin+1); + for (int tl=tmin; tl<=tmax; ++tl) { + storage.at(tl-tmin).resize(h.reflevels()); + storage.at(tl-tmin).at(rl).resize(h.components(rl)); + for (int c=0; c<h.components(rl); ++c) { + storage.at(tl-tmin).at(rl).at(c).resize(h.mglevels(rl,c)); + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + storage.at(tl-tmin).at(rl).at(c).at(ml) = typed_data(tl,rl,c,ml); + storage.at(tl-tmin).at(rl).at(c).at(ml)->allocate + (d.boxes.at(rl).at(c).at(ml).exterior, h.proc(rl,c)); + } // for ml + } // for c + } // for tl +} + +template<int D> +void ggf<D>::recompose_fill (comm_state<D>& state, const int rl, + const bool do_prolongate) +{ + // Initialise the new storage + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + for (int tl=tmin; tl<=tmax; ++tl) { + + // Find out which regions need to be prolongated + // (Copy the exterior because some variables are not prolongated) + // TODO: do this once in the dh instead of for each variable here + ibset work (d.boxes.at(rl).at(c).at(ml).exterior); + + // Copy from old storage, if possible + // TODO: copy only from interior regions? + if (rl<(int)oldstorage.at(tl-tmin).size()) { + for (int cc=0; cc<(int)oldstorage.at(tl-tmin).at(rl).size(); ++cc) { + if (ml<(int)oldstorage.at(tl-tmin).at(rl).at(cc).size()) { + // TODO: prefer same processor, etc., see dh.cc + ibset ovlp + = work & oldstorage.at(tl-tmin).at(rl).at(cc).at(ml)->extent(); + ovlp.normalize(); + work -= ovlp; + for (typename ibset::const_iterator r=ovlp.begin(); r!=ovlp.end(); ++r) { + storage.at(tl-tmin).at(rl).at(c).at(ml)->copy_from + (state, oldstorage.at(tl-tmin).at(rl).at(cc).at(ml), *r); + } + } // if ml + } // for cc + } // if rl + + if (do_prolongate) { + // Initialise from coarser level, if possible + if (rl>0) { + if (transport_operator != op_none) { + const int numtl = prolongation_order_time+1; + assert (tmax-tmin+1 >= numtl); + vector<int> tls(numtl); + vector<CCTK_REAL> times(numtl); + for (int i=0; i<numtl; ++i) { + tls.at(i) = tmax - i; + times.at(i) = t.time(tls.at(i),rl-1,ml); + } + for (int cc=0; cc<(int)storage.at(tl-tmin).at(rl-1).size(); ++cc) { + vector<const gdata<D>*> gsrcs(numtl); + for (int i=0; i<numtl; ++i) { + gsrcs.at(i) + = storage.at(tls.at(i)-tmin).at(rl-1).at(cc).at(ml); + assert (gsrcs.at(i)->extent() == gsrcs.at(0)->extent()); + } + const CCTK_REAL time = t.time(tl,rl,ml); + + // TODO: choose larger regions first + // TODO: prefer regions from the same processor + const iblist& list + = d.boxes.at(rl).at(c).at(ml).recv_ref_coarse.at(cc); + for (typename iblist::const_iterator iter=list.begin(); iter!=list.end(); ++iter) { + ibset ovlp = work & *iter; + ovlp.normalize(); + work -= ovlp; + for (typename ibset::const_iterator r=ovlp.begin(); r!=ovlp.end(); ++r) { + storage.at(tl-tmin).at(rl).at(c).at(ml)->interpolate_from + (state, gsrcs, times, *r, time, + d.prolongation_order_space, prolongation_order_time); + } // for r + } // for iter + } // for cc + } // if transport_operator + } // if rl + } // if do_prolongate + + // Note that work need not be empty here; in this case, not + // everything could be initialised. This is okay on outer + // boundaries. + // TODO: check this. + + } // for tl + } // for ml + } // for c +} + +template<int D> +void ggf<D>::recompose_free (const int rl) +{ + // Delete old storage + for (int tl=tmin; tl<=tmax; ++tl) { + for (int c=0; c<(int)oldstorage.at(tl-tmin).at(rl).size(); ++c) { + for (int ml=0; ml<(int)oldstorage.at(tl-tmin).at(rl).at(c).size(); ++ml) { + delete oldstorage.at(tl-tmin).at(rl).at(c).at(ml); + } // for ml + } // for c + oldstorage.at(tl-tmin).at(rl).resize(0); + } // for tl +} + +template<int D> +void ggf<D>::recompose_bnd_prolongate (comm_state<D>& state, const int rl, + const bool do_prolongate) +{ + if (do_prolongate) { + // Set boundaries + if (rl>0) { + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + for (int tl=tmin; tl<=tmax; ++tl) { + + // TODO: assert that reflevel 0 boundaries are copied + const CCTK_REAL time = t.time(tl,rl,ml); + ref_bnd_prolongate (state,tl,rl,c,ml,time); + + } // for tl + } // for ml + } // for c + } // if rl + } // if do_prolongate +} + +template<int D> +void ggf<D>::recompose_sync (comm_state<D>& state, const int rl, + const bool do_prolongate) +{ + if (do_prolongate) { + // Set boundaries + for (int c=0; c<h.components(rl); ++c) { + for (int ml=0; ml<h.mglevels(rl,c); ++ml) { + for (int tl=tmin; tl<=tmax; ++tl) { + + sync (state,tl,rl,c,ml); + + } // for tl + } // for ml + } // for c + } // if do_prolongate +} + + + +// Cycle the time levels by rotating the data sets +template<int D> +void ggf<D>::cycle (int rl, int c, int ml) { + assert (rl>=0 && rl<h.reflevels()); + assert (c>=0 && c<h.components(rl)); + assert (ml>=0 && ml<h.mglevels(rl,c)); + gdata<D>* tmpdata = storage.at(tmin-tmin).at(rl).at(c).at(ml); + for (int tl=tmin; tl<=tmax-1; ++tl) { + storage.at(tl-tmin).at(rl).at(c).at(ml) = storage.at(tl+1-tmin).at(rl).at(c).at(ml); + } + storage.at(tmax-tmin).at(rl).at(c).at(ml) = tmpdata; +} + +// Flip the time levels by exchanging the data sets +template<int D> +void ggf<D>::flip (int rl, int c, int ml) { + assert (rl>=0 && rl<h.reflevels()); + assert (c>=0 && c<h.components(rl)); + assert (ml>=0 && ml<h.mglevels(rl,c)); + for (int t=0; t<(tmax-tmin)/2; ++t) { + const int tl1 = tmin + t; + const int tl2 = tmax - t; + assert (tl1 < tl2); + gdata<D>* tmpdata = storage.at(tl1-tmin).at(rl).at(c).at(ml); + storage.at(tl1-tmin).at(rl).at(c).at(ml) = storage.at(tl2-tmin).at(rl).at(c).at(ml); + storage.at(tl2-tmin).at(rl).at(c).at(ml) = tmpdata; + } +} + + + +// Operations + +// Copy a region +template<int D> +void ggf<D>::copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const ibbox dh<D>::dboxes::* recv_box, + int tl2, int rl2, int ml2, + const ibbox dh<D>::dboxes::* send_box) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + assert (tl2>=tmin && tl2<=tmax); + assert (rl2>=0 && rl2<h.reflevels()); + const int c2=c1; + assert (ml2<h.mglevels(rl2,c2)); + const ibbox recv = d.boxes.at(rl1).at(c1).at(ml1).*recv_box; + const ibbox send = d.boxes.at(rl2).at(c2).at(ml2).*send_box; + assert (all(recv.shape()==send.shape())); + // copy the content + assert (recv==send); + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->copy_from + (state, storage.at(tl2-tmin).at(rl2).at(c2).at(ml2), recv); +} + +// Copy regions +template<int D> +void ggf<D>::copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblist dh<D>::dboxes::* recv_list, + int tl2, int rl2, int ml2, + const iblist dh<D>::dboxes::* send_list) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + assert (tl2>=tmin && tl2<=tmax); + assert (rl2>=0 && rl2<h.reflevels()); + const int c2=c1; + assert (ml2<h.mglevels(rl2,c2)); + const iblist recv = d.boxes.at(rl1).at(c1).at(ml1).*recv_list; + const iblist send = d.boxes.at(rl2).at(c2).at(ml2).*send_list; + assert (recv.size()==send.size()); + // walk all boxes + for (typename iblist::const_iterator r=recv.begin(), s=send.begin(); + r!=recv.end(); ++r, ++s) { + // (use the send boxes for communication) + // copy the content + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->copy_from + (state, storage.at(tl2-tmin).at(rl2).at(c2).at(ml2), *r); + } +} + +// Copy regions +template<int D> +void ggf<D>::copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblistvect dh<D>::dboxes::* recv_listvect, + int tl2, int rl2, int ml2, + const iblistvect dh<D>::dboxes::* send_listvect) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + assert (tl2>=tmin && tl2<=tmax); + assert (rl2>=0 && rl2<h.reflevels()); + // walk all components + for (int c2=0; c2<h.components(rl2); ++c2) { + assert (ml2<h.mglevels(rl2,c2)); + const iblist recv = (d.boxes.at(rl1).at(c1).at(ml1).*recv_listvect).at(c2); + const iblist send = (d.boxes.at(rl2).at(c2).at(ml2).*send_listvect).at(c1); + assert (recv.size()==send.size()); + // walk all boxes + for (typename iblist::const_iterator r=recv.begin(), s=send.begin(); + r!=recv.end(); ++r, ++s) { + // (use the send boxes for communication) + // copy the content + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->copy_from + (state, storage.at(tl2-tmin).at(rl2).at(c2).at(ml2), *r); + } + } +} + +// Interpolate a region +template<int D> +void ggf<D>::intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const ibbox dh<D>::dboxes::* recv_list, + const vector<int> tl2s, int rl2, int ml2, + const ibbox dh<D>::dboxes::* send_list, + CCTK_REAL time) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + for (int i=0; i<(int)tl2s.size(); ++i) { + assert (tl2s.at(i)>=tmin && tl2s.at(i)<=tmax); + } + assert (rl2>=0 && rl2<h.reflevels()); + const int c2=c1; + assert (ml2>=0 && ml2<h.mglevels(rl2,c2)); + + vector<const gdata<D>*> gsrcs(tl2s.size()); + vector<CCTK_REAL> times(tl2s.size()); + for (int i=0; i<(int)gsrcs.size(); ++i) { + assert (rl2<(int)storage.at(tl2s.at(i)-tmin).size()); + assert (c2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).size()); + assert (ml2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).size()); + gsrcs.at(i) = storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).at(ml2); + times.at(i) = t.time(tl2s.at(i),rl2,ml2); + } + + const ibbox recv = d.boxes.at(rl1).at(c1).at(ml1).*recv_list; + const ibbox send = d.boxes.at(rl2).at(c2).at(ml2).*send_list; + assert (all(recv.shape()==send.shape())); + // interpolate the content + assert (recv==send); + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->interpolate_from + (state, gsrcs, times, recv, time, + d.prolongation_order_space, prolongation_order_time); +} + +// Interpolate regions +template<int D> +void ggf<D>::intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblist dh<D>::dboxes::* recv_list, + const vector<int> tl2s, int rl2, int ml2, + const iblist dh<D>::dboxes::* send_list, + const CCTK_REAL time) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + for (int i=0; i<(int)tl2s.size(); ++i) { + assert (tl2s.at(i)>=tmin && tl2s.at(i)<=tmax); + } + assert (rl2>=0 && rl2<h.reflevels()); + const int c2=c1; + assert (ml2>=0 && ml2<h.mglevels(rl2,c2)); + + vector<const gdata<D>*> gsrcs(tl2s.size()); + vector<CCTK_REAL> times(tl2s.size()); + for (int i=0; i<(int)gsrcs.size(); ++i) { + assert (rl2<(int)storage.at(tl2s.at(i)-tmin).size()); + assert (c2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).size()); + assert (ml2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).size()); + gsrcs.at(i) = storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).at(ml2); + times.at(i) = t.time(tl2s.at(i),rl2,ml2); + } + + const iblist recv = d.boxes.at(rl1).at(c1).at(ml1).*recv_list; + const iblist send = d.boxes.at(rl2).at(c2).at(ml2).*send_list; + assert (recv.size()==send.size()); + // walk all boxes + for (typename iblist::const_iterator r=recv.begin(), s=send.begin(); + r!=recv.end(); ++r, ++s) { + // (use the send boxes for communication) + // interpolate the content + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->interpolate_from + (state, gsrcs, times, *r, time, + d.prolongation_order_space, prolongation_order_time); + } +} + +// Interpolate regions +template<int D> +void ggf<D>::intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblistvect dh<D>::dboxes::* recv_listvect, + const vector<int> tl2s, int rl2, int ml2, + const iblistvect dh<D>::dboxes::* send_listvect, + const CCTK_REAL time) +{ + assert (tl1>=tmin && tl1<=tmax); + assert (rl1>=0 && rl1<h.reflevels()); + assert (c1>=0 && c1<h.components(rl1)); + assert (ml1>=0 && ml1<h.mglevels(rl1,c1)); + for (int i=0; i<(int)tl2s.size(); ++i) { + assert (tl2s.at(i)>=tmin && tl2s.at(i)<=tmax); + } + assert (rl2>=0 && rl2<h.reflevels()); + // walk all components + for (int c2=0; c2<h.components(rl2); ++c2) { + assert (ml2>=0 && ml2<h.mglevels(rl2,c2)); + + vector<const gdata<D>*> gsrcs(tl2s.size()); + vector<CCTK_REAL> times(tl2s.size()); + for (int i=0; i<(int)gsrcs.size(); ++i) { + assert (rl2<(int)storage.at(tl2s.at(i)-tmin).size()); + assert (c2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).size()); + assert (ml2<(int)storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).size()); + gsrcs.at(i) = storage.at(tl2s.at(i)-tmin).at(rl2).at(c2).at(ml2); + times.at(i) = t.time(tl2s.at(i),rl2,ml2); + } + + const iblist recv = (d.boxes.at(rl1).at(c1).at(ml1).*recv_listvect).at(c2); + const iblist send = (d.boxes.at(rl2).at(c2).at(ml2).*send_listvect).at(c1); + assert (recv.size()==send.size()); + // walk all boxes + for (typename iblist::const_iterator r=recv.begin(), s=send.begin(); + r!=recv.end(); ++r, ++s) { + // (use the send boxes for communication) + // interpolate the content + storage.at(tl1-tmin).at(rl1).at(c1).at(ml1)->interpolate_from + (state, gsrcs, times, *r, time, + d.prolongation_order_space, prolongation_order_time); + } + } +} + + + +// Copy a component from the next time level +template<int D> +void ggf<D>::copy (comm_state<D>& state, int tl, int rl, int c, int ml) +{ + // Copy + copycat (state, + tl ,rl,c,ml, &dh<D>::dboxes::exterior, + tl+1,rl, ml, &dh<D>::dboxes::exterior); +} + +// Synchronise the boundaries a component +template<int D> +void ggf<D>::sync (comm_state<D>& state, int tl, int rl, int c, int ml) +{ + // Copy + copycat (state, + tl,rl,c,ml, &dh<D>::dboxes::recv_sync, + tl,rl, ml, &dh<D>::dboxes::send_sync); +} + +// Prolongate the boundaries of a component +template<int D> +void ggf<D>::ref_bnd_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, + CCTK_REAL time) +{ + // Interpolate + assert (rl>=1); + if (transport_operator == op_none) return; + vector<int> tl2s; + // Interpolation in time + assert (tmax-tmin+1 >= prolongation_order_time+1); + tl2s.resize(prolongation_order_time+1); + for (int i=0; i<=prolongation_order_time; ++i) tl2s.at(i) = tmax - i; + intercat (state, + tl ,rl ,c,ml, &dh<D>::dboxes::recv_ref_bnd_coarse, + tl2s,rl-1, ml, &dh<D>::dboxes::send_ref_bnd_fine, + time); +} + +// Restrict a multigrid level +template<int D> +void ggf<D>::mg_restrict (comm_state<D>& state, + int tl, int rl, int c, int ml, + CCTK_REAL time) +{ + // Require same times + assert (abs(t.get_time(rl,ml) - t.get_time(rl,ml-1)) + <= 1.0e-8 * abs(t.get_time(rl,ml))); + const vector<int> tl2s(1,tl); + intercat (state, + tl ,rl,c,ml, &dh<D>::dboxes::recv_mg_coarse, + tl2s,rl, ml-1, &dh<D>::dboxes::send_mg_fine, + time); +} + +// Prolongate a multigrid level +template<int D> +void ggf<D>::mg_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, + CCTK_REAL time) +{ + // Require same times + assert (abs(t.get_time(rl,ml) - t.get_time(rl,ml+1)) + <= 1.0e-8 * abs(t.get_time(rl,ml))); + const vector<int> tl2s(1,tl); + intercat (state, + tl ,rl,c,ml, &dh<D>::dboxes::recv_mg_coarse, + tl2s,rl, ml+1, &dh<D>::dboxes::send_mg_fine, + time); +} + +// Restrict a refinement level +template<int D> +void ggf<D>::ref_restrict (comm_state<D>& state, + int tl, int rl, int c, int ml, + CCTK_REAL time) +{ + // Require same times + assert (abs(t.get_time(rl,ml) - t.get_time(rl+1,ml)) + <= 1.0e-8 * abs(t.get_time(rl,ml))); + if (transport_operator == op_none) return; + const vector<int> tl2s(1,tl); + intercat (state, + tl ,rl ,c,ml, &dh<D>::dboxes::recv_ref_fine, + tl2s,rl+1, ml, &dh<D>::dboxes::send_ref_coarse, + time); +} + +// Prolongate a refinement level +template<int D> +void ggf<D>::ref_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, + CCTK_REAL time) +{ + assert (rl>=1); + if (transport_operator == op_none) return; + vector<int> tl2s; + // Interpolation in time + assert (tmax-tmin+1 >= prolongation_order_time+1); + tl2s.resize(prolongation_order_time+1); + for (int i=0; i<=prolongation_order_time; ++i) tl2s.at(i) = tmax - i; + intercat (state, + tl ,rl ,c,ml, &dh<D>::dboxes::recv_ref_coarse, + tl2s,rl-1, ml, &dh<D>::dboxes::send_ref_fine, + time); +} + + + +template class ggf<3>; diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh new file mode 100644 index 000000000..b6a551cf3 --- /dev/null +++ b/Carpet/CarpetLib/src/ggf.hh @@ -0,0 +1,225 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/ggf.hh,v 1.25 2004/08/07 19:47:11 schnetter Exp $ + +#ifndef GGF_HH +#define GGF_HH + +#include <assert.h> + +#include <iostream> +#include <string> +#include <vector> + +#include "cctk.h" + +#include "defs.hh" +#include "dh.hh" +#include "gdata.hh" +#include "gh.hh" +#include "th.hh" + +using namespace std; + + + +// Forward declaration +template<int D> class ggf; + +// Output +template<int D> +ostream& operator<< (ostream& os, const ggf<D>& f); + + + +// A generic grid function without type information +template<int D> +class ggf { + + // Types + + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + typedef bboxset<int,D> ibset; + typedef list<ibbox> iblist; + typedef vector<iblist> iblistvect; + + typedef gdata<D>* tdata; // data ... + typedef vector<tdata> mdata; // ... for each multigrid level + typedef vector<mdata> cdata; // ... for each component + typedef vector<cdata> rdata; // ... for each refinement level + typedef vector<rdata> fdata; // ... for each time level + +public: // should be readonly + + // Fields + int varindex; // Cactus variable index + operator_type transport_operator; + + th<D> &t; // time hierarchy + int tmin, tmax; // timelevels + int prolongation_order_time; // order of temporal prolongation operator + + gh<D> &h; // grid hierarchy + dh<D> &d; // data hierarchy + +protected: + fdata storage; // storage + +public: + int vectorlength; // vector length + int vectorindex; // index of *this + ggf* vectorleader; // first vector element + +private: + fdata oldstorage; + +public: + + // Constructors + ggf (const int varindex, const operator_type transport_operator, + th<D>& t, dh<D>& d, + const int tmin, const int tmax, + const int prolongation_order_time, + const int vectorlength, const int vectorindex, + ggf* const vectorleader); + + // Destructors + virtual ~ggf (); + + // Comparison + bool operator== (const ggf<D>& f) const; + + + + // Modifiers + // void recompose (); + void recompose_crop (); + void recompose_allocate (int rl); + void recompose_fill (comm_state<D>& state, int rl, bool do_prolongate); + void recompose_free (int rl); + void recompose_bnd_prolongate (comm_state<D>& state, int rl, bool do_prolongate); + void recompose_sync (comm_state<D>& state, int rl, bool do_prolongate); + + // Cycle the time levels by rotating the data sets + void cycle (int rl, int c, int ml); + + // Flip the time levels by exchanging the data sets + void flip (int rl, int c, int ml); + + + + // Helpers + +protected: + + virtual gdata<D>* typed_data (int tl, int rl, int c, int ml) = 0; + + + + // Operations + +protected: + + // Copy a region + void copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const ibbox dh<D>::dboxes::* recv_list, + int tl2, int rl2, int ml2, + const ibbox dh<D>::dboxes::* send_list); + + // Copy regions + void copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblist dh<D>::dboxes::* recv_list, + int tl2, int rl2, int ml2, + const iblist dh<D>::dboxes::* send_list); + + // Copy regions + void copycat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblistvect dh<D>::dboxes::* recv_listvect, + int tl2, int rl2, int ml2, + const iblistvect dh<D>::dboxes::* send_listvect); + + // Interpolate a region + void intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const ibbox dh<D>::dboxes::* recv_list, + const vector<int> tl2s, int rl2, int ml2, + const ibbox dh<D>::dboxes::* send_list, + CCTK_REAL time); + + // Interpolate regions + void intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblist dh<D>::dboxes::* recv_list, + const vector<int> tl2s, int rl2, int ml2, + const iblist dh<D>::dboxes::* send_list, + CCTK_REAL time); + + // Interpolate regions + void intercat (comm_state<D>& state, + int tl1, int rl1, int c1, int ml1, + const iblistvect dh<D>::dboxes::* recv_listvect, + const vector<int> tl2s, int rl2, int ml2, + const iblistvect dh<D>::dboxes::* send_listvect, + CCTK_REAL time); + + + +public: + + // The grid boundaries have to be updated after calling mg_restrict, + // mg_prolongate, ref_restrict, or ref_prolongate. + + // "Updating" means here that the boundaries have to be + // synchronised. They don't need to be prolongated. + + // Copy a component from the next time level + void copy (comm_state<D>& state, int tl, int rl, int c, int ml); + + // Synchronise the boundaries of a component + void sync (comm_state<D>& state, int tl, int rl, int c, int ml); + + // Prolongate the boundaries of a component + void ref_bnd_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, CCTK_REAL time); + + // Restrict a multigrid level + void mg_restrict (comm_state<D>& state, + int tl, int rl, int c, int ml, CCTK_REAL time); + + // Prolongate a multigrid level + void mg_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, CCTK_REAL time); + + // Restrict a refinement level + void ref_restrict (comm_state<D>& state, + int tl, int rl, int c, int ml, CCTK_REAL time); + + // Prolongate a refinement level + void ref_prolongate (comm_state<D>& state, + int tl, int rl, int c, int ml, CCTK_REAL time); + + + + // Access to the data + virtual const gdata<D>* operator() (int tl, int rl, int c, int ml) const = 0; + + virtual gdata<D>* operator() (int tl, int rl, int c, int ml) = 0; + + + + // Output + virtual ostream& output (ostream& os) const = 0; +}; + + + +template<int D> +inline ostream& operator<< (ostream& os, const ggf<D>& f) { + return f.output(os); +} + + + +#endif // GGF_HH diff --git a/Carpet/CarpetLib/src/gh.cc b/Carpet/CarpetLib/src/gh.cc new file mode 100644 index 000000000..32df39bf0 --- /dev/null +++ b/Carpet/CarpetLib/src/gh.cc @@ -0,0 +1,240 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.cc,v 1.29 2004/08/07 19:47:11 schnetter Exp $ + +#include <assert.h> +#include <stdlib.h> +#include <iostream> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "defs.hh" +#include "dh.hh" +#include "th.hh" + +#include "gh.hh" + +using namespace std; + + + + // Constructors +template<int D> +gh<D>::gh (const int reffact, const centering refcent, + const int mgfact, const centering mgcent, + const ibbox baseextent) + : reffact(reffact), refcent(refcent), + mgfact(mgfact), mgcent(mgcent), + baseextent(baseextent) +{ +} + +// Destructors +template<int D> +gh<D>::~gh () { } + +// Modifiers +template<int D> +void gh<D>::recompose (const rexts& exts, + const rbnds& outer_bounds, + const rprocs& procs, + const bool do_prolongate) +{ + DECLARE_CCTK_PARAMETERS; + + extents = exts; + outer_boundaries = outer_bounds; + processors = procs; + + // Consistency checks + + // nota bene: there might be 0 refinement levels. + + // Check processor number consistency + for (int rl=0; rl<reflevels(); ++rl) { + assert (processors.size() == extents.size()); + assert (outer_boundaries.size() == extents.size()); + for (int c=0; c<components(rl); ++c) { + assert (processors.at(rl).size() == extents.at(rl).size()); + assert (outer_boundaries.at(rl).size() == extents.at(rl).size()); + } + } + + // Check multigrid consistency + for (int rl=0; rl<reflevels(); ++rl) { + for (int c=0; c<components(rl); ++c) { + assert (mglevels(rl,c)>0); + for (int ml=1; ml<mglevels(rl,c); ++ml) { + assert (all(extents.at(rl).at(c).at(ml).stride() + == ivect(mgfact) * extents.at(rl).at(c).at(ml-1).stride())); + // TODO: put the check back in, taking outer boundaries into + // account +#if 0 + assert (extents.at(rl).at(c).at(ml) + .contracted_for(extents.at(rl).at(c).at(ml-1)) + .is_contained_in(extents.at(rl).at(c).at(ml-1))); +#endif + } + } + } + + // Check component consistency + for (int rl=0; rl<reflevels(); ++rl) { + assert (components(rl)>0); + for (int c=0; c<components(rl); ++c) { + for (int ml=0; ml<mglevels(rl,c); ++ml) { + assert (all(extents.at(rl).at(c).at(ml).stride() + == extents.at(rl).at(0).at(ml).stride())); + assert (extents.at(rl).at(c).at(ml).is_aligned_with(extents.at(rl).at(0).at(ml))); + for (int cc=c+1; cc<components(rl); ++cc) { + assert ((extents.at(rl).at(c).at(ml) & extents.at(rl).at(cc).at(ml)).empty()); + } + } + } + } + + // Check base grid extent + if (reflevels()>0) { + for (int c=0; c<components(0); ++c) { + // TODO: put the check back in, taking outer boundaries into + // account +#if 0 + assert (extents.at(0).at(c).at(0).is_contained_in(baseextent)); +#endif + } + } + + // Check refinement levels + for (int rl=1; rl<reflevels(); ++rl) { + assert (all(extents.at(rl-1).at(0).at(0).stride() + == ivect(reffact) * extents.at(rl).at(0).at(0).stride())); + // Check contained-ness: + // first take all coarse grids ... + bboxset<int,D> all; + for (int c=0; c<components(rl-1); ++c) { + all |= extents.at(rl-1).at(c).at(0); + } + // ... remember their size ... + const int sz = all.size(); + // ... then add the coarsified fine grids ... + for (int c=0; c<components(rl); ++c) { + all |= extents.at(rl).at(c).at(0).contracted_for(extents.at(rl-1).at(0).at(0)); + } + // ... and then check the sizes: + assert (all.size() == sz); + } + + // Calculate base extents of all levels + bases.resize(reflevels()); + for (int rl=0; rl<reflevels(); ++rl) { + if (components(rl)==0) { + bases.at(rl).resize(0); + } else { + bases.at(rl).resize(mglevels(rl,0)); + for (int ml=0; ml<mglevels(rl,0); ++ml) { + bases.at(rl).at(ml) = ibbox(); + for (int c=0; c<components(rl); ++c) { + bases.at(rl).at(ml) + = bases.at(rl).at(ml).expanded_containing(extents.at(rl).at(c).at(ml)); + } + } + } + } + + if (output_bboxes) { + for (int rl=0; rl<reflevels(); ++rl) { + for (int c=0; c<components(rl); ++c) { + for (int ml=0; ml<mglevels(rl,c); ++ml) { + cout << endl; + cout << "gh bboxes:" << endl; + cout << "rl=" << rl << " c=" << c << " ml=" << ml << endl; + cout << "extent=" << extents.at(rl).at(c).at(ml) << endl; + cout << "outer_boundary=" << outer_boundaries.at(rl).at(c) << endl; + cout << "processor=" << processors.at(rl).at(c) << endl; + } + } + } + for (int rl=0; rl<reflevels(); ++rl) { + if (components(rl)>0) { + for (int ml=0; ml<mglevels(rl,0); ++ml) { + cout << endl; + cout << "gh bases:" << endl; + cout << "rl=" << rl << " ml=" << ml << endl; + cout << "base=" << bases.at(rl).at(ml) << endl; + } + } + } + } + + // Recompose the other hierarchies + + for (typename list<th<D>*>::iterator t=ths.begin(); t!=ths.end(); ++t) { + (*t)->recompose(); + } + + for (typename list<dh<D>*>::iterator d=dhs.begin(); d!=dhs.end(); ++d) { + (*d)->recompose (do_prolongate); + } +} + + + +// Accessors +template<int D> +int gh<D>::local_components (const int rl) const { + int lc = 0; + for (int c=0; c<components(rl); ++c) { + if (is_local(rl,c)) ++lc; + } + return lc; +} + + + +// Time hierarchy management +template<int D> +void gh<D>::add (th<D>* t) { + ths.push_back(t); +} + +template<int D> +void gh<D>::remove (th<D>* t) { + ths.remove(t); +} + + + +// Data hierarchy management +template<int D> +void gh<D>::add (dh<D>* d) { + dhs.push_back(d); +} + +template<int D> +void gh<D>::remove (dh<D>* d) { + dhs.remove(d); +} + + + +template<int D> +ostream& gh<D>::output (ostream& os) const { + os << "gh<" << D << ">:" + << "reffactor=" << reffact << ",refcentering=" << refcent << "," + << "mgfactor=" << mgfact << ",mgcentering=" << mgcent << "," + << "extents=" << extents << "," + << "outer_boundaries=" << outer_boundaries << "," + << "processors=" << processors << "," + << "dhs={"; + int cnt=0; + for (typename list<dh<D>*>::const_iterator d = dhs.begin(); + d != dhs.end(); ++d) { + if (cnt++) os << ","; + (*d)->output(os); + } + os << "}"; + return os; +} + + + +template class gh<3>; diff --git a/Carpet/CarpetLib/src/gh.hh b/Carpet/CarpetLib/src/gh.hh new file mode 100644 index 000000000..edf149000 --- /dev/null +++ b/Carpet/CarpetLib/src/gh.hh @@ -0,0 +1,142 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/gh.hh,v 1.18 2004/08/07 19:47:11 schnetter Exp $ + +#ifndef GH_HH +#define GH_HH + +#include <assert.h> + +#include <iostream> +#include <list> +#include <vector> + +#include "bbox.hh" +#include "defs.hh" +#include "dist.hh" +#include "vect.hh" + +using namespace std; + + + +// Forward declaration +template<int D> class dh; +template<int D> class th; +template<int D> class gh; + +// Output +template<int D> +ostream& operator<< (ostream& os, const gh<D>& h); + + + +// A refinement hierarchy, where higher levels are finer than the base +// level. The extents do not include ghost zones. +template<int D> +class gh { + +public: + + // Types + typedef vect<int,D> ivect; + typedef bbox<int,D> ibbox; + + typedef vect<vect<bool,2>,D> bvect; + + typedef vector<ibbox> mexts; // ... for each multigrid level + typedef vector<mexts> cexts; // ... for each component + typedef vector<cexts> rexts; // ... for each refinement level + + typedef vector<bvect> cbnds; // ... for each component + typedef vector<cbnds> rbnds; // ... for each refinement level + + typedef vector<int> cprocs; // ... for each component + typedef vector<cprocs> rprocs; // ... for each refinement level + +public: // should be readonly + + // Fields + int reffact; // refinement factor + centering refcent; // vertex or cell centered + + int mgfact; // default multigrid factor + centering mgcent; // default (vertex or cell centered) + + list<th<D>*> ths; // list of all time hierarchies + + ibbox baseextent; + vector<vector<ibbox> > bases; // [rl][ml] + + // TODO: invent structure for this + rexts extents; // extents of all grids + rbnds outer_boundaries; // boundary descriptions of all grids + rprocs processors; // processor numbers of all grids + + list<dh<D>*> dhs; // list of all data hierarchies + +public: + + // Constructors + gh (const int reffact, const centering refcent, + const int mgfact, const centering mgcent, + const ibbox baseextent); + + // Destructors + virtual ~gh (); + + // Modifiers + void recompose (const rexts& exts, const rbnds& outer_bounds, + const rprocs& procs, + const bool do_prolongate); + + // Accessors + int reflevels () const { + return (int)extents.size(); + } + + int components (const int rl) const { + return (int)extents.at(rl).size(); + } + + int mglevels (const int rl, const int c) const { + return (int)extents.at(rl).at(c).size(); + } + + bvect outer_boundary (const int rl, const int c) const { + return outer_boundaries.at(rl).at(c); + } + + int proc (const int rl, const int c) const { + return processors.at(rl).at(c); + } + + bool is_local (const int rl, const int c) const { + int rank; + MPI_Comm_rank (dist::comm, &rank); + return proc(rl,c) == rank; + } + + int local_components (const int rl) const; + + // Time hierarchy management + void add (th<D>* t); + void remove (th<D>* t); + + // Data hierarchy management + void add (dh<D>* d); + void remove (dh<D>* d); + + // Output + virtual ostream& output (ostream& os) const; +}; + + + +template<int D> +inline ostream& operator<< (ostream& os, const gh<D>& h) { + h.output(os); + return os; +} + + + +#endif // GH_HH diff --git a/Carpet/CarpetLib/src/instantiate b/Carpet/CarpetLib/src/instantiate new file mode 100644 index 000000000..1f4e2d6d7 --- /dev/null +++ b/Carpet/CarpetLib/src/instantiate @@ -0,0 +1,178 @@ +// Instantiate templates for all available types -*-C++-*- +// (C) 2001 Erik Schnetter <schnetter@uni-tuebingen.de> + +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/instantiate,v 1.10 2004/03/01 21:35:13 schnetter Exp $ + +// Usage: +// Define the macro INSTANTIATE(T) to instantiate for the type T, +// then include this file, +// then undefine the macro INSTANTIATE. + + + +// Decide which types to instantiate + +#ifdef CARPET_ALL +# undef CARPET_BYTE +# undef CARPET_INT +# undef CARPET_REAL +# undef CARPET_COMPLEX +# define CARPET_BYTE +# define CARPET_INT +# define CARPET_REAL +# define CARPET_COMPLEX +#endif + +#ifdef CARPET_ALL_INT +# undef CARPET_INT1 +# undef CARPET_INT2 +# undef CARPET_INT4 +# undef CARPET_INT8 +# define CARPET_INT1 +# define CARPET_INT2 +# define CARPET_INT4 +# define CARPET_INT8 +#endif + +#ifdef CARPET_ALL_REAL +# undef CARPET_REAL4 +# undef CARPET_REAL8 +# undef CARPET_REAL16 +# define CARPET_REAL4 +# define CARPET_REAL8 +# define CARPET_REAL16 +#endif + +#ifdef CARPET_ALL_COMPLEX +# undef CARPET_COMPLEX8 +# undef CARPET_COMPLEX16 +# undef CARPET_COMPLEX32 +# define CARPET_COMPLEX8 +# define CARPET_COMPLEX16 +# define CARPET_COMPLEX32 +#endif + +#if !defined(CARPET_BYTE) && !defined(CARPET_INT) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) +// Assume the user just wants INT, REAL, and COMPLEX +# undef CARPET_INT +# define CARPET_INT +# undef CARPET_REAL +# define CARPET_REAL +# undef CARPET_COMPLEX +# define CARPET_COMPLEX +#endif + +#ifdef CARPET_INT +# ifdef CCTK_INTEGER_PRECISION_1 +# undef CARPET_INT1 +# define CARPET_INT1 +# endif +# ifdef CCTK_INTEGER_PRECISION_2 +# undef CARPET_INT2 +# define CARPET_INT2 +# endif +# ifdef CCTK_INTEGER_PRECISION_4 +# undef CARPET_INT4 +# define CARPET_INT4 +# endif +# ifdef CCTK_INTEGER_PRECISION_8 +# undef CARPET_INT8 +# define CARPET_INT8 +# endif +#endif +#ifdef CARPET_REAL +# ifdef CCTK_REAL_PRECISION_4 +# undef CARPET_REAL4 +# define CARPET_REAL4 +# endif +# ifdef CCTK_REAL_PRECISION_8 +# undef CARPET_REAL8 +# define CARPET_REAL8 +# endif +# ifdef CCTK_REAL_PRECISION_16 +# undef CARPET_REAL16 +# define CARPET_REAL16 +# endif +#endif +#ifdef CARPET_COMPLEX +# ifdef CCTK_REAL_PRECISION_4 +# undef CARPET_COMPLEX8 +# define CARPET_COMPLEX8 +# endif +# ifdef CCTK_REAL_PRECISION_8 +# undef CARPET_COMPLEX16 +# define CARPET_COMPLEX16 +# endif +# ifdef CCTK_REAL_PRECISION_16 +# undef CARPET_COMPLEX32 +# define CARPET_COMPLEX32 +# endif +#endif + + + +// // Check +// #if !defined(CARPET_BYTE) && !defined(CARPET_INT1) && !defined(CARPET_INT2) && !defined(CARPET_INT4) && !defined(CARPET_INT8) && !defined(CARPET_REAL4) && !defined(CARPET_REAL8) && !defined(CARPET_REAL16) && !defined(CARPET_COMPLEX8) && !defined(CARPET_COMPLEX16) && !defined(CARPET_COMPLEX32) +// # error "You have not defined which grid function types to instantiate." +// #endif + + + +// Instantiate the desired types + +#ifdef CARPET_BYTE +INSTANTIATE(CCTK_BYTE) +#endif + +#ifdef CARPET_INT1 +# ifdef CCTK_INT1 +INSTANTIATE(CCTK_INT1) +# endif +#endif +#ifdef CARPET_INT2 +# ifdef CCTK_INT2 +INSTANTIATE(CCTK_INT2) +# endif +#endif +#ifdef CARPET_INT4 +# ifdef CCTK_INT4 +INSTANTIATE(CCTK_INT4) +# endif +#endif +#ifdef CARPET_INT8 +# ifdef CCTK_INT8 +INSTANTIATE(CCTK_INT8) +# endif +#endif + +#ifdef CARPET_REAL4 +# ifdef CCTK_REAL4 +INSTANTIATE(CCTK_REAL4) +# endif +#endif +#ifdef CARPET_REAL8 +# ifdef CCTK_REAL8 +INSTANTIATE(CCTK_REAL8) +# endif +#endif +#ifdef CARPET_REAL16 +# ifdef CCTK_REAL16 +INSTANTIATE(CCTK_REAL16) +# endif +#endif + +#ifdef CARPET_COMPLEX8 +# ifdef CCTK_REAL4 +INSTANTIATE(CCTK_COMPLEX8) +# endif +#endif +#ifdef CARPET_COMPLEX16 +# ifdef CCTK_REAL8 +INSTANTIATE(CCTK_COMPLEX16) +# endif +#endif +#ifdef CARPET_COMPLEX32 +# ifdef CCTK_REAL16 +INSTANTIATE(CCTK_COMPLEX32) +# endif +#endif diff --git a/Carpet/CarpetLib/src/make.code.defn b/Carpet/CarpetLib/src/make.code.defn new file mode 100644 index 000000000..4bfcaec4f --- /dev/null +++ b/Carpet/CarpetLib/src/make.code.defn @@ -0,0 +1,47 @@ +# Main make.code.defn file for thorn CarpetLib -*-Makefile-*- +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/make.code.defn,v 1.13 2004/03/03 15:30:40 hawke Exp $ + +# Source files in this directory +SRCS = bbox.cc \ + bboxset.cc \ + data.cc \ + defs.cc \ + dh.cc \ + dist.cc \ + gdata.cc \ + gf.cc \ + ggf.cc \ + gh.cc \ + th.cc \ + vect.cc \ + checkindex.F77 \ + copy_3d_complex16.F77 \ + copy_3d_int4.F77 \ + copy_3d_real8.F77 \ + prolongate_3d_real8.F77 \ + prolongate_3d_real8_rf2.F77 \ + prolongate_3d_real8_o3.F77 \ + prolongate_3d_real8_o3_rf2.F77 \ + prolongate_3d_real8_o5.F77 \ + prolongate_3d_real8_2tl.F77 \ + prolongate_3d_real8_2tl_rf2.F77 \ + prolongate_3d_real8_2tl_o3.F77 \ + prolongate_3d_real8_2tl_o3_rf2.F77 \ + prolongate_3d_real8_2tl_o5.F77 \ + prolongate_3d_real8_3tl.F77 \ + prolongate_3d_real8_3tl_rf2.F77 \ + prolongate_3d_real8_3tl_o3.F77 \ + prolongate_3d_real8_3tl_o3_rf2.F77 \ + prolongate_3d_real8_3tl_o5.F77 \ + prolongate_3d_real8_minmod.F77 \ + prolongate_3d_real8_2tl_minmod.F77 \ + prolongate_3d_real8_3tl_minmod.F77 \ + prolongate_3d_real8_eno.F90 \ + prolongate_3d_real8_2tl_eno.F90 \ + prolongate_3d_real8_3tl_eno.F90 \ + restrict_3d_real8.F77 \ + restrict_3d_real8_rf2.F77 + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetLib/src/make.configuration.defn b/Carpet/CarpetLib/src/make.configuration.defn new file mode 100644 index 000000000..a70db23a6 --- /dev/null +++ b/Carpet/CarpetLib/src/make.configuration.defn @@ -0,0 +1,7 @@ +# Main make.configuration.defn file for thorn CarpetLib -*-Makefile-*- +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/make.configuration.defn,v 1.5 2004/04/29 22:15:06 tradke Exp $ + +# Ensure that MPI is available +ifeq ($(strip $(HAVE_MPI)), ) + $(error Configuration error: The Carpet thorns require MPI. Please configure with MPI, or remove the Carpet thorns from the ThornList.) +endif diff --git a/Carpet/CarpetLib/src/operators.hh b/Carpet/CarpetLib/src/operators.hh new file mode 100644 index 000000000..b65ff23cb --- /dev/null +++ b/Carpet/CarpetLib/src/operators.hh @@ -0,0 +1,8 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/operators.hh,v 1.2 2004/03/03 15:30:40 hawke Exp $ + +#ifndef OPERATORS_HH +#define OPERATORS_HH + +enum operator_type { op_error, op_none, op_Lagrange, op_TVD, op_ENO }; + +#endif // OPERATORS_HH diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8.F77 new file mode 100644 index 000000000..8eae50332 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8.F77 @@ -0,0 +1,193 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8.F77,v 1.11 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(2), jfac(2), kfac(2) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over fine region + dstdiv = one / (dstifac * dstjfac * dstkfac) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk-dstkfac) * (-1) + kfac(2) = (fk ) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj-dstjfac) * (-1) + jfac(2) = (fj ) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi-dstifac) * (-1) + ifac(2) = (fi ) * 1 + + res = 0 + + do kk=1,2 + do jj=1,2 + do ii=1,2 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii, j0+jj, k0+kk, \ + srciext,srcjext,srckext, "source") + res = res + fac * src(i0+ii, j0+jj, k0+kk) + end if + + end do + end do + end do + +c$$$ fac = ifac(1) * jfac(1) * kfac(1) +c$$$ if (fac.ne.0) res = res + fac * src(i0+1, j0+1, k0+1) +c$$$ +c$$$ fac = ifac(2) * jfac(1) * kfac(1) +c$$$ if (fac.ne.0) res = res + fac * src(i0+2, j0+1, k0+1) +c$$$ +c$$$ fac = ifac(1) * jfac(2) * kfac(1) +c$$$ if (fac.ne.0) res = res + fac * src(i0+1, j0+2, k0+1) +c$$$ +c$$$ fac = ifac(2) * jfac(2) * kfac(1) +c$$$ if (fac.ne.0) res = res + fac * src(i0+2, j0+2, k0+1) +c$$$ +c$$$ fac = ifac(1) * jfac(1) * kfac(2) +c$$$ if (fac.ne.0) res = res + fac * src(i0+1, j0+1, k0+2) +c$$$ +c$$$ fac = ifac(2) * jfac(1) * kfac(2) +c$$$ if (fac.ne.0) res = res + fac * src(i0+2, j0+1, k0+2) +c$$$ +c$$$ fac = ifac(1) * jfac(2) * kfac(2) +c$$$ if (fac.ne.0) res = res + fac * src(i0+1, j0+2, k0+2) +c$$$ +c$$$ fac = ifac(2) * jfac(2) * kfac(2) +c$$$ if (fac.ne.0) res = res + fac * src(i0+2, j0+2, k0+2) + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl.F77 new file mode 100644 index 000000000..8fd69178f --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl.F77 @@ -0,0 +1,193 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl.F77,v 1.12 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_2tl ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(2), jfac(2), kfac(2) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Linear (first order) interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + +c Loop over fine region + dstdiv = one / (dstifac * dstjfac * dstkfac) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk-dstkfac) * (-1) + kfac(2) = (fk ) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj-dstjfac) * (-1) + jfac(2) = (fj ) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi-dstifac) * (-1) + ifac(2) = (fi ) * 1 + + res = 0 + + do kk=1,2 + do jj=1,2 + do ii=1,2 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii, j0+jj, k0+kk, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii, j0+jj, k0+kk) + $ + fac * s2fac * src2(i0+ii, j0+jj, k0+kk) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_eno.F90 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_eno.F90 new file mode 100644 index 000000000..03a151cdd --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_eno.F90 @@ -0,0 +1,302 @@ +!!$ -*-Fortran-*- +!!$ $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_eno.F90,v 1.1 2004/03/03 15:30:40 hawke Exp $ + +#include "cctk.h" + + +!!$ This routine performs "ENO" prolongation. It is intended to be used +!!$ with GFs that are not expected to be smooth, particularly those +!!$ that must also obey certain constraints. The obvious example is the +!!$ density in hydrodynamics, which may be discontinuous yet must be +!!$ strictly positive. +!!$ +!!$ To ensure that this prolongation method is used you should add the +!!$ tag +!!$ +!!$ tags='Prolongation="ENO"' +!!$ +!!$ to the interface.ccl on the appropriate group. +!!$ +!!$ This applies ENO2 type limiting to the slope, checking over the +!!$ entire coarse grid cell for the least oscillatory quadratic in each +!!$ direction. If the slope changes sign over the extrema, linear +!!$ interpolation is used instead. +!!$ +!!$ The actual eno1d function is defined in the routine +!!$ +!!$ prolongate_3d_real8_eno.F77 + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ +if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ +end if + +subroutine prolongate_3d_real8_2tl_eno (src1, t1, src2, t2, & + srciext, srcjext, srckext, dst, t, dstiext, dstjext, dstkext, & + srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t + +!!$ bbox(:,1) is lower boundary (inclusive) +!!$ bbox(:,2) is upper boundary (inclusive) +!!$ bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac + + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + CCTK_REAL8, dimension(0:3,0:3) :: tmp1 + CCTK_REAL8, dimension(0:3) :: tmp2 + CCTK_REAL8 :: dsttmp1, dsttmp2 + + external eno1d + CCTK_REAL8 eno1d + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 & + .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) & + .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 & + .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 & + .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +!!$ This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) & + .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) & + .or. regbbox(d,1).lt.dstbbox(d,1) & + .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 & + .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 & + .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 & + .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 & + .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 & + .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + +!!$ Linear (first order) interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + +!!$ Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + +!!$ Where is the fine grid point w.r.t the coarse grid? + + select case (fi + 10*fj + 100*fk) + case (0) +!!$ On a coarse grid point exactly! + + dsttmp1 = src1(i0+1,j0+1,k0+1) + dsttmp2 = src2(i0+1,j0+1,k0+1) + + case (1) +!!$ Interpolate only in x + + dsttmp1 = eno1d(src1(i0:i0+3,j0+1,k0+1)) + dsttmp2 = eno1d(src2(i0:i0+3,j0+1,k0+1)) + + case (10) +!!$ Interpolate only in y + + dsttmp1 = eno1d(src1(i0+1,j0:j0+3,k0+1)) + dsttmp2 = eno1d(src2(i0+1,j0:j0+3,k0+1)) + + case (11) +!!$ Interpolate only in x and y + + do jj = 0, 3 + tmp2(jj) = eno1d(src1(i0:i0+3,j0+jj,k0+1)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + tmp2(jj) = eno1d(src2(i0:i0+3,j0+jj,k0+1)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + case (100) +!!$ Interpolate only in z + + dsttmp1 = eno1d(src1(i0+1,j0+1,k0:k0+3)) + dsttmp2 = eno1d(src2(i0+1,j0+1,k0:k0+3)) + + case (101) +!!$ Interpolate only in x and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src1(i0:i0+3,j0+1,k0+kk)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src2(i0:i0+3,j0+1,k0+kk)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + case (110) +!!$ Interpolate only in y and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src1(i0+1,j0:j0+3,k0+kk)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src2(i0+1,j0:j0+3,k0+kk)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + case (111) +!!$ Interpolate in all of x, y, and z + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src1(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src2(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + case default + call CCTK_WARN(0, "Internal error in ENO prolongation. Should only be used with refinement factor 2!") + end select + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + s1fac * dsttmp1 + s2fac * dsttmp2 + + end do + end do + end do + +end subroutine prolongate_3d_real8_2tl_eno diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_minmod.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_minmod.F77 new file mode 100644 index 000000000..61db42539 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_minmod.F77 @@ -0,0 +1,325 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_minmod.F77,v 1.6 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + +c$$$ This routine performs "TVD" prolongation. It is intended to be used +c$$$ with GFs that are not expected to be smooth, particularly those +c$$$ that must also obey certain constraints. The obvious example is the +c$$$ density in hydrodynamics, which may be discontinuous yet must be +c$$$ strictly positive. +c$$$ +c$$$ To ensure that this prolongation method is used you should add the +c$$$ tag +c$$$ +c$$$ tags='Prolongation="TVD"' +c$$$ +c$$$ to the interface.ccl on the appropriate group. +c$$$ +c$$$ This applies minmod type limiting to the slope, checking over the +c$$$ entire coarse grid cell for the minimum modulus in each direction. +c$$$ +c$$$ The actual minmod function is defined in the routine +c$$$ +c$$$ prolongate_3d_real8_minmod.F77 + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_2tl_minmod ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + external minmod + CCTK_REAL8 minmod + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + CCTK_REAL8 dupw, dloc, slopex(2), slopey(2), slopez(2) + + logical firstloop + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Linear (first order) interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + +c Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + + slopex(1) = zero + slopey(1) = zero + slopez(1) = zero + + firstloop = .true. + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src1(i0+1 ,j0+jj,k0+kk) - src1(i0+0 ,j0+jj,k0+kk) + dloc = src1(i0+2 ,j0+jj,k0+kk) - src1(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex(1) = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex(1) = + $ minmod(slopex(1), half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src1(i0+ii,j0+1 ,k0+kk) - src1(i0+ii,j0+0 ,k0+kk) + dloc = src1(i0+ii,j0+2 ,k0+kk) - src1(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey(1) = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey(1) = + $ minmod(slopey(1), half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + + dupw = src1(i0+ii,j0+jj,k0+1 ) - src1(i0+ii,j0+jj,k0+0 ) + dloc = src1(i0+ii,j0+jj,k0+2 ) - src1(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez(1) = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez(1) = + $ minmod(slopez(1), half * dble(fk) * minmod(dupw,dloc)) + end if + end do + end do + + slopex(2) = zero + slopey(2) = zero + slopez(2) = zero + + firstloop = .true. + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src2(i0+1 ,j0+jj,k0+kk) - src2(i0+0 ,j0+jj,k0+kk) + dloc = src2(i0+2 ,j0+jj,k0+kk) - src2(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex(2) = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex(2) = + $ minmod(slopex(2), half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src2(i0+ii,j0+1 ,k0+kk) - src2(i0+ii,j0+0 ,k0+kk) + dloc = src2(i0+ii,j0+2 ,k0+kk) - src2(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey(2) = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey(2) = + $ minmod(slopey(2), half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + + dupw = src2(i0+ii,j0+jj,k0+1 ) - src2(i0+ii,j0+jj,k0+0 ) + dloc = src2(i0+ii,j0+jj,k0+2 ) - src2(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez(2) = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez(2) = + $ minmod(slopez(2), half * dble(fk) * minmod(dupw,dloc)) + end if + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = + $ s1fac * (src1(i0+1,j0+1,k0+1) + + $ slopex(1) + slopey(1) + slopez(1)) + + $ s2fac * (src2(i0+1,j0+1,k0+1) + + $ slopex(2) + slopey(2) + slopez(2)) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3.F77 new file mode 100644 index 000000000..0f0509cff --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3.F77 @@ -0,0 +1,218 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3.F77,v 1.13 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_2tl_o3 ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Linear (first order) interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + +c Loop over fine region + dstdiv = one / (6*dstifac**3 * 6*dstjfac**3 * 6*dstkfac**3) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (-1) + kfac(2) = (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * 3 + kfac(3) = (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (-3) + kfac(4) = (fk+dstkfac) * (fk ) * (fk- dstkfac) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (-1) + jfac(2) = (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * 3 + jfac(3) = (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (-3) + jfac(4) = (fj+dstjfac) * (fj ) * (fj- dstjfac) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi ) * (fi-dstifac) * (fi-2*dstifac) * (-1) + ifac(2) = (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * 3 + ifac(3) = (fi+dstifac) * (fi ) * (fi-2*dstifac) * (-3) + ifac(4) = (fi+dstifac) * (fi ) * (fi- dstifac) * 1 + + res = 0 + + do kk=1,4 + do jj=1,4 + do ii=1,4 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii-1, j0+jj-1, k0+kk-1, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii-1, j0+jj-1, k0+kk-1) + $ + fac * s2fac * src2(i0+ii-1, j0+jj-1, k0+kk-1) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3_rf2.F77 new file mode 100644 index 000000000..d9d62741b --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3_rf2.F77 @@ -0,0 +1,628 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o3_rf2.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_2tl_o3_rf2 ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + CCTK_REAL8 one, half, fourth, eighth, sixteenth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + parameter (sixteenth = one/16) + CCTK_REAL8 f1, f2, f3, f4 + parameter (f1 = - sixteenth) + parameter (f2 = 9*sixteenth) + parameter (f3 = 9*sixteenth) + parameter (f4 = - sixteenth) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer offsetlo, offsethi + + CCTK_REAL8 s1fac, s2fac + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + CCTK_REAL8 res1, res2 + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff, 2).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, 2).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) time interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + s1fac * src1(is,js,ks) + $ + s2fac * src2(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks, 4,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is-1,js,ks) + f2 * s1fac * src1(is ,js,ks) + $ + f3 * s1fac * src1(is+1,js,ks) + f4 * s1fac * src1(is+2,js,ks) + $ + f1 * s2fac * src2(is-1,js,ks) + f2 * s2fac * src2(is ,js,ks) + $ + f3 * s2fac * src2(is+1,js,ks) + f4 * s2fac * src2(is+2,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks, 1,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is,js-1,ks) + f2 * s1fac * src1(is,js ,ks) + $ + f3 * s1fac * src1(is,js+1,ks) + f4 * s1fac * src1(is,js+2,ks) + $ + f1 * s2fac * src2(is,js-1,ks) + f2 * s2fac * src2(is,js ,ks) + $ + f3 * s2fac * src2(is,js+1,ks) + f4 * s2fac * src2(is,js+2,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks, 4,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is-1,js-1,ks) + $ + f2*f1 * s1fac * src1(is ,js-1,ks) + $ + f3*f1 * s1fac * src1(is+1,js-1,ks) + $ + f4*f1 * s1fac * src1(is+2,js-1,ks) + $ + f1*f2 * s1fac * src1(is-1,js ,ks) + $ + f2*f2 * s1fac * src1(is ,js ,ks) + $ + f3*f2 * s1fac * src1(is+1,js ,ks) + $ + f4*f2 * s1fac * src1(is+2,js ,ks) + $ + f1*f3 * s1fac * src1(is-1,js+1,ks) + $ + f2*f3 * s1fac * src1(is ,js+1,ks) + $ + f3*f3 * s1fac * src1(is+1,js+1,ks) + $ + f4*f3 * s1fac * src1(is+2,js+1,ks) + $ + f1*f4 * s1fac * src1(is-1,js+2,ks) + $ + f2*f4 * s1fac * src1(is ,js+2,ks) + $ + f3*f4 * s1fac * src1(is+1,js+2,ks) + $ + f4*f4 * s1fac * src1(is+2,js+2,ks) + $ + $ + f1*f1 * s2fac * src2(is-1,js-1,ks) + $ + f2*f1 * s2fac * src2(is ,js-1,ks) + $ + f3*f1 * s2fac * src2(is+1,js-1,ks) + $ + f4*f1 * s2fac * src2(is+2,js-1,ks) + $ + f1*f2 * s2fac * src2(is-1,js ,ks) + $ + f2*f2 * s2fac * src2(is ,js ,ks) + $ + f3*f2 * s2fac * src2(is+1,js ,ks) + $ + f4*f2 * s2fac * src2(is+2,js ,ks) + $ + f1*f3 * s2fac * src2(is-1,js+1,ks) + $ + f2*f3 * s2fac * src2(is ,js+1,ks) + $ + f3*f3 * s2fac * src2(is+1,js+1,ks) + $ + f4*f3 * s2fac * src2(is+2,js+1,ks) + $ + f1*f4 * s2fac * src2(is-1,js+2,ks) + $ + f2*f4 * s2fac * src2(is ,js+2,ks) + $ + f3*f4 * s2fac * src2(is+1,js+2,ks) + $ + f4*f4 * s2fac * src2(is+2,js+2,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks-1, 1,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is,js,ks-1) + f2 * s1fac * src1(is,js,ks ) + $ + f3 * s1fac * src1(is,js,ks+1) + f4 * s1fac * src1(is,js,ks+2) + $ + f1 * s2fac * src2(is,js,ks-1) + f2 * s2fac * src2(is,js,ks ) + $ + f3 * s2fac * src2(is,js,ks+1) + f4 * s2fac * src2(is,js,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks-1, 4,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is-1,js,ks-1) + $ + f2*f1 * s1fac * src1(is ,js,ks-1) + $ + f3*f1 * s1fac * src1(is+1,js,ks-1) + $ + f4*f1 * s1fac * src1(is+2,js,ks-1) + $ + f1*f2 * s1fac * src1(is-1,js,ks ) + $ + f2*f2 * s1fac * src1(is ,js,ks ) + $ + f3*f2 * s1fac * src1(is+1,js,ks ) + $ + f4*f2 * s1fac * src1(is+2,js,ks ) + $ + f1*f3 * s1fac * src1(is-1,js,ks+1) + $ + f2*f3 * s1fac * src1(is ,js,ks+1) + $ + f3*f3 * s1fac * src1(is+1,js,ks+1) + $ + f4*f3 * s1fac * src1(is+2,js,ks+1) + $ + f1*f4 * s1fac * src1(is-1,js,ks+2) + $ + f2*f4 * s1fac * src1(is ,js,ks+2) + $ + f3*f4 * s1fac * src1(is+1,js,ks+2) + $ + f4*f4 * s1fac * src1(is+2,js,ks+2) + $ + $ + f1*f1 * s2fac * src2(is-1,js,ks-1) + $ + f2*f1 * s2fac * src2(is ,js,ks-1) + $ + f3*f1 * s2fac * src2(is+1,js,ks-1) + $ + f4*f1 * s2fac * src2(is+2,js,ks-1) + $ + f1*f2 * s2fac * src2(is-1,js,ks ) + $ + f2*f2 * s2fac * src2(is ,js,ks ) + $ + f3*f2 * s2fac * src2(is+1,js,ks ) + $ + f4*f2 * s2fac * src2(is+2,js,ks ) + $ + f1*f3 * s2fac * src2(is-1,js,ks+1) + $ + f2*f3 * s2fac * src2(is ,js,ks+1) + $ + f3*f3 * s2fac * src2(is+1,js,ks+1) + $ + f4*f3 * s2fac * src2(is+2,js,ks+1) + $ + f1*f4 * s2fac * src2(is-1,js,ks+2) + $ + f2*f4 * s2fac * src2(is ,js,ks+2) + $ + f3*f4 * s2fac * src2(is+1,js,ks+2) + $ + f4*f4 * s2fac * src2(is+2,js,ks+2) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks-1, 1,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is,js-1,ks-1) + $ + f2*f1 * s1fac * src1(is,js ,ks-1) + $ + f3*f1 * s1fac * src1(is,js+1,ks-1) + $ + f4*f1 * s1fac * src1(is,js+2,ks-1) + $ + f1*f2 * s1fac * src1(is,js-1,ks ) + $ + f2*f2 * s1fac * src1(is,js ,ks ) + $ + f3*f2 * s1fac * src1(is,js+1,ks ) + $ + f4*f2 * s1fac * src1(is,js+2,ks ) + $ + f1*f3 * s1fac * src1(is,js-1,ks+1) + $ + f2*f3 * s1fac * src1(is,js ,ks+1) + $ + f3*f3 * s1fac * src1(is,js+1,ks+1) + $ + f4*f3 * s1fac * src1(is,js+2,ks+1) + $ + f1*f4 * s1fac * src1(is,js-1,ks+2) + $ + f2*f4 * s1fac * src1(is,js ,ks+2) + $ + f3*f4 * s1fac * src1(is,js+1,ks+2) + $ + f4*f4 * s1fac * src1(is,js+2,ks+2) + $ + $ + f1*f1 * s2fac * src2(is,js-1,ks-1) + $ + f2*f1 * s2fac * src2(is,js ,ks-1) + $ + f3*f1 * s2fac * src2(is,js+1,ks-1) + $ + f4*f1 * s2fac * src2(is,js+2,ks-1) + $ + f1*f2 * s2fac * src2(is,js-1,ks ) + $ + f2*f2 * s2fac * src2(is,js ,ks ) + $ + f3*f2 * s2fac * src2(is,js+1,ks ) + $ + f4*f2 * s2fac * src2(is,js+2,ks ) + $ + f1*f3 * s2fac * src2(is,js-1,ks+1) + $ + f2*f3 * s2fac * src2(is,js ,ks+1) + $ + f3*f3 * s2fac * src2(is,js+1,ks+1) + $ + f4*f3 * s2fac * src2(is,js+2,ks+1) + $ + f1*f4 * s2fac * src2(is,js-1,ks+2) + $ + f2*f4 * s2fac * src2(is,js ,ks+2) + $ + f3*f4 * s2fac * src2(is,js+1,ks+2) + $ + f4*f4 * s2fac * src2(is,js+2,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks-1, 4,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + res1 = + $ + f1*f1*f1 * s1fac * src1(is-1,js-1,ks-1) + $ + f2*f1*f1 * s1fac * src1(is ,js-1,ks-1) + $ + f3*f1*f1 * s1fac * src1(is+1,js-1,ks-1) + $ + f4*f1*f1 * s1fac * src1(is+2,js-1,ks-1) + $ + f1*f2*f1 * s1fac * src1(is-1,js ,ks-1) + $ + f2*f2*f1 * s1fac * src1(is ,js ,ks-1) + $ + f3*f2*f1 * s1fac * src1(is+1,js ,ks-1) + $ + f4*f2*f1 * s1fac * src1(is+2,js ,ks-1) + $ + f1*f3*f1 * s1fac * src1(is-1,js+1,ks-1) + $ + f2*f3*f1 * s1fac * src1(is ,js+1,ks-1) + $ + f3*f3*f1 * s1fac * src1(is+1,js+1,ks-1) + $ + f4*f3*f1 * s1fac * src1(is+2,js+1,ks-1) + $ + f1*f4*f1 * s1fac * src1(is-1,js+2,ks-1) + $ + f2*f4*f1 * s1fac * src1(is ,js+2,ks-1) + $ + f3*f4*f1 * s1fac * src1(is+1,js+2,ks-1) + $ + f4*f4*f1 * s1fac * src1(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * s1fac * src1(is-1,js-1,ks ) + $ + f2*f1*f2 * s1fac * src1(is ,js-1,ks ) + $ + f3*f1*f2 * s1fac * src1(is+1,js-1,ks ) + $ + f4*f1*f2 * s1fac * src1(is+2,js-1,ks ) + $ + f1*f2*f2 * s1fac * src1(is-1,js ,ks ) + $ + f2*f2*f2 * s1fac * src1(is ,js ,ks ) + $ + f3*f2*f2 * s1fac * src1(is+1,js ,ks ) + $ + f4*f2*f2 * s1fac * src1(is+2,js ,ks ) + $ + f1*f3*f2 * s1fac * src1(is-1,js+1,ks ) + $ + f2*f3*f2 * s1fac * src1(is ,js+1,ks ) + $ + f3*f3*f2 * s1fac * src1(is+1,js+1,ks ) + $ + f4*f3*f2 * s1fac * src1(is+2,js+1,ks ) + $ + f1*f4*f2 * s1fac * src1(is-1,js+2,ks ) + $ + f2*f4*f2 * s1fac * src1(is ,js+2,ks ) + $ + f3*f4*f2 * s1fac * src1(is+1,js+2,ks ) + $ + f4*f4*f2 * s1fac * src1(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * s1fac * src1(is-1,js-1,ks+1) + $ + f2*f1*f3 * s1fac * src1(is ,js-1,ks+1) + $ + f3*f1*f3 * s1fac * src1(is+1,js-1,ks+1) + $ + f4*f1*f3 * s1fac * src1(is+2,js-1,ks+1) + $ + f1*f2*f3 * s1fac * src1(is-1,js ,ks+1) + $ + f2*f2*f3 * s1fac * src1(is ,js ,ks+1) + $ + f3*f2*f3 * s1fac * src1(is+1,js ,ks+1) + $ + f4*f2*f3 * s1fac * src1(is+2,js ,ks+1) + $ + f1*f3*f3 * s1fac * src1(is-1,js+1,ks+1) + $ + f2*f3*f3 * s1fac * src1(is ,js+1,ks+1) + $ + f3*f3*f3 * s1fac * src1(is+1,js+1,ks+1) + $ + f4*f3*f3 * s1fac * src1(is+2,js+1,ks+1) + $ + f1*f4*f3 * s1fac * src1(is-1,js+2,ks+1) + $ + f2*f4*f3 * s1fac * src1(is ,js+2,ks+1) + $ + f3*f4*f3 * s1fac * src1(is+1,js+2,ks+1) + $ + f4*f4*f3 * s1fac * src1(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * s1fac * src1(is-1,js-1,ks+2) + $ + f2*f1*f4 * s1fac * src1(is ,js-1,ks+2) + $ + f3*f1*f4 * s1fac * src1(is+1,js-1,ks+2) + $ + f4*f1*f4 * s1fac * src1(is+2,js-1,ks+2) + $ + f1*f2*f4 * s1fac * src1(is-1,js ,ks+2) + $ + f2*f2*f4 * s1fac * src1(is ,js ,ks+2) + $ + f3*f2*f4 * s1fac * src1(is+1,js ,ks+2) + $ + f4*f2*f4 * s1fac * src1(is+2,js ,ks+2) + $ + f1*f3*f4 * s1fac * src1(is-1,js+1,ks+2) + $ + f2*f3*f4 * s1fac * src1(is ,js+1,ks+2) + $ + f3*f3*f4 * s1fac * src1(is+1,js+1,ks+2) + $ + f4*f3*f4 * s1fac * src1(is+2,js+1,ks+2) + $ + f1*f4*f4 * s1fac * src1(is-1,js+2,ks+2) + $ + f2*f4*f4 * s1fac * src1(is ,js+2,ks+2) + $ + f3*f4*f4 * s1fac * src1(is+1,js+2,ks+2) + $ + f4*f4*f4 * s1fac * src1(is+2,js+2,ks+2) + res2 = + $ + f1*f1*f1 * s2fac * src2(is-1,js-1,ks-1) + $ + f2*f1*f1 * s2fac * src2(is ,js-1,ks-1) + $ + f3*f1*f1 * s2fac * src2(is+1,js-1,ks-1) + $ + f4*f1*f1 * s2fac * src2(is+2,js-1,ks-1) + $ + f1*f2*f1 * s2fac * src2(is-1,js ,ks-1) + $ + f2*f2*f1 * s2fac * src2(is ,js ,ks-1) + $ + f3*f2*f1 * s2fac * src2(is+1,js ,ks-1) + $ + f4*f2*f1 * s2fac * src2(is+2,js ,ks-1) + $ + f1*f3*f1 * s2fac * src2(is-1,js+1,ks-1) + $ + f2*f3*f1 * s2fac * src2(is ,js+1,ks-1) + $ + f3*f3*f1 * s2fac * src2(is+1,js+1,ks-1) + $ + f4*f3*f1 * s2fac * src2(is+2,js+1,ks-1) + $ + f1*f4*f1 * s2fac * src2(is-1,js+2,ks-1) + $ + f2*f4*f1 * s2fac * src2(is ,js+2,ks-1) + $ + f3*f4*f1 * s2fac * src2(is+1,js+2,ks-1) + $ + f4*f4*f1 * s2fac * src2(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * s2fac * src2(is-1,js-1,ks ) + $ + f2*f1*f2 * s2fac * src2(is ,js-1,ks ) + $ + f3*f1*f2 * s2fac * src2(is+1,js-1,ks ) + $ + f4*f1*f2 * s2fac * src2(is+2,js-1,ks ) + $ + f1*f2*f2 * s2fac * src2(is-1,js ,ks ) + $ + f2*f2*f2 * s2fac * src2(is ,js ,ks ) + $ + f3*f2*f2 * s2fac * src2(is+1,js ,ks ) + $ + f4*f2*f2 * s2fac * src2(is+2,js ,ks ) + $ + f1*f3*f2 * s2fac * src2(is-1,js+1,ks ) + $ + f2*f3*f2 * s2fac * src2(is ,js+1,ks ) + $ + f3*f3*f2 * s2fac * src2(is+1,js+1,ks ) + $ + f4*f3*f2 * s2fac * src2(is+2,js+1,ks ) + $ + f1*f4*f2 * s2fac * src2(is-1,js+2,ks ) + $ + f2*f4*f2 * s2fac * src2(is ,js+2,ks ) + $ + f3*f4*f2 * s2fac * src2(is+1,js+2,ks ) + $ + f4*f4*f2 * s2fac * src2(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * s2fac * src2(is-1,js-1,ks+1) + $ + f2*f1*f3 * s2fac * src2(is ,js-1,ks+1) + $ + f3*f1*f3 * s2fac * src2(is+1,js-1,ks+1) + $ + f4*f1*f3 * s2fac * src2(is+2,js-1,ks+1) + $ + f1*f2*f3 * s2fac * src2(is-1,js ,ks+1) + $ + f2*f2*f3 * s2fac * src2(is ,js ,ks+1) + $ + f3*f2*f3 * s2fac * src2(is+1,js ,ks+1) + $ + f4*f2*f3 * s2fac * src2(is+2,js ,ks+1) + $ + f1*f3*f3 * s2fac * src2(is-1,js+1,ks+1) + $ + f2*f3*f3 * s2fac * src2(is ,js+1,ks+1) + $ + f3*f3*f3 * s2fac * src2(is+1,js+1,ks+1) + $ + f4*f3*f3 * s2fac * src2(is+2,js+1,ks+1) + $ + f1*f4*f3 * s2fac * src2(is-1,js+2,ks+1) + $ + f2*f4*f3 * s2fac * src2(is ,js+2,ks+1) + $ + f3*f4*f3 * s2fac * src2(is+1,js+2,ks+1) + $ + f4*f4*f3 * s2fac * src2(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * s2fac * src2(is-1,js-1,ks+2) + $ + f2*f1*f4 * s2fac * src2(is ,js-1,ks+2) + $ + f3*f1*f4 * s2fac * src2(is+1,js-1,ks+2) + $ + f4*f1*f4 * s2fac * src2(is+2,js-1,ks+2) + $ + f1*f2*f4 * s2fac * src2(is-1,js ,ks+2) + $ + f2*f2*f4 * s2fac * src2(is ,js ,ks+2) + $ + f3*f2*f4 * s2fac * src2(is+1,js ,ks+2) + $ + f4*f2*f4 * s2fac * src2(is+2,js ,ks+2) + $ + f1*f3*f4 * s2fac * src2(is-1,js+1,ks+2) + $ + f2*f3*f4 * s2fac * src2(is ,js+1,ks+2) + $ + f3*f3*f4 * s2fac * src2(is+1,js+1,ks+2) + $ + f4*f3*f4 * s2fac * src2(is+2,js+1,ks+2) + $ + f1*f4*f4 * s2fac * src2(is-1,js+2,ks+2) + $ + f2*f4*f4 * s2fac * src2(is ,js+2,ks+2) + $ + f3*f4*f4 * s2fac * src2(is+1,js+2,ks+2) + $ + f4*f4*f4 * s2fac * src2(is+2,js+2,ks+2) + dst(id,jd,kd) = res1 + res2 + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o5.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o5.F77 new file mode 100644 index 000000000..e28354048 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o5.F77 @@ -0,0 +1,226 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_o5.F77,v 1.3 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_2tl_o5 ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(6), jfac(6), kfac(6) + integer ii, jj, kk + CCTK_REAL8 fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Linear (first order) interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + +c Loop over fine region +c (This expression cannot be evaluated as integer) + dstdiv = one / (120*dstifac**5) / (120*dstjfac**5) / (120*dstkfac**5) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk+ dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (- 1) + kfac(2) = (fk+2*dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 5) + kfac(3) = (fk+2*dstkfac) * (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (-10) + kfac(4) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 10) + kfac(5) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-3*dstkfac) * (- 5) + kfac(6) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-2*dstkfac) * ( 1) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj+ dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (- 1) + jfac(2) = (fj+2*dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 5) + jfac(3) = (fj+2*dstjfac) * (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (-10) + jfac(4) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 10) + jfac(5) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-3*dstjfac) * (- 5) + jfac(6) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-2*dstjfac) * ( 1) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi+ dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (- 1) + ifac(2) = (fi+2*dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * ( 5) + ifac(3) = (fi+2*dstifac) * (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (-10) + ifac(4) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi-2*dstifac) * (fi-3*dstifac) * ( 10) + ifac(5) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-3*dstifac) * (- 5) + ifac(6) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-2*dstifac) * ( 1) + + res = 0 + + do kk=1,6 + do jj=1,6 + do ii=1,6 + + if (ifac(ii).ne.0 .and. jfac(jj).ne.0 .and. kfac(kk).ne.0) then +c (This expression cannot be evaluated as integer) + fac = one * ifac(ii) * jfac(jj) * kfac(kk) + + CHKIDX (i0+ii-2, j0+jj-2, k0+kk-2, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii-2, j0+jj-2, k0+kk-2) + $ + fac * s2fac * src2(i0+ii-2, j0+jj-2, k0+kk-2) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_rf2.F77 new file mode 100644 index 000000000..727c2581f --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_rf2.F77 @@ -0,0 +1,402 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_2tl_rf2.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_2tl_rf2 ( + $ src1, t1, src2, t2, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + CCTK_REAL8 one, half, fourth, eighth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) time interpolation + if (t1.eq.t2) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2)-eps .or. t.gt.max(t1,t2)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) / (t1 - t2) + s2fac = (t - t1) / (t2 - t1) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + s1fac * src1(is,js,ks) + $ + s2fac * src2(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is+1,js,ks) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is+1,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is,js+1,ks) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is,js+1,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is+1,js,ks) + $ + fourth * s1fac * src1(is,js+1,ks) + $ + fourth * s1fac * src1(is+1,js+1,ks) + $ + fourth * s2fac * src2(is,js,ks) + $ + fourth * s2fac * src2(is+1,js,ks) + $ + fourth * s2fac * src2(is,js+1,ks) + $ + fourth * s2fac * src2(is+1,js+1,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is,js,ks+1) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is,js,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is+1,js,ks) + $ + fourth * s1fac * src1(is,js,ks+1) + $ + fourth * s1fac * src1(is+1,js,ks+1) + $ + fourth * s2fac * src1(is,js,ks) + $ + fourth * s2fac * src2(is+1,js,ks) + $ + fourth * s2fac * src2(is,js,ks+1) + $ + fourth * s2fac * src2(is+1,js,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is,js+1,ks) + $ + fourth * s1fac * src1(is,js,ks+1) + $ + fourth * s1fac * src1(is,js+1,ks+1) + $ + fourth * s2fac * src2(is,js,ks) + $ + fourth * s2fac * src2(is,js+1,ks) + $ + fourth * s2fac * src2(is,js,ks+1) + $ + fourth * s2fac * src2(is,js+1,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + eighth * s1fac * src1(is,js,ks) + $ + eighth * s1fac * src1(is+1,js,ks) + $ + eighth * s1fac * src1(is,js+1,ks) + $ + eighth * s1fac * src1(is+1,js+1,ks) + $ + eighth * s1fac * src1(is,js,ks+1) + $ + eighth * s1fac * src1(is+1,js,ks+1) + $ + eighth * s1fac * src1(is,js+1,ks+1) + $ + eighth * s1fac * src1(is+1,js+1,ks+1) + $ + $ + eighth * s2fac * src2(is,js,ks) + $ + eighth * s2fac * src2(is+1,js,ks) + $ + eighth * s2fac * src2(is,js+1,ks) + $ + eighth * s2fac * src2(is+1,js+1,ks) + $ + eighth * s2fac * src2(is,js,ks+1) + $ + eighth * s2fac * src2(is+1,js,ks+1) + $ + eighth * s2fac * src2(is,js+1,ks+1) + $ + eighth * s2fac * src2(is+1,js+1,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl.F77 new file mode 100644 index 000000000..9f3e3d944 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl.F77 @@ -0,0 +1,197 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl.F77,v 1.9 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_3tl ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(2), jfac(2), kfac(2) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + +c Loop over fine region + dstdiv = one / (dstifac * dstjfac * dstkfac) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk-dstkfac) * (-1) + kfac(2) = (fk ) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj-dstjfac) * (-1) + jfac(2) = (fj ) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi-dstifac) * (-1) + ifac(2) = (fi ) * 1 + + res = 0 + + do kk=1,2 + do jj=1,2 + do ii=1,2 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii, j0+jj, k0+kk, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii, j0+jj, k0+kk) + $ + fac * s2fac * src2(i0+ii, j0+jj, k0+kk) + $ + fac * s3fac * src3(i0+ii, j0+jj, k0+kk) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_eno.F90 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_eno.F90 new file mode 100644 index 000000000..df253af97 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_eno.F90 @@ -0,0 +1,370 @@ +!!$ $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_eno.F90,v 1.1 2004/03/03 15:30:40 hawke Exp $ + +#include "cctk.h" + + +!!$ This routine performs "ENO" prolongation. It is intended to be used +!!$ with GFs that are not expected to be smooth, particularly those +!!$ that must also obey certain constraints. The obvious example is the +!!$ density in hydrodynamics, which may be discontinuous yet must be +!!$ strictly positive. +!!$ +!!$ To ensure that this prolongation method is used you should add the +!!$ tag +!!$ +!!$ tags='Prolongation="ENO"' +!!$ +!!$ to the interface.ccl on the appropriate group. +!!$ +!!$ This applies ENO2 type limiting to the slope, checking over the +!!$ entire coarse grid cell for the least oscillatory quadratic in each +!!$ direction. If the slope changes sign over the extrema, linear +!!$ interpolation is used instead. +!!$ +!!$ The actual eno1d function is defined in the routine +!!$ +!!$ prolongate_3d_real8_eno.F77 + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ +if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ +end if + +subroutine prolongate_3d_real8_3tl_eno (src1, t1, src2, t2, & + src3, t3, srciext, srcjext, srckext, dst, t, dstiext, & + dstjext, dstkext, srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +!!$ bbox(:,1) is lower boundary (inclusive) +!!$ bbox(:,2) is upper boundary (inclusive) +!!$ bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac, tmps1fac, tmps2fac, tmps3fac + + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + CCTK_REAL8, dimension(0:3,0:3) :: tmp1 + CCTK_REAL8, dimension(0:3) :: tmp2 + CCTK_REAL8 :: dsttmp1, dsttmp2, dsttmp3 + + external eno1d + CCTK_REAL8 eno1d + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 & + .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) & + .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 & + .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 & + .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +!!$ This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) & + .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) & + .or. regbbox(d,1).lt.dstbbox(d,1) & + .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 & + .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 & + .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 & + .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 & + .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 & + .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + +!!$ Quadratic (second order) interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + +!!$ Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + +!!$ Where is the fine grid point w.r.t the coarse grid? + +!!$ write(*,*) i,j,k,fi,fj,fk + + select case (fi + 10*fj + 100*fk) + case (0) +!!$ On a coarse grid point exactly! + + dsttmp1 = src1(i0+1,j0+1,k0+1) + dsttmp2 = src2(i0+1,j0+1,k0+1) + dsttmp3 = src3(i0+1,j0+1,k0+1) + + case (1) +!!$ Interpolate only in x + + dsttmp1 = eno1d(src1(i0:i0+3,j0+1,k0+1)) + dsttmp2 = eno1d(src2(i0:i0+3,j0+1,k0+1)) + dsttmp3 = eno1d(src3(i0:i0+3,j0+1,k0+1)) + + case (10) +!!$ Interpolate only in y + + dsttmp1 = eno1d(src1(i0+1,j0:j0+3,k0+1)) + dsttmp2 = eno1d(src2(i0+1,j0:j0+3,k0+1)) + dsttmp3 = eno1d(src3(i0+1,j0:j0+3,k0+1)) + + case (11) +!!$ Interpolate only in x and y + + do jj = 0, 3 + tmp2(jj) = eno1d(src1(i0:i0+3,j0+jj,k0+1)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + tmp2(jj) = eno1d(src2(i0:i0+3,j0+jj,k0+1)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + tmp2(jj) = eno1d(src3(i0:i0+3,j0+jj,k0+1)) + end do + + dsttmp3 = eno1d(tmp2(0:3)) + + case (100) +!!$ Interpolate only in z + + dsttmp1 = eno1d(src1(i0+1,j0+1,k0:k0+3)) + dsttmp2 = eno1d(src2(i0+1,j0+1,k0:k0+3)) + dsttmp3 = eno1d(src3(i0+1,j0+1,k0:k0+3)) + + case (101) +!!$ Interpolate only in x and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src1(i0:i0+3,j0+1,k0+kk)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src2(i0:i0+3,j0+1,k0+kk)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src3(i0:i0+3,j0+1,k0+kk)) + end do + + dsttmp3 = eno1d(tmp2(0:3)) + + case (110) +!!$ Interpolate only in y and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src1(i0+1,j0:j0+3,k0+kk)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src2(i0+1,j0:j0+3,k0+kk)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + do kk = 0, 3 + tmp2(kk) = eno1d(src3(i0+1,j0:j0+3,k0+kk)) + end do + + dsttmp3 = eno1d(tmp2(0:3)) + + case (111) +!!$ Interpolate in all of x, y, and z + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src1(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dsttmp1 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src2(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dsttmp2 = eno1d(tmp2(0:3)) + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src3(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dsttmp3 = eno1d(tmp2(0:3)) + + case default + call CCTK_WARN(0, "Internal error in ENO prolongation. Should only be used with refinement factor 2!") + end select + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + s1fac * dsttmp1 + s2fac * dsttmp2 + s3fac * dsttmp3 + +!!$ write(*,*) i,j,k,dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1),& +!!$ s1fac,s2fac,s3fac,dsttmp1,dsttmp2,dsttmp3 + + if ( (dst(dstioff+i+1, dstjoff+j+1, dstkoff+k+1) - & + max(dsttmp1, dsttmp2, dsttmp3)) * & + (dst(dstioff+i+1, dstjoff+j+1, dstkoff+k+1) - & + min(dsttmp1, dsttmp2, dsttmp3)) .lt. 0 ) then + +!!$ Do linear interpolation in time instead + +!!$ write(*,*) t,t1,t2,t3 + + if (t < t2) then + + tmps2fac = (t - t3) / (t2 - t3) + tmps3fac = (t - t2) / (t3 - t2) + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + tmps2fac * dsttmp2 + tmps3fac * dsttmp3 + + else + + tmps1fac = (t - t2) / (t1 - t2) + tmps2fac = (t - t1) / (t2 - t1) + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + tmps1fac * dsttmp1 + tmps2fac * dsttmp2 + + end if + + end if + + end do + end do + end do + +end subroutine prolongate_3d_real8_3tl_eno diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_minmod.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_minmod.F77 new file mode 100644 index 000000000..9018a364b --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_minmod.F77 @@ -0,0 +1,388 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_minmod.F77,v 1.6 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + +c$$$ This routine performs "TVD" prolongation. It is intended to be used +c$$$ with GFs that are not expected to be smooth, particularly those +c$$$ that must also obey certain constraints. The obvious example is the +c$$$ density in hydrodynamics, which may be discontinuous yet must be +c$$$ strictly positive. +c$$$ +c$$$ To ensure that this prolongation method is used you should add the +c$$$ tag +c$$$ +c$$$ tags='Prolongation="TVD"' +c$$$ +c$$$ to the interface.ccl on the appropriate group. +c$$$ +c$$$ This applies minmod type limiting to the slope, checking over the +c$$$ entire coarse grid cell for the minimum modulus in each direction. +c$$$ +c$$$ The actual minmod function is defined in the routine +c$$$ +c$$$ prolongate_3d_real8_minmod.F77 + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_3tl_minmod ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + external minmod + CCTK_REAL8 minmod + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + CCTK_REAL8 dupw, dloc, slopex(3), slopey(3), slopez(3) + logical firstloop + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + +c Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + + + slopex(1) = zero + slopey(1) = zero + slopez(1) = zero + + firstloop = .true. + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src1(i0+1 ,j0+jj,k0+kk) - src1(i0+0 ,j0+jj,k0+kk) + dloc = src1(i0+2 ,j0+jj,k0+kk) - src1(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex(1) = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex(1) = + $ minmod(slopex(1), half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src1(i0+ii,j0+1 ,k0+kk) - src1(i0+ii,j0+0 ,k0+kk) + dloc = src1(i0+ii,j0+2 ,k0+kk) - src1(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey(1) = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey(1) = + $ minmod(slopey(1), half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + dupw = src1(i0+ii,j0+jj,k0+1 ) - src1(i0+ii,j0+jj,k0+0 ) + dloc = src1(i0+ii,j0+jj,k0+2 ) - src1(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez(1) = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez(1) = + $ minmod(slopez(1), half * dble(fk) * minmod(dupw,dloc)) + end if + + end do + end do + + slopex(2) = zero + slopey(2) = zero + slopez(2) = zero + + firstloop = .true. + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src2(i0+1 ,j0+jj,k0+kk) - src2(i0+0 ,j0+jj,k0+kk) + dloc = src2(i0+2 ,j0+jj,k0+kk) - src2(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex(2) = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex(2) = + $ minmod(slopex(2), half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src2(i0+ii,j0+1 ,k0+kk) - src2(i0+ii,j0+0 ,k0+kk) + dloc = src2(i0+ii,j0+2 ,k0+kk) - src2(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey(2) = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey(2) = + $ minmod(slopey(2), half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + + dupw = src2(i0+ii,j0+jj,k0+1 ) - src2(i0+ii,j0+jj,k0+0 ) + dloc = src2(i0+ii,j0+jj,k0+2 ) - src2(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez(2) = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez(2) = + $ minmod(slopez(2), half * dble(fk) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + slopex(3) = zero + slopey(3) = zero + slopez(3) = zero + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src3(i0+1 ,j0+jj,k0+kk) - src3(i0+0 ,j0+jj,k0+kk) + dloc = src3(i0+2 ,j0+jj,k0+kk) - src3(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex(3) = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex(3) = + $ minmod(slopex(3), half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src3(i0+ii,j0+1 ,k0+kk) - src3(i0+ii,j0+0 ,k0+kk) + dloc = src3(i0+ii,j0+2 ,k0+kk) - src3(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey(3) = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey(3) = + $ minmod(slopey(3), half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + + dupw = src3(i0+ii,j0+jj,k0+1 ) - src3(i0+ii,j0+jj,k0+0 ) + dloc = src3(i0+ii,j0+jj,k0+2 ) - src3(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez(3) = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez(3) = + $ minmod(slopez(3), half * dble(fk) * minmod(dupw,dloc)) + end if + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = + $ s1fac * (src1(i0+1,j0+1,k0+1) + + $ slopex(1) + slopey(1) + slopez(1)) + + $ s2fac * (src2(i0+1,j0+1,k0+1) + + $ slopex(2) + slopey(2) + slopez(2)) + + $ s3fac * (src3(i0+1,j0+1,k0+1) + + $ slopex(3) + slopey(3) + slopez(3)) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3.F77 new file mode 100644 index 000000000..c44e1119f --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3.F77 @@ -0,0 +1,222 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3.F77,v 1.13 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_3tl_o3 ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + +c Loop over fine region + dstdiv = one / (6*dstifac**3 * 6*dstjfac**3 * 6*dstkfac**3) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (-1) + kfac(2) = (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * 3 + kfac(3) = (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (-3) + kfac(4) = (fk+dstkfac) * (fk ) * (fk- dstkfac) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (-1) + jfac(2) = (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * 3 + jfac(3) = (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (-3) + jfac(4) = (fj+dstjfac) * (fj ) * (fj- dstjfac) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi ) * (fi-dstifac) * (fi-2*dstifac) * (-1) + ifac(2) = (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * 3 + ifac(3) = (fi+dstifac) * (fi ) * (fi-2*dstifac) * (-3) + ifac(4) = (fi+dstifac) * (fi ) * (fi- dstifac) * 1 + + res = 0 + + do kk=1,4 + do jj=1,4 + do ii=1,4 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii-1, j0+jj-1, k0+kk-1, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii-1, j0+jj-1, k0+kk-1) + $ + fac * s2fac * src2(i0+ii-1, j0+jj-1, k0+kk-1) + $ + fac * s3fac * src3(i0+ii-1, j0+jj-1, k0+kk-1) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3_rf2.F77 new file mode 100644 index 000000000..daa130251 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3_rf2.F77 @@ -0,0 +1,757 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o3_rf2.F77,v 1.3 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_3tl_o3_rf2 ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + CCTK_REAL8 one, half, fourth, eighth, sixteenth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + parameter (sixteenth = one/16) + CCTK_REAL8 f1, f2, f3, f4 + parameter (f1 = - sixteenth) + parameter (f2 = 9*sixteenth) + parameter (f3 = 9*sixteenth) + parameter (f4 = - sixteenth) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer offsetlo, offsethi + + CCTK_REAL8 s1fac, s2fac, s3fac + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + CCTK_REAL8 res1, res2, res3 + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff, 2).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, 2).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) time interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + s1fac * src1(is,js,ks) + $ + s2fac * src2(is,js,ks) + $ + s3fac * src3(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks, 4,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is-1,js,ks) + f2 * s1fac * src1(is ,js,ks) + $ + f3 * s1fac * src1(is+1,js,ks) + f4 * s1fac * src1(is+2,js,ks) + $ + f1 * s2fac * src2(is-1,js,ks) + f2 * s2fac * src2(is ,js,ks) + $ + f3 * s2fac * src2(is+1,js,ks) + f4 * s2fac * src2(is+2,js,ks) + $ + f1 * s3fac * src3(is-1,js,ks) + f2 * s3fac * src3(is ,js,ks) + $ + f3 * s3fac * src3(is+1,js,ks) + f4 * s3fac * src3(is+2,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks, 1,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is,js-1,ks) + f2 * s1fac * src1(is,js ,ks) + $ + f3 * s1fac * src1(is,js+1,ks) + f4 * s1fac * src1(is,js+2,ks) + $ + f1 * s2fac * src2(is,js-1,ks) + f2 * s2fac * src2(is,js ,ks) + $ + f3 * s2fac * src2(is,js+1,ks) + f4 * s2fac * src2(is,js+2,ks) + $ + f1 * s3fac * src3(is,js-1,ks) + f2 * s3fac * src3(is,js ,ks) + $ + f3 * s3fac * src3(is,js+1,ks) + f4 * s3fac * src3(is,js+2,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks, 4,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is-1,js-1,ks) + $ + f2*f1 * s1fac * src1(is ,js-1,ks) + $ + f3*f1 * s1fac * src1(is+1,js-1,ks) + $ + f4*f1 * s1fac * src1(is+2,js-1,ks) + $ + f1*f2 * s1fac * src1(is-1,js ,ks) + $ + f2*f2 * s1fac * src1(is ,js ,ks) + $ + f3*f2 * s1fac * src1(is+1,js ,ks) + $ + f4*f2 * s1fac * src1(is+2,js ,ks) + $ + f1*f3 * s1fac * src1(is-1,js+1,ks) + $ + f2*f3 * s1fac * src1(is ,js+1,ks) + $ + f3*f3 * s1fac * src1(is+1,js+1,ks) + $ + f4*f3 * s1fac * src1(is+2,js+1,ks) + $ + f1*f4 * s1fac * src1(is-1,js+2,ks) + $ + f2*f4 * s1fac * src1(is ,js+2,ks) + $ + f3*f4 * s1fac * src1(is+1,js+2,ks) + $ + f4*f4 * s1fac * src1(is+2,js+2,ks) + $ + $ + f1*f1 * s2fac * src2(is-1,js-1,ks) + $ + f2*f1 * s2fac * src2(is ,js-1,ks) + $ + f3*f1 * s2fac * src2(is+1,js-1,ks) + $ + f4*f1 * s2fac * src2(is+2,js-1,ks) + $ + f1*f2 * s2fac * src2(is-1,js ,ks) + $ + f2*f2 * s2fac * src2(is ,js ,ks) + $ + f3*f2 * s2fac * src2(is+1,js ,ks) + $ + f4*f2 * s2fac * src2(is+2,js ,ks) + $ + f1*f3 * s2fac * src2(is-1,js+1,ks) + $ + f2*f3 * s2fac * src2(is ,js+1,ks) + $ + f3*f3 * s2fac * src2(is+1,js+1,ks) + $ + f4*f3 * s2fac * src2(is+2,js+1,ks) + $ + f1*f4 * s2fac * src2(is-1,js+2,ks) + $ + f2*f4 * s2fac * src2(is ,js+2,ks) + $ + f3*f4 * s2fac * src2(is+1,js+2,ks) + $ + f4*f4 * s2fac * src2(is+2,js+2,ks) + $ + $ + f1*f1 * s3fac * src3(is-1,js-1,ks) + $ + f2*f1 * s3fac * src3(is ,js-1,ks) + $ + f3*f1 * s3fac * src3(is+1,js-1,ks) + $ + f4*f1 * s3fac * src3(is+2,js-1,ks) + $ + f1*f2 * s3fac * src3(is-1,js ,ks) + $ + f2*f2 * s3fac * src3(is ,js ,ks) + $ + f3*f2 * s3fac * src3(is+1,js ,ks) + $ + f4*f2 * s3fac * src3(is+2,js ,ks) + $ + f1*f3 * s3fac * src3(is-1,js+1,ks) + $ + f2*f3 * s3fac * src3(is ,js+1,ks) + $ + f3*f3 * s3fac * src3(is+1,js+1,ks) + $ + f4*f3 * s3fac * src3(is+2,js+1,ks) + $ + f1*f4 * s3fac * src3(is-1,js+2,ks) + $ + f2*f4 * s3fac * src3(is ,js+2,ks) + $ + f3*f4 * s3fac * src3(is+1,js+2,ks) + $ + f4*f4 * s3fac * src3(is+2,js+2,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks-1, 1,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * s1fac * src1(is,js,ks-1) + f2 * s1fac * src1(is,js,ks ) + $ + f3 * s1fac * src1(is,js,ks+1) + f4 * s1fac * src1(is,js,ks+2) + $ + f1 * s2fac * src2(is,js,ks-1) + f2 * s2fac * src2(is,js,ks ) + $ + f3 * s2fac * src2(is,js,ks+1) + f4 * s2fac * src2(is,js,ks+2) + $ + f1 * s3fac * src3(is,js,ks-1) + f2 * s3fac * src3(is,js,ks ) + $ + f3 * s3fac * src3(is,js,ks+1) + f4 * s3fac * src3(is,js,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks-1, 4,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is-1,js,ks-1) + $ + f2*f1 * s1fac * src1(is ,js,ks-1) + $ + f3*f1 * s1fac * src1(is+1,js,ks-1) + $ + f4*f1 * s1fac * src1(is+2,js,ks-1) + $ + f1*f2 * s1fac * src1(is-1,js,ks ) + $ + f2*f2 * s1fac * src1(is ,js,ks ) + $ + f3*f2 * s1fac * src1(is+1,js,ks ) + $ + f4*f2 * s1fac * src1(is+2,js,ks ) + $ + f1*f3 * s1fac * src1(is-1,js,ks+1) + $ + f2*f3 * s1fac * src1(is ,js,ks+1) + $ + f3*f3 * s1fac * src1(is+1,js,ks+1) + $ + f4*f3 * s1fac * src1(is+2,js,ks+1) + $ + f1*f4 * s1fac * src1(is-1,js,ks+2) + $ + f2*f4 * s1fac * src1(is ,js,ks+2) + $ + f3*f4 * s1fac * src1(is+1,js,ks+2) + $ + f4*f4 * s1fac * src1(is+2,js,ks+2) + $ + $ + f1*f1 * s2fac * src2(is-1,js,ks-1) + $ + f2*f1 * s2fac * src2(is ,js,ks-1) + $ + f3*f1 * s2fac * src2(is+1,js,ks-1) + $ + f4*f1 * s2fac * src2(is+2,js,ks-1) + $ + f1*f2 * s2fac * src2(is-1,js,ks ) + $ + f2*f2 * s2fac * src2(is ,js,ks ) + $ + f3*f2 * s2fac * src2(is+1,js,ks ) + $ + f4*f2 * s2fac * src2(is+2,js,ks ) + $ + f1*f3 * s2fac * src2(is-1,js,ks+1) + $ + f2*f3 * s2fac * src2(is ,js,ks+1) + $ + f3*f3 * s2fac * src2(is+1,js,ks+1) + $ + f4*f3 * s2fac * src2(is+2,js,ks+1) + $ + f1*f4 * s2fac * src2(is-1,js,ks+2) + $ + f2*f4 * s2fac * src2(is ,js,ks+2) + $ + f3*f4 * s2fac * src2(is+1,js,ks+2) + $ + f4*f4 * s2fac * src2(is+2,js,ks+2) + $ + $ + f1*f1 * s3fac * src3(is-1,js,ks-1) + $ + f2*f1 * s3fac * src3(is ,js,ks-1) + $ + f3*f1 * s3fac * src3(is+1,js,ks-1) + $ + f4*f1 * s3fac * src3(is+2,js,ks-1) + $ + f1*f2 * s3fac * src3(is-1,js,ks ) + $ + f2*f2 * s3fac * src3(is ,js,ks ) + $ + f3*f2 * s3fac * src3(is+1,js,ks ) + $ + f4*f2 * s3fac * src3(is+2,js,ks ) + $ + f1*f3 * s3fac * src3(is-1,js,ks+1) + $ + f2*f3 * s3fac * src3(is ,js,ks+1) + $ + f3*f3 * s3fac * src3(is+1,js,ks+1) + $ + f4*f3 * s3fac * src3(is+2,js,ks+1) + $ + f1*f4 * s3fac * src3(is-1,js,ks+2) + $ + f2*f4 * s3fac * src3(is ,js,ks+2) + $ + f3*f4 * s3fac * src3(is+1,js,ks+2) + $ + f4*f4 * s3fac * src3(is+2,js,ks+2) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks-1, 1,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * s1fac * src1(is,js-1,ks-1) + $ + f2*f1 * s1fac * src1(is,js ,ks-1) + $ + f3*f1 * s1fac * src1(is,js+1,ks-1) + $ + f4*f1 * s1fac * src1(is,js+2,ks-1) + $ + f1*f2 * s1fac * src1(is,js-1,ks ) + $ + f2*f2 * s1fac * src1(is,js ,ks ) + $ + f3*f2 * s1fac * src1(is,js+1,ks ) + $ + f4*f2 * s1fac * src1(is,js+2,ks ) + $ + f1*f3 * s1fac * src1(is,js-1,ks+1) + $ + f2*f3 * s1fac * src1(is,js ,ks+1) + $ + f3*f3 * s1fac * src1(is,js+1,ks+1) + $ + f4*f3 * s1fac * src1(is,js+2,ks+1) + $ + f1*f4 * s1fac * src1(is,js-1,ks+2) + $ + f2*f4 * s1fac * src1(is,js ,ks+2) + $ + f3*f4 * s1fac * src1(is,js+1,ks+2) + $ + f4*f4 * s1fac * src1(is,js+2,ks+2) + $ + $ + f1*f1 * s2fac * src2(is,js-1,ks-1) + $ + f2*f1 * s2fac * src2(is,js ,ks-1) + $ + f3*f1 * s2fac * src2(is,js+1,ks-1) + $ + f4*f1 * s2fac * src2(is,js+2,ks-1) + $ + f1*f2 * s2fac * src2(is,js-1,ks ) + $ + f2*f2 * s2fac * src2(is,js ,ks ) + $ + f3*f2 * s2fac * src2(is,js+1,ks ) + $ + f4*f2 * s2fac * src2(is,js+2,ks ) + $ + f1*f3 * s2fac * src2(is,js-1,ks+1) + $ + f2*f3 * s2fac * src2(is,js ,ks+1) + $ + f3*f3 * s2fac * src2(is,js+1,ks+1) + $ + f4*f3 * s2fac * src2(is,js+2,ks+1) + $ + f1*f4 * s2fac * src2(is,js-1,ks+2) + $ + f2*f4 * s2fac * src2(is,js ,ks+2) + $ + f3*f4 * s2fac * src2(is,js+1,ks+2) + $ + f4*f4 * s2fac * src2(is,js+2,ks+2) + $ + $ + f1*f1 * s3fac * src3(is,js-1,ks-1) + $ + f2*f1 * s3fac * src3(is,js ,ks-1) + $ + f3*f1 * s3fac * src3(is,js+1,ks-1) + $ + f4*f1 * s3fac * src3(is,js+2,ks-1) + $ + f1*f2 * s3fac * src3(is,js-1,ks ) + $ + f2*f2 * s3fac * src3(is,js ,ks ) + $ + f3*f2 * s3fac * src3(is,js+1,ks ) + $ + f4*f2 * s3fac * src3(is,js+2,ks ) + $ + f1*f3 * s3fac * src3(is,js-1,ks+1) + $ + f2*f3 * s3fac * src3(is,js ,ks+1) + $ + f3*f3 * s3fac * src3(is,js+1,ks+1) + $ + f4*f3 * s3fac * src3(is,js+2,ks+1) + $ + f1*f4 * s3fac * src3(is,js-1,ks+2) + $ + f2*f4 * s3fac * src3(is,js ,ks+2) + $ + f3*f4 * s3fac * src3(is,js+1,ks+2) + $ + f4*f4 * s3fac * src3(is,js+2,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks-1, 4,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + res1 = + $ + f1*f1*f1 * s1fac * src1(is-1,js-1,ks-1) + $ + f2*f1*f1 * s1fac * src1(is ,js-1,ks-1) + $ + f3*f1*f1 * s1fac * src1(is+1,js-1,ks-1) + $ + f4*f1*f1 * s1fac * src1(is+2,js-1,ks-1) + $ + f1*f2*f1 * s1fac * src1(is-1,js ,ks-1) + $ + f2*f2*f1 * s1fac * src1(is ,js ,ks-1) + $ + f3*f2*f1 * s1fac * src1(is+1,js ,ks-1) + $ + f4*f2*f1 * s1fac * src1(is+2,js ,ks-1) + $ + f1*f3*f1 * s1fac * src1(is-1,js+1,ks-1) + $ + f2*f3*f1 * s1fac * src1(is ,js+1,ks-1) + $ + f3*f3*f1 * s1fac * src1(is+1,js+1,ks-1) + $ + f4*f3*f1 * s1fac * src1(is+2,js+1,ks-1) + $ + f1*f4*f1 * s1fac * src1(is-1,js+2,ks-1) + $ + f2*f4*f1 * s1fac * src1(is ,js+2,ks-1) + $ + f3*f4*f1 * s1fac * src1(is+1,js+2,ks-1) + $ + f4*f4*f1 * s1fac * src1(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * s1fac * src1(is-1,js-1,ks ) + $ + f2*f1*f2 * s1fac * src1(is ,js-1,ks ) + $ + f3*f1*f2 * s1fac * src1(is+1,js-1,ks ) + $ + f4*f1*f2 * s1fac * src1(is+2,js-1,ks ) + $ + f1*f2*f2 * s1fac * src1(is-1,js ,ks ) + $ + f2*f2*f2 * s1fac * src1(is ,js ,ks ) + $ + f3*f2*f2 * s1fac * src1(is+1,js ,ks ) + $ + f4*f2*f2 * s1fac * src1(is+2,js ,ks ) + $ + f1*f3*f2 * s1fac * src1(is-1,js+1,ks ) + $ + f2*f3*f2 * s1fac * src1(is ,js+1,ks ) + $ + f3*f3*f2 * s1fac * src1(is+1,js+1,ks ) + $ + f4*f3*f2 * s1fac * src1(is+2,js+1,ks ) + $ + f1*f4*f2 * s1fac * src1(is-1,js+2,ks ) + $ + f2*f4*f2 * s1fac * src1(is ,js+2,ks ) + $ + f3*f4*f2 * s1fac * src1(is+1,js+2,ks ) + $ + f4*f4*f2 * s1fac * src1(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * s1fac * src1(is-1,js-1,ks+1) + $ + f2*f1*f3 * s1fac * src1(is ,js-1,ks+1) + $ + f3*f1*f3 * s1fac * src1(is+1,js-1,ks+1) + $ + f4*f1*f3 * s1fac * src1(is+2,js-1,ks+1) + $ + f1*f2*f3 * s1fac * src1(is-1,js ,ks+1) + $ + f2*f2*f3 * s1fac * src1(is ,js ,ks+1) + $ + f3*f2*f3 * s1fac * src1(is+1,js ,ks+1) + $ + f4*f2*f3 * s1fac * src1(is+2,js ,ks+1) + $ + f1*f3*f3 * s1fac * src1(is-1,js+1,ks+1) + $ + f2*f3*f3 * s1fac * src1(is ,js+1,ks+1) + $ + f3*f3*f3 * s1fac * src1(is+1,js+1,ks+1) + $ + f4*f3*f3 * s1fac * src1(is+2,js+1,ks+1) + $ + f1*f4*f3 * s1fac * src1(is-1,js+2,ks+1) + $ + f2*f4*f3 * s1fac * src1(is ,js+2,ks+1) + $ + f3*f4*f3 * s1fac * src1(is+1,js+2,ks+1) + $ + f4*f4*f3 * s1fac * src1(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * s1fac * src1(is-1,js-1,ks+2) + $ + f2*f1*f4 * s1fac * src1(is ,js-1,ks+2) + $ + f3*f1*f4 * s1fac * src1(is+1,js-1,ks+2) + $ + f4*f1*f4 * s1fac * src1(is+2,js-1,ks+2) + $ + f1*f2*f4 * s1fac * src1(is-1,js ,ks+2) + $ + f2*f2*f4 * s1fac * src1(is ,js ,ks+2) + $ + f3*f2*f4 * s1fac * src1(is+1,js ,ks+2) + $ + f4*f2*f4 * s1fac * src1(is+2,js ,ks+2) + $ + f1*f3*f4 * s1fac * src1(is-1,js+1,ks+2) + $ + f2*f3*f4 * s1fac * src1(is ,js+1,ks+2) + $ + f3*f3*f4 * s1fac * src1(is+1,js+1,ks+2) + $ + f4*f3*f4 * s1fac * src1(is+2,js+1,ks+2) + $ + f1*f4*f4 * s1fac * src1(is-1,js+2,ks+2) + $ + f2*f4*f4 * s1fac * src1(is ,js+2,ks+2) + $ + f3*f4*f4 * s1fac * src1(is+1,js+2,ks+2) + $ + f4*f4*f4 * s1fac * src1(is+2,js+2,ks+2) + res2 = + $ + f1*f1*f1 * s2fac * src2(is-1,js-1,ks-1) + $ + f2*f1*f1 * s2fac * src2(is ,js-1,ks-1) + $ + f3*f1*f1 * s2fac * src2(is+1,js-1,ks-1) + $ + f4*f1*f1 * s2fac * src2(is+2,js-1,ks-1) + $ + f1*f2*f1 * s2fac * src2(is-1,js ,ks-1) + $ + f2*f2*f1 * s2fac * src2(is ,js ,ks-1) + $ + f3*f2*f1 * s2fac * src2(is+1,js ,ks-1) + $ + f4*f2*f1 * s2fac * src2(is+2,js ,ks-1) + $ + f1*f3*f1 * s2fac * src2(is-1,js+1,ks-1) + $ + f2*f3*f1 * s2fac * src2(is ,js+1,ks-1) + $ + f3*f3*f1 * s2fac * src2(is+1,js+1,ks-1) + $ + f4*f3*f1 * s2fac * src2(is+2,js+1,ks-1) + $ + f1*f4*f1 * s2fac * src2(is-1,js+2,ks-1) + $ + f2*f4*f1 * s2fac * src2(is ,js+2,ks-1) + $ + f3*f4*f1 * s2fac * src2(is+1,js+2,ks-1) + $ + f4*f4*f1 * s2fac * src2(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * s2fac * src2(is-1,js-1,ks ) + $ + f2*f1*f2 * s2fac * src2(is ,js-1,ks ) + $ + f3*f1*f2 * s2fac * src2(is+1,js-1,ks ) + $ + f4*f1*f2 * s2fac * src2(is+2,js-1,ks ) + $ + f1*f2*f2 * s2fac * src2(is-1,js ,ks ) + $ + f2*f2*f2 * s2fac * src2(is ,js ,ks ) + $ + f3*f2*f2 * s2fac * src2(is+1,js ,ks ) + $ + f4*f2*f2 * s2fac * src2(is+2,js ,ks ) + $ + f1*f3*f2 * s2fac * src2(is-1,js+1,ks ) + $ + f2*f3*f2 * s2fac * src2(is ,js+1,ks ) + $ + f3*f3*f2 * s2fac * src2(is+1,js+1,ks ) + $ + f4*f3*f2 * s2fac * src2(is+2,js+1,ks ) + $ + f1*f4*f2 * s2fac * src2(is-1,js+2,ks ) + $ + f2*f4*f2 * s2fac * src2(is ,js+2,ks ) + $ + f3*f4*f2 * s2fac * src2(is+1,js+2,ks ) + $ + f4*f4*f2 * s2fac * src2(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * s2fac * src2(is-1,js-1,ks+1) + $ + f2*f1*f3 * s2fac * src2(is ,js-1,ks+1) + $ + f3*f1*f3 * s2fac * src2(is+1,js-1,ks+1) + $ + f4*f1*f3 * s2fac * src2(is+2,js-1,ks+1) + $ + f1*f2*f3 * s2fac * src2(is-1,js ,ks+1) + $ + f2*f2*f3 * s2fac * src2(is ,js ,ks+1) + $ + f3*f2*f3 * s2fac * src2(is+1,js ,ks+1) + $ + f4*f2*f3 * s2fac * src2(is+2,js ,ks+1) + $ + f1*f3*f3 * s2fac * src2(is-1,js+1,ks+1) + $ + f2*f3*f3 * s2fac * src2(is ,js+1,ks+1) + $ + f3*f3*f3 * s2fac * src2(is+1,js+1,ks+1) + $ + f4*f3*f3 * s2fac * src2(is+2,js+1,ks+1) + $ + f1*f4*f3 * s2fac * src2(is-1,js+2,ks+1) + $ + f2*f4*f3 * s2fac * src2(is ,js+2,ks+1) + $ + f3*f4*f3 * s2fac * src2(is+1,js+2,ks+1) + $ + f4*f4*f3 * s2fac * src2(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * s2fac * src2(is-1,js-1,ks+2) + $ + f2*f1*f4 * s2fac * src2(is ,js-1,ks+2) + $ + f3*f1*f4 * s2fac * src2(is+1,js-1,ks+2) + $ + f4*f1*f4 * s2fac * src2(is+2,js-1,ks+2) + $ + f1*f2*f4 * s2fac * src2(is-1,js ,ks+2) + $ + f2*f2*f4 * s2fac * src2(is ,js ,ks+2) + $ + f3*f2*f4 * s2fac * src2(is+1,js ,ks+2) + $ + f4*f2*f4 * s2fac * src2(is+2,js ,ks+2) + $ + f1*f3*f4 * s2fac * src2(is-1,js+1,ks+2) + $ + f2*f3*f4 * s2fac * src2(is ,js+1,ks+2) + $ + f3*f3*f4 * s2fac * src2(is+1,js+1,ks+2) + $ + f4*f3*f4 * s2fac * src2(is+2,js+1,ks+2) + $ + f1*f4*f4 * s2fac * src2(is-1,js+2,ks+2) + $ + f2*f4*f4 * s2fac * src2(is ,js+2,ks+2) + $ + f3*f4*f4 * s2fac * src2(is+1,js+2,ks+2) + $ + f4*f4*f4 * s2fac * src2(is+2,js+2,ks+2) + res3 = + $ + f1*f1*f1 * s3fac * src3(is-1,js-1,ks-1) + $ + f2*f1*f1 * s3fac * src3(is ,js-1,ks-1) + $ + f3*f1*f1 * s3fac * src3(is+1,js-1,ks-1) + $ + f4*f1*f1 * s3fac * src3(is+2,js-1,ks-1) + $ + f1*f2*f1 * s3fac * src3(is-1,js ,ks-1) + $ + f2*f2*f1 * s3fac * src3(is ,js ,ks-1) + $ + f3*f2*f1 * s3fac * src3(is+1,js ,ks-1) + $ + f4*f2*f1 * s3fac * src3(is+2,js ,ks-1) + $ + f1*f3*f1 * s3fac * src3(is-1,js+1,ks-1) + $ + f2*f3*f1 * s3fac * src3(is ,js+1,ks-1) + $ + f3*f3*f1 * s3fac * src3(is+1,js+1,ks-1) + $ + f4*f3*f1 * s3fac * src3(is+2,js+1,ks-1) + $ + f1*f4*f1 * s3fac * src3(is-1,js+2,ks-1) + $ + f2*f4*f1 * s3fac * src3(is ,js+2,ks-1) + $ + f3*f4*f1 * s3fac * src3(is+1,js+2,ks-1) + $ + f4*f4*f1 * s3fac * src3(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * s3fac * src3(is-1,js-1,ks ) + $ + f2*f1*f2 * s3fac * src3(is ,js-1,ks ) + $ + f3*f1*f2 * s3fac * src3(is+1,js-1,ks ) + $ + f4*f1*f2 * s3fac * src3(is+2,js-1,ks ) + $ + f1*f2*f2 * s3fac * src3(is-1,js ,ks ) + $ + f2*f2*f2 * s3fac * src3(is ,js ,ks ) + $ + f3*f2*f2 * s3fac * src3(is+1,js ,ks ) + $ + f4*f2*f2 * s3fac * src3(is+2,js ,ks ) + $ + f1*f3*f2 * s3fac * src3(is-1,js+1,ks ) + $ + f2*f3*f2 * s3fac * src3(is ,js+1,ks ) + $ + f3*f3*f2 * s3fac * src3(is+1,js+1,ks ) + $ + f4*f3*f2 * s3fac * src3(is+2,js+1,ks ) + $ + f1*f4*f2 * s3fac * src3(is-1,js+2,ks ) + $ + f2*f4*f2 * s3fac * src3(is ,js+2,ks ) + $ + f3*f4*f2 * s3fac * src3(is+1,js+2,ks ) + $ + f4*f4*f2 * s3fac * src3(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * s3fac * src3(is-1,js-1,ks+1) + $ + f2*f1*f3 * s3fac * src3(is ,js-1,ks+1) + $ + f3*f1*f3 * s3fac * src3(is+1,js-1,ks+1) + $ + f4*f1*f3 * s3fac * src3(is+2,js-1,ks+1) + $ + f1*f2*f3 * s3fac * src3(is-1,js ,ks+1) + $ + f2*f2*f3 * s3fac * src3(is ,js ,ks+1) + $ + f3*f2*f3 * s3fac * src3(is+1,js ,ks+1) + $ + f4*f2*f3 * s3fac * src3(is+2,js ,ks+1) + $ + f1*f3*f3 * s3fac * src3(is-1,js+1,ks+1) + $ + f2*f3*f3 * s3fac * src3(is ,js+1,ks+1) + $ + f3*f3*f3 * s3fac * src3(is+1,js+1,ks+1) + $ + f4*f3*f3 * s3fac * src3(is+2,js+1,ks+1) + $ + f1*f4*f3 * s3fac * src3(is-1,js+2,ks+1) + $ + f2*f4*f3 * s3fac * src3(is ,js+2,ks+1) + $ + f3*f4*f3 * s3fac * src3(is+1,js+2,ks+1) + $ + f4*f4*f3 * s3fac * src3(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * s3fac * src3(is-1,js-1,ks+2) + $ + f2*f1*f4 * s3fac * src3(is ,js-1,ks+2) + $ + f3*f1*f4 * s3fac * src3(is+1,js-1,ks+2) + $ + f4*f1*f4 * s3fac * src3(is+2,js-1,ks+2) + $ + f1*f2*f4 * s3fac * src3(is-1,js ,ks+2) + $ + f2*f2*f4 * s3fac * src3(is ,js ,ks+2) + $ + f3*f2*f4 * s3fac * src3(is+1,js ,ks+2) + $ + f4*f2*f4 * s3fac * src3(is+2,js ,ks+2) + $ + f1*f3*f4 * s3fac * src3(is-1,js+1,ks+2) + $ + f2*f3*f4 * s3fac * src3(is ,js+1,ks+2) + $ + f3*f3*f4 * s3fac * src3(is+1,js+1,ks+2) + $ + f4*f3*f4 * s3fac * src3(is+2,js+1,ks+2) + $ + f1*f4*f4 * s3fac * src3(is-1,js+2,ks+2) + $ + f2*f4*f4 * s3fac * src3(is ,js+2,ks+2) + $ + f3*f4*f4 * s3fac * src3(is+1,js+2,ks+2) + $ + f4*f4*f4 * s3fac * src3(is+2,js+2,ks+2) + dst(id,jd,kd) = res1 + res2 + res3 + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o5.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o5.F77 new file mode 100644 index 000000000..28f8c155f --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o5.F77 @@ -0,0 +1,230 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_o5.F77,v 1.3 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_3tl_o5 ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(6), jfac(6), kfac(6) + integer ii, jj, kk + CCTK_REAL8 fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + +c Loop over fine region +c (This expression cannot be evaluated as integer) + dstdiv = one / (120*dstifac**5) / (120*dstjfac**5) / (120*dstkfac**5) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk+ dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (- 1) + kfac(2) = (fk+2*dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 5) + kfac(3) = (fk+2*dstkfac) * (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (-10) + kfac(4) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 10) + kfac(5) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-3*dstkfac) * (- 5) + kfac(6) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-2*dstkfac) * ( 1) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj+ dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (- 1) + jfac(2) = (fj+2*dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 5) + jfac(3) = (fj+2*dstjfac) * (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (-10) + jfac(4) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 10) + jfac(5) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-3*dstjfac) * (- 5) + jfac(6) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-2*dstjfac) * ( 1) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi+ dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (- 1) + ifac(2) = (fi+2*dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * ( 5) + ifac(3) = (fi+2*dstifac) * (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (-10) + ifac(4) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi-2*dstifac) * (fi-3*dstifac) * ( 10) + ifac(5) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-3*dstifac) * (- 5) + ifac(6) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-2*dstifac) * ( 1) + + res = 0 + + do kk=1,6 + do jj=1,6 + do ii=1,6 + + if (ifac(ii).ne.0 .and. jfac(jj).ne.0 .and. kfac(kk).ne.0) then +c (This expression cannot be evaluated as integer) + fac = one * ifac(ii) * jfac(jj) * kfac(kk) + + CHKIDX (i0+ii-2, j0+jj-2, k0+kk-2, \ + srciext,srcjext,srckext, "source") + res = res + $ + fac * s1fac * src1(i0+ii-2, j0+jj-2, k0+kk-2) + $ + fac * s2fac * src2(i0+ii-2, j0+jj-2, k0+kk-2) + $ + fac * s3fac * src3(i0+ii-2, j0+jj-2, k0+kk-2) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_rf2.F77 new file mode 100644 index 000000000..a77498fef --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_rf2.F77 @@ -0,0 +1,430 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_3tl_rf2.F77,v 1.3 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_3tl_rf2 ( + $ src1, t1, src2, t2, src3, t3, srciext, srcjext, srckext, + $ dst, t, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 eps + parameter (eps = 1.0d-10) + + CCTK_REAL8 one, half, fourth, eighth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + + integer srciext, srcjext, srckext + CCTK_REAL8 src1(srciext,srcjext,srckext) + CCTK_REAL8 t1 + CCTK_REAL8 src2(srciext,srcjext,srckext) + CCTK_REAL8 t2 + CCTK_REAL8 src3(srciext,srcjext,srckext) + CCTK_REAL8 t3 + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Quadratic (second order) time interpolation + if (t1.eq.t2 .or. t1.eq.t3 .or. t2.eq.t3) then + call CCTK_WARN (0, "Internal error: arrays have same time") + end if + if (t.lt.min(t1,t2,t3)-eps .or. t.gt.max(t1,t2,t3)+eps) then + call CCTK_WARN (0, "Internal error: extrapolation in time") + end if + + s1fac = (t - t2) * (t - t3) / ((t1 - t2) * (t1 - t3)) + s2fac = (t - t1) * (t - t3) / ((t2 - t1) * (t2 - t3)) + s3fac = (t - t1) * (t - t2) / ((t3 - t1) * (t3 - t2)) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + s1fac * src1(is,js,ks) + $ + s2fac * src2(is,js,ks) + $ + s3fac * src3(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is+1,js,ks) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is+1,js,ks) + $ + half * s3fac * src3(is,js,ks) + half * s3fac * src3(is+1,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is,js+1,ks) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is,js+1,ks) + $ + half * s3fac * src3(is,js,ks) + half * s3fac * src3(is,js+1,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is+1,js,ks) + $ + fourth * s1fac * src1(is,js+1,ks) + $ + fourth * s1fac * src1(is+1,js+1,ks) + $ + fourth * s2fac * src2(is,js,ks) + $ + fourth * s2fac * src2(is+1,js,ks) + $ + fourth * s2fac * src2(is,js+1,ks) + $ + fourth * s2fac * src2(is+1,js+1,ks) + $ + fourth * s3fac * src3(is,js,ks) + $ + fourth * s3fac * src3(is+1,js,ks) + $ + fourth * s3fac * src3(is,js+1,ks) + $ + fourth * s3fac * src3(is+1,js+1,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + half * s1fac * src1(is,js,ks) + half * s1fac * src1(is,js,ks+1) + $ + half * s2fac * src2(is,js,ks) + half * s2fac * src2(is,js,ks+1) + $ + half * s3fac * src3(is,js,ks) + half * s3fac * src3(is,js,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is+1,js,ks) + $ + fourth * s1fac * src1(is,js,ks+1) + $ + fourth * s1fac * src1(is+1,js,ks+1) + $ + fourth * s2fac * src1(is,js,ks) + $ + fourth * s2fac * src2(is+1,js,ks) + $ + fourth * s2fac * src2(is,js,ks+1) + $ + fourth * s2fac * src2(is+1,js,ks+1) + $ + fourth * s3fac * src3(is,js,ks) + $ + fourth * s3fac * src3(is+1,js,ks) + $ + fourth * s3fac * src3(is,js,ks+1) + $ + fourth * s3fac * src3(is+1,js,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * s1fac * src1(is,js,ks) + $ + fourth * s1fac * src1(is,js+1,ks) + $ + fourth * s1fac * src1(is,js,ks+1) + $ + fourth * s1fac * src1(is,js+1,ks+1) + $ + fourth * s2fac * src2(is,js,ks) + $ + fourth * s2fac * src2(is,js+1,ks) + $ + fourth * s2fac * src2(is,js,ks+1) + $ + fourth * s2fac * src2(is,js+1,ks+1) + $ + fourth * s3fac * src3(is,js,ks) + $ + fourth * s3fac * src3(is,js+1,ks) + $ + fourth * s3fac * src3(is,js,ks+1) + $ + fourth * s3fac * src3(is,js+1,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + eighth * s1fac * src1(is,js,ks) + $ + eighth * s1fac * src1(is+1,js,ks) + $ + eighth * s1fac * src1(is,js+1,ks) + $ + eighth * s1fac * src1(is+1,js+1,ks) + $ + eighth * s1fac * src1(is,js,ks+1) + $ + eighth * s1fac * src1(is+1,js,ks+1) + $ + eighth * s1fac * src1(is,js+1,ks+1) + $ + eighth * s1fac * src1(is+1,js+1,ks+1) + $ + $ + eighth * s2fac * src2(is,js,ks) + $ + eighth * s2fac * src2(is+1,js,ks) + $ + eighth * s2fac * src2(is,js+1,ks) + $ + eighth * s2fac * src2(is+1,js+1,ks) + $ + eighth * s2fac * src2(is,js,ks+1) + $ + eighth * s2fac * src2(is+1,js,ks+1) + $ + eighth * s2fac * src2(is,js+1,ks+1) + $ + eighth * s2fac * src2(is+1,js+1,ks+1) + $ + $ + eighth * s3fac * src3(is,js,ks) + $ + eighth * s3fac * src3(is+1,js,ks) + $ + eighth * s3fac * src3(is,js+1,ks) + $ + eighth * s3fac * src3(is+1,js+1,ks) + $ + eighth * s3fac * src3(is,js,ks+1) + $ + eighth * s3fac * src3(is+1,js,ks+1) + $ + eighth * s3fac * src3(is,js+1,ks+1) + $ + eighth * s3fac * src3(is+1,js+1,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_eno.F90 b/Carpet/CarpetLib/src/prolongate_3d_real8_eno.F90 new file mode 100644 index 000000000..573b279ae --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_eno.F90 @@ -0,0 +1,299 @@ +!!$ -*-Fortran-*- +!!$ $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_eno.F90,v 1.1 2004/03/03 15:30:40 hawke Exp $ + +#include "cctk.h" + + +!!$ This routine performs "ENO" prolongation. It is intended to be used +!!$ with GFs that are not expected to be smooth, particularly those +!!$ that must also obey certain constraints. The obvious example is the +!!$ density in hydrodynamics, which may be discontinuous yet must be +!!$ strictly positive. +!!$ +!!$ To ensure that this prolongation method is used you should add the +!!$ tag +!!$ +!!$ tags='Prolongation="ENO"' +!!$ +!!$ to the interface.ccl on the appropriate group. +!!$ +!!$ This applies ENO2 type limiting to the slope, checking over the +!!$ entire coarse grid cell for the least oscillatory quadratic in each +!!$ direction. If the slope changes sign over the extrema, linear +!!$ interpolation is used instead. +!!$ +!!$ The actual eno1d function is defined in the routine +!!$ +!!$ prolongate_3d_real8_eno.F77 + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ +if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ +end if + +function eno1d(q) + + implicit none + + CCTK_REAL8 :: eno1d + CCTK_REAL8 :: q(4) + CCTK_REAL8 :: zero, one, two, three, six, half, eighth + parameter (zero = 0) + parameter (two = 2) + parameter (one = 1) + parameter (three = 3) + parameter (six = 6) + parameter (eighth = one / 8) + parameter (half = one / two) + CCTK_REAL8 :: diffleft, diffright + +!!$ Directly find the second undivided differences + + diffleft = q(1) + q(3) - two * q(2) + diffright = q(2) + q(4) - two * q(3) + + if ( abs(diffleft) .lt. abs(diffright) ) then + +!!$ Apply the left quadratic + + eno1d = eighth * (-q(1) + six * q(2) + three * q(3)) + + else + +!!$ Apply the right quadratic + + eno1d = eighth * (three * q(2) + six * q(3) - q(4)) + + end if + +!!$ Check that the quadratic is reasonable + + if ( (q(2)-eno1d) * (q(3)-eno1d) .lt. zero ) then + +!!$ Not reasonable. Linear interpolation + + eno1d = half * (q(2) + q(3)) + + end if + +end function eno1d + +subroutine prolongate_3d_real8_eno (src, srciext, srcjext, & + srckext, dst, dstiext, dstjext, dstkext, srcbbox, & + dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +!!$ bbox(:,1) is lower boundary (inclusive) +!!$ bbox(:,2) is upper boundary (inclusive) +!!$ bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + CCTK_REAL8, dimension(0:3,0:3) :: tmp1 + CCTK_REAL8, dimension(0:3) :: tmp2 + + external eno1d + CCTK_REAL8 eno1d + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 & + .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) & + .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 & + .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 & + .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +!!$ This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) & + .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) & + .or. regbbox(d,1).lt.dstbbox(d,1) & + .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 & + .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 & + .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 & + .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 & + .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 & + .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + +!!$ Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + +!!$ Where is the fine grid point w.r.t the coarse grid? + + select case (fi + 10*fj + 100*fk) + case (0) +!!$ On a coarse grid point exactly! + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + src(i0+1,j0+1,k0+1) + + case (1) +!!$ Interpolate only in x + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(src(i0:i0+3,j0+1,k0+1)) + + case (10) +!!$ Interpolate only in y + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(src(i0+1,j0:j0+3,k0+1)) + + case (11) +!!$ Interpolate only in x and y + + do jj = 0, 3 + tmp2(jj) = eno1d(src(i0:i0+3,j0+jj,k0+1)) + end do + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(tmp2(0:3)) + + case (100) +!!$ Interpolate only in z + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(src(i0+1,j0+1,k0:k0+3)) + + case (101) +!!$ Interpolate only in x and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src(i0:i0+3,j0+1,k0+kk)) + end do + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(tmp2(0:3)) + + case (110) +!!$ Interpolate only in y and z + + do kk = 0, 3 + tmp2(kk) = eno1d(src(i0+1,j0:j0+3,k0+kk)) + end do + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(tmp2(0:3)) + + case (111) +!!$ Interpolate in all of x, y, and z + + do jj = 0, 3 + do kk = 0, 3 + tmp1(jj,kk) = eno1d(src(i0:i0+3,j0+jj,k0+kk)) + end do + end do + do ii = 0, 3 + tmp2(ii) = eno1d(tmp1(0:3,ii)) + end do + + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = & + eno1d(tmp2(0:3)) + + case default + call CCTK_WARN(0, "Internal error in ENO prolongation. Should only be used with refinement factor 2!") + end select + + end do + end do + end do + +end subroutine prolongate_3d_real8_eno diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_minmod.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_minmod.F77 new file mode 100644 index 000000000..a8dc28af4 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_minmod.F77 @@ -0,0 +1,264 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_minmod.F77,v 1.4 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + +c$$$ This routine performs "TVD" prolongation. It is intended to be used +c$$$ with GFs that are not expected to be smooth, particularly those +c$$$ that must also obey certain constraints. The obvious example is the +c$$$ density in hydrodynamics, which may be discontinuous yet must be +c$$$ strictly positive. +c$$$ +c$$$ To ensure that this prolongation method is used you should add the +c$$$ tag +c$$$ +c$$$ tags='Prolongation="TVD"' +c$$$ +c$$$ to the interface.ccl on the appropriate group. +c$$$ +c$$$ This applies minmod type limiting to the slope, checking over the +c$$$ entire coarse grid cell for the minimum modulus in each direction. +c$$$ +c$$$ The actual minmod function is defined in the routine +c$$$ +c$$$ prolongate_3d_real8_minmod.F77 + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + function minmod(a, b) + + implicit none + + CCTK_REAL8 minmod + CCTK_REAL8 a, b + CCTK_REAL8 zero + parameter (zero = 0) + + if (a * b .lt. zero) then + minmod = zero + else if (abs(a) < abs(b)) then + minmod = a + else + minmod = b + end if + + end function + + subroutine prolongate_3d_real8_minmod ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + external minmod + CCTK_REAL8 minmod + + CCTK_REAL8 half, zero + parameter (half = 0.5) + parameter (zero = 0) + CCTK_REAL8 dupw, dloc, slopex, slopey, slopez + logical firstloop + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over fine region + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + + slopex = zero + slopey = zero + slopez = zero + + firstloop = .true. + + do kk = 1, 2 + do jj = 1, 2 + + dupw = src(i0+1 ,j0+jj,k0+kk) - src(i0+0 ,j0+jj,k0+kk) + dloc = src(i0+2 ,j0+jj,k0+kk) - src(i0+1 ,j0+kk,k0+kk) + if (firstloop) then + slopex = half * dble(fi) * minmod(dupw,dloc) + firstloop = .false. + else + slopex = + $ minmod(slopex, half * dble(fi) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do kk = 1, 2 + do ii = 1, 2 + + dupw = src(i0+ii,j0+1 ,k0+kk) - src(i0+ii,j0+0 ,k0+kk) + dloc = src(i0+ii,j0+2 ,k0+kk) - src(i0+ii,j0+1 ,k0+kk) + if (firstloop) then + slopey = half * dble(fj) * minmod(dupw,dloc) + firstloop = .false. + else + slopey = + $ minmod(slopey, half * dble(fj) * minmod(dupw,dloc)) + end if + end do + end do + + firstloop = .true. + + do jj = 1, 2 + do ii = 1, 2 + + dupw = src(i0+ii,j0+jj,k0+1 ) - src(i0+ii,j0+jj,k0+0 ) + dloc = src(i0+ii,j0+jj,k0+2 ) - src(i0+ii,j0+jj,k0+1 ) + if (firstloop) then + slopez = half * dble(fk) * minmod(dupw,dloc) + firstloop = .false. + else + slopez = + $ minmod(slopez, half * dble(fk) * minmod(dupw,dloc)) + end if + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = + . src(i0+1,j0+1,k0+1) + slopex + slopey + slopez + + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_o3.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_o3.F77 new file mode 100644 index 000000000..21d82a733 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_o3.F77 @@ -0,0 +1,194 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_o3.F77,v 1.9 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_o3 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(4), jfac(4), kfac(4) + integer ii, jj, kk + integer fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over fine region + dstdiv = one / (6*dstifac**3 * 6*dstjfac**3 * 6*dstkfac**3) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (-1) + kfac(2) = (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * 3 + kfac(3) = (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (-3) + kfac(4) = (fk+dstkfac) * (fk ) * (fk- dstkfac) * 1 + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (-1) + jfac(2) = (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * 3 + jfac(3) = (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (-3) + jfac(4) = (fj+dstjfac) * (fj ) * (fj- dstjfac) * 1 + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi ) * (fi-dstifac) * (fi-2*dstifac) * (-1) + ifac(2) = (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * 3 + ifac(3) = (fi+dstifac) * (fi ) * (fi-2*dstifac) * (-3) + ifac(4) = (fi+dstifac) * (fi ) * (fi- dstifac) * 1 + + res = 0 + + do kk=1,4 + do jj=1,4 + do ii=1,4 + + fac = ifac(ii) * jfac(jj) * kfac(kk) + + if (fac.ne.0) then + CHKIDX (i0+ii-1, j0+jj-1, k0+kk-1, \ + srciext,srcjext,srckext, "source") + res = res + fac * src(i0+ii-1, j0+jj-1, k0+kk-1) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_o3_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_o3_rf2.F77 new file mode 100644 index 000000000..8a3b2629d --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_o3_rf2.F77 @@ -0,0 +1,420 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_o3_rf2.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_o3_rf2 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 one, half, fourth, eighth, sixteenth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + parameter (sixteenth = one/16) + CCTK_REAL8 f1, f2, f3, f4 + parameter (f1 = - sixteenth) + parameter (f2 = 9*sixteenth) + parameter (f3 = 9*sixteenth) + parameter (f4 = - sixteenth) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer offsetlo, offsethi + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff, 2).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, 2).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = src(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks, 4,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * src(is-1,js,ks) + f2 * src(is ,js,ks) + $ + f3 * src(is+1,js,ks) + f4 * src(is+2,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks, 1,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * src(is,js-1,ks) + f2 * src(is,js ,ks) + $ + f3 * src(is,js+1,ks) + f4 * src(is,js+2,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks, 4,4,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * src(is-1,js-1,ks) + f2*f1 * src(is ,js-1,ks) + $ + f3*f1 * src(is+1,js-1,ks) + f4*f1 * src(is+2,js-1,ks) + $ + f1*f2 * src(is-1,js ,ks) + f2*f2 * src(is ,js ,ks) + $ + f3*f2 * src(is+1,js ,ks) + f4*f2 * src(is+2,js ,ks) + $ + f1*f3 * src(is-1,js+1,ks) + f2*f3 * src(is ,js+1,ks) + $ + f3*f3 * src(is+1,js+1,ks) + f4*f3 * src(is+2,js+1,ks) + $ + f1*f4 * src(is-1,js+2,ks) + f2*f4 * src(is ,js+2,ks) + $ + f3*f4 * src(is+1,js+2,ks) + f4*f4 * src(is+2,js+2,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks-1, 1,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1 * src(is,js,ks-1) + f2 * src(is,js,ks ) + $ + f3 * src(is,js,ks+1) + f4 * src(is,js,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js,ks-1, 4,1,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * src(is-1,js,ks-1) + f2*f1 * src(is ,js,ks-1) + $ + f3*f1 * src(is+1,js,ks-1) + f4*f1 * src(is+2,js,ks-1) + $ + f1*f2 * src(is-1,js,ks ) + f2*f2 * src(is ,js,ks ) + $ + f3*f2 * src(is+1,js,ks ) + f4*f2 * src(is+2,js,ks ) + $ + f1*f3 * src(is-1,js,ks+1) + f2*f3 * src(is ,js,ks+1) + $ + f3*f3 * src(is+1,js,ks+1) + f4*f3 * src(is+2,js,ks+1) + $ + f1*f4 * src(is-1,js,ks+2) + f2*f4 * src(is ,js,ks+2) + $ + f3*f4 * src(is+1,js,ks+2) + f4*f4 * src(is+2,js,ks+2) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js-1,ks-1, 1,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1 * src(is,js-1,ks-1) + f2*f1 * src(is,js ,ks-1) + $ + f3*f1 * src(is,js+1,ks-1) + f4*f1 * src(is,js+2,ks-1) + $ + f1*f2 * src(is,js-1,ks ) + f2*f2 * src(is,js ,ks ) + $ + f3*f2 * src(is,js+1,ks ) + f4*f2 * src(is,js+2,ks ) + $ + f1*f3 * src(is,js-1,ks+1) + f2*f3 * src(is,js ,ks+1) + $ + f3*f3 * src(is,js+1,ks+1) + f4*f3 * src(is,js+2,ks+1) + $ + f1*f4 * src(is,js-1,ks+2) + f2*f4 * src(is,js ,ks+2) + $ + f3*f4 * src(is,js+1,ks+2) + f4*f4 * src(is,js+2,ks+2) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is-1,js-1,ks-1, 4,4,4, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + f1*f1*f1 * src(is-1,js-1,ks-1) + f2*f1*f1 * src(is ,js-1,ks-1) + $ + f3*f1*f1 * src(is+1,js-1,ks-1) + f4*f1*f1 * src(is+2,js-1,ks-1) + $ + f1*f2*f1 * src(is-1,js ,ks-1) + f2*f2*f1 * src(is ,js ,ks-1) + $ + f3*f2*f1 * src(is+1,js ,ks-1) + f4*f2*f1 * src(is+2,js ,ks-1) + $ + f1*f3*f1 * src(is-1,js+1,ks-1) + f2*f3*f1 * src(is ,js+1,ks-1) + $ + f3*f3*f1 * src(is+1,js+1,ks-1) + f4*f3*f1 * src(is+2,js+1,ks-1) + $ + f1*f4*f1 * src(is-1,js+2,ks-1) + f2*f4*f1 * src(is ,js+2,ks-1) + $ + f3*f4*f1 * src(is+1,js+2,ks-1) + f4*f4*f1 * src(is+2,js+2,ks-1) + $ + $ + f1*f1*f2 * src(is-1,js-1,ks ) + f2*f1*f2 * src(is ,js-1,ks ) + $ + f3*f1*f2 * src(is+1,js-1,ks ) + f4*f1*f2 * src(is+2,js-1,ks ) + $ + f1*f2*f2 * src(is-1,js ,ks ) + f2*f2*f2 * src(is ,js ,ks ) + $ + f3*f2*f2 * src(is+1,js ,ks ) + f4*f2*f2 * src(is+2,js ,ks ) + $ + f1*f3*f2 * src(is-1,js+1,ks ) + f2*f3*f2 * src(is ,js+1,ks ) + $ + f3*f3*f2 * src(is+1,js+1,ks ) + f4*f3*f2 * src(is+2,js+1,ks ) + $ + f1*f4*f2 * src(is-1,js+2,ks ) + f2*f4*f2 * src(is ,js+2,ks ) + $ + f3*f4*f2 * src(is+1,js+2,ks ) + f4*f4*f2 * src(is+2,js+2,ks ) + $ + $ + f1*f1*f3 * src(is-1,js-1,ks+1) + f2*f1*f3 * src(is ,js-1,ks+1) + $ + f3*f1*f3 * src(is+1,js-1,ks+1) + f4*f1*f3 * src(is+2,js-1,ks+1) + $ + f1*f2*f3 * src(is-1,js ,ks+1) + f2*f2*f3 * src(is ,js ,ks+1) + $ + f3*f2*f3 * src(is+1,js ,ks+1) + f4*f2*f3 * src(is+2,js ,ks+1) + $ + f1*f3*f3 * src(is-1,js+1,ks+1) + f2*f3*f3 * src(is ,js+1,ks+1) + $ + f3*f3*f3 * src(is+1,js+1,ks+1) + f4*f3*f3 * src(is+2,js+1,ks+1) + $ + f1*f4*f3 * src(is-1,js+2,ks+1) + f2*f4*f3 * src(is ,js+2,ks+1) + $ + f3*f4*f3 * src(is+1,js+2,ks+1) + f4*f4*f3 * src(is+2,js+2,ks+1) + $ + $ + f1*f1*f4 * src(is-1,js-1,ks+2) + f2*f1*f4 * src(is ,js-1,ks+2) + $ + f3*f1*f4 * src(is+1,js-1,ks+2) + f4*f1*f4 * src(is+2,js-1,ks+2) + $ + f1*f2*f4 * src(is-1,js ,ks+2) + f2*f2*f4 * src(is ,js ,ks+2) + $ + f3*f2*f4 * src(is+1,js ,ks+2) + f4*f2*f4 * src(is+2,js ,ks+2) + $ + f1*f3*f4 * src(is-1,js+1,ks+2) + f2*f3*f4 * src(is ,js+1,ks+2) + $ + f3*f3*f4 * src(is+1,js+1,ks+2) + f4*f3*f4 * src(is+2,js+1,ks+2) + $ + f1*f4*f4 * src(is-1,js+2,ks+2) + f2*f4*f4 * src(is ,js+2,ks+2) + $ + f3*f4*f4 * src(is+1,js+2,ks+2) + f4*f4*f4 * src(is+2,js+2,ks+2) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_o5.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_o5.F77 new file mode 100644 index 000000000..8c86178ad --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_o5.F77 @@ -0,0 +1,205 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_o5.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine prolongate_3d_real8_o5 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + CCTK_REAL8 one + parameter (one = 1) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + CCTK_REAL8 t +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer offsetlo, offsethi + + integer regiext, regjext, regkext + + integer dstifac, dstjfac, dstkfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + CCTK_REAL8 s1fac, s2fac, s3fac + + CCTK_REAL8 dstdiv + integer i, j, k + integer i0, j0, k0 + integer fi, fj, fk + integer ifac(6), jfac(6), kfac(6) + integer ii, jj, kk + CCTK_REAL8 fac + CCTK_REAL8 res + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(srcbbox(d,3), dstbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: destination strides are not integer multiples of the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + regkext = (regbbox(d,2) - regbbox(d,1)) / regbbox(d,3) + 1 + dstkfac = srcbbox(d,3) / dstbbox(d,3) + srckoff = (regbbox(d,1) - srcbbox(d,1)) / dstbbox(d,3) + offsetlo = regbbox(d,3) + if (mod(srckoff + 0, dstkfac).eq.0) then + offsetlo = 0 + if (regkext.gt.1) then + offsetlo = regbbox(d,3) + end if + end if + offsethi = regbbox(d,3) + if (mod(srckoff + regkext-1, dstkfac).eq.0) then + offsethi = 0 + if (regkext.gt.1) then + offsethi = regbbox(d,3) + end if + end if + if (regbbox(d,1)-offsetlo.lt.srcbbox(d,1) + $ .or. regbbox(d,2)+offsethi.gt.srcbbox(d,2) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + dstifac = srcbbox(1,3) / dstbbox(1,3) + dstjfac = srcbbox(2,3) / dstbbox(2,3) + dstkfac = srcbbox(3,3) / dstbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over fine region +c (This expression cannot be evaluated as integer) + dstdiv = one / (120*dstifac**5) / (120*dstjfac**5) / (120*dstkfac**5) + + do k = 0, regkext-1 + k0 = (srckoff + k) / dstkfac + fk = mod(srckoff + k, dstkfac) + kfac(1) = (fk+ dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (- 1) + kfac(2) = (fk+2*dstkfac) * (fk ) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 5) + kfac(3) = (fk+2*dstkfac) * (fk+dstkfac) * (fk-dstkfac) * (fk-2*dstkfac) * (fk-3*dstkfac) * (-10) + kfac(4) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk-2*dstkfac) * (fk-3*dstkfac) * ( 10) + kfac(5) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-3*dstkfac) * (- 5) + kfac(6) = (fk+2*dstkfac) * (fk+dstkfac) * (fk ) * (fk- dstkfac) * (fk-2*dstkfac) * ( 1) + + do j = 0, regjext-1 + j0 = (srcjoff + j) / dstjfac + fj = mod(srcjoff + j, dstjfac) + jfac(1) = (fj+ dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (- 1) + jfac(2) = (fj+2*dstjfac) * (fj ) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 5) + jfac(3) = (fj+2*dstjfac) * (fj+dstjfac) * (fj-dstjfac) * (fj-2*dstjfac) * (fj-3*dstjfac) * (-10) + jfac(4) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj-2*dstjfac) * (fj-3*dstjfac) * ( 10) + jfac(5) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-3*dstjfac) * (- 5) + jfac(6) = (fj+2*dstjfac) * (fj+dstjfac) * (fj ) * (fj- dstjfac) * (fj-2*dstjfac) * ( 1) + + do i = 0, regiext-1 + i0 = (srcioff + i) / dstifac + fi = mod(srcioff + i, dstifac) + ifac(1) = (fi+ dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (- 1) + ifac(2) = (fi+2*dstifac) * (fi ) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * ( 5) + ifac(3) = (fi+2*dstifac) * (fi+dstifac) * (fi-dstifac) * (fi-2*dstifac) * (fi-3*dstifac) * (-10) + ifac(4) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi-2*dstifac) * (fi-3*dstifac) * ( 10) + ifac(5) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-3*dstifac) * (- 5) + ifac(6) = (fi+2*dstifac) * (fi+dstifac) * (fi ) * (fi- dstifac) * (fi-2*dstifac) * ( 1) + + res = 0 + + do kk=1,6 + do jj=1,6 + do ii=1,6 + + if (ifac(ii).ne.0 .and. jfac(jj).ne.0 .and. kfac(kk).ne.0) then +c (This expression cannot be evaluated as integer) + fac = one * ifac(ii) * jfac(jj) * kfac(kk) + + CHKIDX (i0+ii-2, j0+jj-2, k0+kk-2, \ + srciext,srcjext,srckext, "source") + res = res + fac * src(i0+ii-2, j0+jj-2, k0+kk-2) + end if + + end do + end do + end do + + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = dstdiv * res + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/prolongate_3d_real8_rf2.F77 b/Carpet/CarpetLib/src/prolongate_3d_real8_rf2.F77 new file mode 100644 index 000000000..556f4d092 --- /dev/null +++ b/Carpet/CarpetLib/src/prolongate_3d_real8_rf2.F77 @@ -0,0 +1,341 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/prolongate_3d_real8_rf2.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine prolongate_3d_real8_rf2 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + CCTK_REAL8 one, half, fourth, eighth + parameter (one = 1) + parameter (half = one/2) + parameter (fourth = one/4) + parameter (eighth = one/8) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i0, j0, k0 + integer fi, fj, fk + integer is, js, ks + integer id, jd, kd + integer i, j, k + + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).le.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (srcbbox(d,3).ne.dstbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: source strides are not twice the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / dstbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / dstbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / dstbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + + fi = mod(srcioff, 2) + fj = mod(srcjoff, 2) + fk = mod(srckoff, 2) + + i0 = srcioff / 2 + j0 = srcjoff / 2 + k0 = srckoff / 2 + + + +c Loop over fine region +c Label scheme: 8 fk fj fi + +c begin k loop + 8 continue + k = 0 + ks = k0+1 + kd = dstkoff+1 + if (fk.eq.0) goto 80 + if (fk.eq.1) goto 81 + stop + +c begin j loop + 80 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 800 + if (fj.eq.1) goto 801 + stop + +c begin i loop + 800 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8000 + if (fi.eq.1) goto 8001 + stop + +c kernel + 8000 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = src(is,js,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8001 + goto 900 + +c kernel + 8001 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = half * src(is,js,ks) + half * src(is+1,js,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8000 + goto 900 + +c end i loop + 900 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 801 + goto 90 + +c begin i loop + 801 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8010 + if (fi.eq.1) goto 8011 + stop + +c kernel + 8010 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = half * src(is,js,ks) + half * src(is,js+1,ks) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8011 + goto 901 + +c kernel + 8011 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,1, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * src(is,js,ks) + fourth * src(is+1,js,ks) + $ + fourth * src(is,js+1,ks) + fourth * src(is+1,js+1,ks) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8010 + goto 901 + +c end i loop + 901 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 800 + goto 90 + +c end j loop + 90 continue + k = k+1 + kd = kd+1 + if (k.lt.regkext) goto 81 + goto 9 + +c begin j loop + 81 continue + j = 0 + js = j0+1 + jd = dstjoff+1 + if (fj.eq.0) goto 810 + if (fj.eq.1) goto 811 + stop + +c begin i loop + 810 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8100 + if (fi.eq.1) goto 8101 + stop + +c kernel + 8100 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = half * src(is,js,ks) + half * src(is,js,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8101 + goto 910 + +c kernel + 8101 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,1,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * src(is,js,ks) + fourth * src(is+1,js,ks) + $ + fourth * src(is,js,ks+1) + fourth * src(is+1,js,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8100 + goto 910 + +c end i loop + 910 continue + j = j+1 + jd = jd+1 + if (j.lt.regjext) goto 811 + goto 91 + +c begin i loop + 811 continue + i = 0 + is = i0+1 + id = dstioff+1 + if (fi.eq.0) goto 8110 + if (fi.eq.1) goto 8111 + stop + +c kernel + 8110 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 1,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + fourth * src(is,js,ks) + fourth * src(is,js+1,ks) + $ + fourth * src(is,js,ks+1) + fourth * src(is,js+1,ks+1) + i = i+1 + id = id+1 + if (i.lt.regiext) goto 8111 + goto 911 + +c kernel + 8111 continue + if (check_array_accesses.ne.0) then + call checkindex (is,js,ks, 2,2,2, srciext,srcjext,srckext, "source") + call checkindex (id,jd,kd, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(id,jd,kd) = + $ + eighth * src(is,js,ks) + eighth * src(is+1,js,ks) + $ + eighth * src(is,js+1,ks) + eighth * src(is+1,js+1,ks) + $ + eighth * src(is,js,ks+1) + eighth * src(is+1,js,ks+1) + $ + eighth * src(is,js+1,ks+1) + eighth * src(is+1,js+1,ks+1) + i = i+1 + id = id+1 + is = is+1 + if (i.lt.regiext) goto 8110 + goto 911 + +c end i loop + 911 continue + j = j+1 + jd = jd+1 + js = js+1 + if (j.lt.regjext) goto 810 + goto 91 + +c end j loop + 91 continue + k = k+1 + kd = kd+1 + ks = ks+1 + if (k.lt.regkext) goto 80 + goto 9 + +c end k loop + 9 continue + + end diff --git a/Carpet/CarpetLib/src/restrict_3d_real8.F77 b/Carpet/CarpetLib/src/restrict_3d_real8.F77 new file mode 100644 index 000000000..81f4cfd0a --- /dev/null +++ b/Carpet/CarpetLib/src/restrict_3d_real8.F77 @@ -0,0 +1,128 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/restrict_3d_real8.F77,v 1.7 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" + + + +#define CHKIDX(i,j,k, imax,jmax,kmax, where) \ + if ((i).lt.1 .or. (i).gt.(imax) \ + .or. (j).lt.1 .or. (j).gt.(jmax) \ + .or. (k).lt.1 .or. (k).gt.(kmax)) then &&\ + write (msg, '(a, " array index out of bounds: shape is (",i4,",",i4,",",i4,"), index is (",i4,",",i4,",",i4,")")') \ + (where), (imax), (jmax), (kmax), (i), (j), (k) &&\ + call CCTK_WARN (0, msg(1:len_trim(msg))) &&\ + end if + + + + subroutine restrict_3d_real8 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + + integer srcifac, srcjfac, srckfac + + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer d + + character msg*1000 + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).ge.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (mod(dstbbox(d,3), srcbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: source strides are not integer multiples of the destination strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcifac = dstbbox(1,3) / srcbbox(1,3) + srcjfac = dstbbox(2,3) / srcbbox(2,3) + srckfac = dstbbox(3,3) / srcbbox(3,3) + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / srcbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / srcbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / srcbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over coarse region + do k = 0, regkext-1 + do j = 0, regjext-1 + do i = 0, regiext-1 + + CHKIDX (srcioff+srcifac*i+1, srcjoff+srcjfac*j+1, srckoff+srckfac*k+1, \ + srciext,srcjext,srckext, "source") + CHKIDX (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, \ + dstiext,dstjext,dstkext, "destination") + dst (dstioff+i+1, dstjoff+j+1, dstkoff+k+1) + $ = src (srcioff+srcifac*i+1, srcjoff+srcjfac*j+1, srckoff+srckfac*k+1) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/restrict_3d_real8_rf2.F77 b/Carpet/CarpetLib/src/restrict_3d_real8_rf2.F77 new file mode 100644 index 000000000..b7f6a0454 --- /dev/null +++ b/Carpet/CarpetLib/src/restrict_3d_real8_rf2.F77 @@ -0,0 +1,111 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/restrict_3d_real8_rf2.F77,v 1.2 2004/03/11 12:03:09 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Parameters.h" + + + + subroutine restrict_3d_real8_rf2 ( + $ src, srciext, srcjext, srckext, + $ dst, dstiext, dstjext, dstkext, + $ srcbbox, dstbbox, regbbox) + + implicit none + + DECLARE_CCTK_PARAMETERS + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) +c bbox(:,1) is lower boundary (inclusive) +c bbox(:,2) is upper boundary (inclusive) +c bbox(:,3) is stride + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) + + integer regiext, regjext, regkext + integer srcioff, srcjoff, srckoff + integer dstioff, dstjoff, dstkoff + + integer i, j, k + integer d + + + + do d=1,3 + if (srcbbox(d,3).eq.0 .or. dstbbox(d,3).eq.0 + $ .or. regbbox(d,3).eq.0) then + call CCTK_WARN (0, "Internal error: stride is zero") + end if + if (srcbbox(d,3).ge.regbbox(d,3) + $ .or. dstbbox(d,3).ne.regbbox(d,3)) then + call CCTK_WARN (0, "Internal error: strides disagree") + end if + if (dstbbox(d,3).ne.srcbbox(d,3)*2) then + call CCTK_WARN (0, "Internal error: destination strides are not twice the source strides") + end if + if (mod(srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array origins are not integer multiples of the strides") + end if + if (regbbox(d,1).gt.regbbox(d,2)) then +c This could be handled, but is likely to point to an error elsewhere + call CCTK_WARN (0, "Internal error: region extent is empty") + end if + if (mod(srcbbox(d,2) - srcbbox(d,1), srcbbox(d,3)).ne.0 + $ .or. mod(dstbbox(d,2) - dstbbox(d,1), dstbbox(d,3)).ne.0 + $ .or. mod(regbbox(d,2) - regbbox(d,1), regbbox(d,3)).ne.0) then + call CCTK_WARN (0, "Internal error: array extents are not integer multiples of the strides") + end if + if (regbbox(d,1).lt.srcbbox(d,1) + $ .or. regbbox(d,1).lt.dstbbox(d,1) + $ .or. regbbox(d,2).gt.srcbbox(d,2) + $ .or. regbbox(d,2).gt.dstbbox(d,2)) then + call CCTK_WARN (0, "Internal error: region extent is not contained in array extent") + end if + end do + + if (srciext.ne.(srcbbox(1,2)-srcbbox(1,1))/srcbbox(1,3)+1 + $ .or. srcjext.ne.(srcbbox(2,2)-srcbbox(2,1))/srcbbox(2,3)+1 + $ .or. srckext.ne.(srcbbox(3,2)-srcbbox(3,1))/srcbbox(3,3)+1 + $ .or. dstiext.ne.(dstbbox(1,2)-dstbbox(1,1))/dstbbox(1,3)+1 + $ .or. dstjext.ne.(dstbbox(2,2)-dstbbox(2,1))/dstbbox(2,3)+1 + $ .or. dstkext.ne.(dstbbox(3,2)-dstbbox(3,1))/dstbbox(3,3)+1) then + call CCTK_WARN (0, "Internal error: array sizes don't agree with bounding boxes") + end if + + + + regiext = (regbbox(1,2) - regbbox(1,1)) / regbbox(1,3) + 1 + regjext = (regbbox(2,2) - regbbox(2,1)) / regbbox(2,3) + 1 + regkext = (regbbox(3,2) - regbbox(3,1)) / regbbox(3,3) + 1 + + srcioff = (regbbox(1,1) - srcbbox(1,1)) / srcbbox(1,3) + srcjoff = (regbbox(2,1) - srcbbox(2,1)) / srcbbox(2,3) + srckoff = (regbbox(3,1) - srcbbox(3,1)) / srcbbox(3,3) + + dstioff = (regbbox(1,1) - dstbbox(1,1)) / dstbbox(1,3) + dstjoff = (regbbox(2,1) - dstbbox(2,1)) / dstbbox(2,3) + dstkoff = (regbbox(3,1) - dstbbox(3,1)) / dstbbox(3,3) + + + +c Loop over coarse region + do k = 0, regkext-1 + do j = 0, regjext-1 + do i = 0, regiext-1 + + if (check_array_accesses.ne.0) then + call checkindex (srcioff+2*i+1, srcjoff+2*j+1, srckoff+2*k+1, 1,1,1, srciext,srcjext,srckext, "source") + call checkindex (dstioff+i+1, dstjoff+j+1, dstkoff+k+1, 1,1,1, dstiext,dstjext,dstkext, "destination") + end if + dst(dstioff+i+1, dstjoff+j+1, dstkoff+k+1) = + $ src(srcioff+2*i+1, srcjoff+2*j+1, srckoff+2*k+1) + + end do + end do + end do + + end diff --git a/Carpet/CarpetLib/src/th.cc b/Carpet/CarpetLib/src/th.cc new file mode 100644 index 000000000..0ad9beca1 --- /dev/null +++ b/Carpet/CarpetLib/src/th.cc @@ -0,0 +1,81 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/th.cc,v 1.14 2004/03/23 19:30:14 schnetter Exp $ + +#include <assert.h> +#include <math.h> + +#include <iostream> + +#include "cctk.h" + +#include "defs.hh" +#include "gh.hh" + +#include "th.hh" + +using namespace std; + + + +// Constructors +template<int D> +th<D>::th (gh<D>& h, const CCTK_REAL basedelta) + : h(h), delta(basedelta) { + h.add(this); +} + +// Destructors +template<int D> +th<D>::~th () { + h.remove(this); +} + +// Modifiers +template<int D> +void th<D>::recompose () { + times.resize(h.reflevels()); + deltas.resize(h.reflevels()); + for (int rl=0; rl<h.reflevels(); ++rl) { + const int old_mglevels = times.at(rl).size(); + CCTK_REAL mgtime; + // Select default time + if (old_mglevels==0 && rl==0) { + mgtime = 0; + } else if (old_mglevels==0) { + mgtime = times.at(rl-1).at(0); + } else { + mgtime = times.at(rl).at(old_mglevels-1); + } + times.at(rl).resize(h.mglevels(rl,0), mgtime); + deltas.at(rl).resize(h.mglevels(rl,0)); + for (int ml=0; ml<h.mglevels(rl,0); ++ml) { + if (rl==0 && ml==0) { + deltas.at(rl).at(ml) = delta; + } else if (ml==0) { + deltas.at(rl).at(ml) = deltas.at(rl-1).at(ml) / h.reffact; + } else { + deltas.at(rl).at(ml) = deltas.at(rl).at(ml-1) * h.mgfact; + } + } + } +} + + + +// Output +template<int D> +void th<D>::output (ostream& os) const { + os << "th<" << D << ">:" + << "times={"; + for (int rl=0; rl<h.reflevels(); ++rl) { + for (int ml=0; ml<h.mglevels(rl,0); ++ml) { + if (!(rl==0 && ml==0)) os << ","; + os << rl << ":" << ml << ":" + << times.at(rl).at(ml) << "(" << deltas.at(rl).at(ml) << ")"; + } + } + os << "}"; +} + + + +template class th<3>; diff --git a/Carpet/CarpetLib/src/th.hh b/Carpet/CarpetLib/src/th.hh new file mode 100644 index 000000000..12c77d782 --- /dev/null +++ b/Carpet/CarpetLib/src/th.hh @@ -0,0 +1,104 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/th.hh,v 1.11 2004/03/23 19:30:14 schnetter Exp $ + +#ifndef TH_HH +#define TH_HH + +#include <assert.h> + +#include <iostream> +#include <vector> + +#include "cctk.h" + +#include "defs.hh" +#include "gh.hh" + +using namespace std; + + + +// Forward declaration +template<int D> class th; + +// Output +template<int D> +ostream& operator<< (ostream& os, const th<D>& t); + + + +// The time hierarchy (information about the current time) +template<int D> +class th { + +public: // should be readonly + + // Fields + gh<D>& h; // hierarchy + +private: + + CCTK_REAL delta; // time step + vector<vector<CCTK_REAL> > times; // current times + vector<vector<CCTK_REAL> > deltas; // time steps + +public: + + // Constructors + th (gh<D>& h, const CCTK_REAL basedelta); + + // Destructors + ~th (); + + // Modifiers + void recompose (); + + // Time management + CCTK_REAL get_time (const int rl, const int ml) const { + assert (rl>=0 && rl<h.reflevels()); + assert (ml>=0 && ml<h.mglevels(rl,0)); + return times.at(rl).at(ml); + } + + void set_time (const int rl, const int ml, const CCTK_REAL t) { + assert (rl>=0 && rl<h.reflevels()); + assert (ml>=0 && ml<h.mglevels(rl,0)); + times.at(rl).at(ml) = t; + } + + void advance_time (const int rl, const int ml) { + set_time(rl,ml, get_time(rl,ml) + get_delta(rl,ml)); + } + + CCTK_REAL get_delta (const int rl, const int ml) const { + assert (rl>=0 && rl<h.reflevels()); + assert (ml>=0 && ml<h.mglevels(rl,0)); + return deltas.at(rl).at(ml); + } + + void set_delta (const int rl, const int ml, const CCTK_REAL dt) { + assert (rl>=0 && rl<h.reflevels()); + assert (ml>=0 && ml<h.mglevels(rl,0)); + deltas.at(rl).at(ml) = dt; + } + + CCTK_REAL time (const int tl, const int rl, const int ml) const { + assert (rl>=0 && rl<h.reflevels()); + assert (ml>=0 && ml<h.mglevels(rl,0)); + return get_time(rl, ml) + tl * get_delta(rl, ml); + } + + // Output + void output (ostream& os) const; +}; + + + +template<int D> +inline ostream& operator<< (ostream& os, const th<D>& t) { + t.output(os); + return os; +} + + + +#endif // TH_HH diff --git a/Carpet/CarpetLib/src/vect.cc b/Carpet/CarpetLib/src/vect.cc new file mode 100644 index 000000000..9af8bca1a --- /dev/null +++ b/Carpet/CarpetLib/src/vect.cc @@ -0,0 +1,59 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/vect.cc,v 1.14 2004/02/18 15:10:17 schnetter Exp $ + +#include <assert.h> + +#include <iostream> + +#include "defs.hh" + +#include "vect.hh" + +using namespace std; + + + +// Input +template<class T,int D> +void vect<T,D>::input (istream& is) { + skipws (is); + consume (is, '['); + for (int d=0; d<D; ++d) { + is >> (*this)[d]; + if (d<D-1) { + skipws (is); + consume (is, ','); + } + } + skipws (is); + consume (is, ']'); +} + + + +// Output +template<class T,int D> +void vect<T,D>::output (ostream& os) const { + os << "["; + for (int d=0; d<D; ++d) { + os << (*this)[d]; + if (d<D-1) os << ","; + } + os << "]"; +} + + + +// Note: We need all dimensions all the time. +template class vect<int,0>; +template class vect<int,1>; +template class vect<int,2>; +template class vect<int,3>; + +template void vect<double,3>::input (istream& is); +template void vect<vect<bool,2>,3>::input (istream& is); + +template void vect<bool,2>::output (ostream& os) const; +template void vect<bool,3>::output (ostream& os) const; +template void vect<double,3>::output (ostream& os) const; +template void vect<vect<bool,2>,3>::output (ostream& os) const; +template void vect<vect<int,2>,3>::output (ostream& os) const; diff --git a/Carpet/CarpetLib/src/vect.hh b/Carpet/CarpetLib/src/vect.hh new file mode 100644 index 000000000..9160c76aa --- /dev/null +++ b/Carpet/CarpetLib/src/vect.hh @@ -0,0 +1,797 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetLib/src/vect.hh,v 1.29 2004/08/14 07:41:25 schnetter Exp $ + +#ifndef VECT_HH +#define VECT_HH + +#include <algorithm> +#include <cassert> +#include <cmath> +#include <iostream> + +using namespace std; + + + +// Forward definition +template<class T, int D> class vect; + +// Input/Output +template<class T,int D> +istream& operator>> (istream& is, vect<T,D>& a); +template<class T,int D> +ostream& operator<< (ostream& os, const vect<T,D>& a); + + + +/** + * A short vector with a size that is specified at compile time. + */ +template<class T, int D> +class vect { + + // Fields + + /** Vector elements. */ + T elt[D==0 ? 1 : D]; + +public: + + // Constructors + + /** Explicit empty constructor. */ + explicit vect () { } + + /** Copy constructor. */ + vect (const vect& a) { + for (int d=0; d<D; ++d) elt[d]=a.elt[d]; + } + + /** Constructor from a single element. This constructor might be + confusing, but it is very convenient. */ + vect (const T x) { + for (int d=0; d<D; ++d) elt[d]=x; + } + + /** Constructor for 2-element vectors from 2 elements. */ + vect (const T x, const T y) { + assert (D==2); + // Note: this statement may give "index out of range" warnings. + // You can safely ignore these. + elt[0]=x; elt[1]=y; + } + + /** Constructor for 3-element vectors from 3 elements. */ + vect (const T x, const T y, const T z) { + assert (D==3); + // Note: this statement may give "index out of range" warnings. + // You can safely ignore these. + elt[0]=x; elt[1]=y; elt[2]=z; + } + + /** Constructor for 4-element vectors from 4 elements. */ + vect (const T x, const T y, const T z, const T t) { + assert (D==4); + // Note: this statement may give "index out of range" warnings. + // You can safely ignore these. + elt[0]=x; elt[1]=y; elt[2]=z; elt[3]=t; + } + +#if 0 + // This creates confusion + /** Constructor from a pointer, i.e.\ a C array. */ + explicit vect (const T* const x) { + for (int d=0; d<D; ++d) elt[d]=x[d]; + } +#endif + + /** Constructor from a vector with a different type. */ + template<class S> + /*explicit*/ vect (const vect<S,D>& a) { + for (int d=0; d<D; ++d) elt[d]=(T)a[d]; + } + + /** Create a new 0-element vector with a specific type. */ + static vect make () { + assert (D==0); + return vect(); + } + + /** Create a new 1-element vector with a specific type. */ + static vect make (const T x) { + assert (D==1); + return vect(x); + } + + /** Create a new 2-element vector with a specific type. */ + static vect make (const T x, const T y) { + assert (D==2); + return vect(x, y); + } + + /** Create a new 3-element vector with a specific type. */ + static vect make (const T x, const T y, const T z) { + assert (D==3); + return vect(x, y, z); + } + + /** Create a new 4-element vector with a specific type. */ + static vect make (const T x, const T y, const T z, const T t) { + assert (D==4); + return vect(x, y, z, t); + } + + /** Treat a constant pointer as a reference to a constant vector. */ + static const vect& ref (const T* const x) { + return *(const vect*)x; + } + + /** Treat a pointer as a reference to a vector. */ + static vect& ref (T* const x) { + return *(vect*)x; + } + + /** Create a vector with one element set to 1 and all other elements + set to zero. */ + static vect dir (const int d) { + vect r=(T)0; + r[d]=1; + return r; + } + + /** Create a vector with e[i] = i. */ + static vect seq () { + vect r; + for (int d=0; d<D; ++d) r[d]=d; + return r; + } + + /** Create a vector with e[i] = n + i. */ + static vect seq (const int n) { + vect r; + for (int d=0; d<D; ++d) r[d]=n+d; + return r; + } + + /** Create a vector with e[i] = n + s * i. */ + static vect seq (const int n, const int s) { + vect r; + for (int d=0; d<D; ++d) r[d]=n+s*d; + return r; + } + + // Accessors + + /** Return a non-writable element of a vector. */ + // (Don't return a reference; *this might be a temporary) + // Do return a reference, so that a vector can be accessed as array + const T& operator[] (const int d) const { + assert(d>=0 && d<D); + return elt[d]; + } + + /** Return a writable element of a vector as reference. */ + T& operator[] (const int d) { + assert(d>=0 && d<D); + return elt[d]; + } + +#if 0 + // This creates confusion + /** Return a pointer to a vector. */ + operator const T* () const { + return this; + } +#endif + + /** Return a combination of the vector elements e[a[i]]. The + element combination is selected by another vector. */ + template<class TT, int DD> + vect<T,DD> operator[] (const vect<TT,DD>& a) const { + vect<T,DD> r; + // (*this)[] performs index checking + for (int d=0; d<DD; ++d) r[d] = (*this)[a[d]]; + return r; + } + + // Modifying operators + vect& operator+=(const T x) { + for (int d=0; d<D; ++d) elt[d]+=x; + return *this; + } + + vect& operator-=(const T x) { + for (int d=0; d<D; ++d) elt[d]-=x; + return *this; + } + + vect& operator*=(const T x) { + for (int d=0; d<D; ++d) elt[d]*=x; + return *this; + } + + vect& operator/=(const T x) { + for (int d=0; d<D; ++d) elt[d]/=x; + return *this; + } + + vect& operator%=(const T x) { + for (int d=0; d<D; ++d) elt[d]%=x; + return *this; + } + + vect& operator&=(const T x) { + for (int d=0; d<D; ++d) elt[d]&=x; + return *this; + } + + vect& operator|=(const T x) { + for (int d=0; d<D; ++d) elt[d]|=x; + return *this; + } + + vect& operator^=(const T x) { + for (int d=0; d<D; ++d) elt[d]^=x; + return *this; + } + + vect& operator+=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]+=a[d]; + return *this; + } + + vect& operator-=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]-=a[d]; + return *this; + } + + vect& operator*=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]*=a[d]; + return *this; + } + + vect& operator/=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]/=a[d]; + return *this; + } + + vect& operator%=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]%=a[d]; + return *this; + } + + vect& operator&=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]&=a[d]; + return *this; + } + + vect& operator|=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]|=a[d]; + return *this; + } + + vect& operator^=(const vect& a) { + for (int d=0; d<D; ++d) elt[d]^=a[d]; + return *this; + } + + // Non-modifying operators + + /** Return a new vector where one element has been replaced. */ + vect replace (const int d, const T x) const { + assert (d>=0 && d<D); + vect r; + for (int dd=0; dd<D; ++dd) r[dd]=dd==d?x:elt[dd]; + return r; + } + + vect operator+ () const { + vect r; + for (int d=0; d<D; ++d) r[d]=+elt[d]; + return r; + } + + vect operator- () const { + vect r; + for (int d=0; d<D; ++d) r[d]=-elt[d]; + return r; + } + + vect<bool,D> operator! () const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=!elt[d]; + return r; + } + + vect operator~ () const { + vect r; + for (int d=0; d<D; ++d) r[d]=~elt[d]; + return r; + } + + vect operator+ (const T x) const { + vect r(*this); + r+=x; + return r; + } + + vect operator- (const T x) const { + vect r(*this); + r-=x; + return r; + } + + vect operator* (const T x) const { + vect r(*this); + r*=x; + return r; + } + + vect operator/ (const T x) const { + vect r(*this); + r/=x; + return r; + } + + vect operator% (const T x) const { + vect r(*this); + r%=x; + return r; + } + + vect operator& (const T x) const { + vect r(*this); + r&=x; + return r; + } + + vect operator| (const T x) const { + vect r(*this); + r|=x; + return r; + } + + vect operator^ (const T x) const { + vect r(*this); + r^=x; + return r; + } + + vect<bool,D> operator&& (const T x) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]&&x; + return r; + } + + vect<bool,D> operator|| (const T x) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]||x; + return r; + } + + vect operator+ (const vect& a) const { + vect r(*this); + r+=a; + return r; + } + + vect operator- (const vect& a) const { + vect r(*this); + r-=a; + return r; + } + + vect operator* (const vect& a) const { + vect r(*this); + r*=a; + return r; + } + + vect operator/ (const vect& a) const { + vect r(*this); + r/=a; + return r; + } + + vect operator% (const vect& a) const { + vect r(*this); + r%=a; + return r; + } + + vect operator& (const vect& a) const { + vect r(*this); + r&=a; + return r; + } + + vect operator| (const vect& a) const { + vect r(*this); + r|=a; + return r; + } + + vect operator^ (const vect& a) const { + vect r(*this); + r^=a; + return r; + } + + vect<bool,D> operator&& (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]&&a[d]; + return r; + } + + vect<bool,D> operator|| (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]||a[d]; + return r; + } + + vect<bool,D> operator== (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]==a[d]; + return r; + } + + vect<bool,D> operator!= (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]!=a[d]; + return r; + } + + vect<bool,D> operator< (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]<a[d]; + return r; + } + + vect<bool,D> operator<= (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]<=a[d]; + return r; + } + + vect<bool,D> operator> (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]>a[d]; + return r; + } + + vect<bool,D> operator>= (const vect& a) const { + vect<bool,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]>=a[d]; + return r; + } + + /** This corresponds to the ?: operator. Return a vector with the + elements set to either a[i] or b[i], depending on whether + (*this)[i] is true or not. */ + template<class TT> + vect<TT,D> ifthen (const vect<TT,D>& a, const vect<TT,D>& b) const { + vect<TT,D> r; + for (int d=0; d<D; ++d) r[d]=elt[d]?a[d]:b[d]; + return r; + } + + // Iterators +#if 0 + // This is non-standard + class iter { + vect &vec; + int d; + public: + iter (vect &a): vec(a), d(0) { } + iter& operator++ () { assert(d<D); ++d; return *this; } + bool operator bool () { return d==D; } + T& operator* { return vec[d]; } + }; +#endif + + // Input/Output helpers + void input (istream& is); + void output (ostream& os) const; +}; + + + +// Operators + +/** This corresponds to the ?: operator. Return a vector with the + elements set to either b[i] or c[i], depending on whether a[i] is + true or not. */ +template<class T,int D> +inline vect<T,D> either (const vect<bool,D>& a, + const vect<T,D>& b, const vect<T,D>& c) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=a[d]?b[d]:c[d]; + return r; +} + +/** Transpose a vector of a vector */ +template<class T, int D, int DD> +inline vect<vect<T,D>,DD> xpose (vect<vect<T,DD>,D> const & a) { + vect<vect<T,D>,DD> r; + for (int dd=0; dd<DD; ++dd) for (int d=0; d<D; ++d) r[dd][d] = a[d][dd]; + return r; +} + +/** Return the element-wise absolute value. */ +template<class T,int D> +inline vect<T,D> abs (const vect<T,D>& a) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=abs(a[d]); + return r; +} + +/** Return the element-wise ceiling. */ +template<class T,int D> +inline vect<T,D> ceil (const vect<T,D>& a) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=ceil(a[d]); + return r; +} + +/** Return the element-wise floor. */ +template<class T,int D> +inline vect<T,D> floor (const vect<T,D>& a) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=floor(a[d]); + return r; +} + +/** Return the element-wise maximum of two vectors. */ +template<class T,int D> +inline vect<T,D> max (const vect<T,D>& a, const vect<T,D>& b) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=max(a[d],b[d]); + return r; +} + +/** Return the element-wise minimum of two vectors. */ +template<class T,int D> +inline vect<T,D> min (const vect<T,D>& a, const vect<T,D>& b) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=min(a[d],b[d]); + return r; +} + +/** Return the element-wise power of two vectors. */ +template<class T,class U,int D> +inline vect<T,D> pow (const vect<T,D>& a, const vect<U,D>& b) { + vect<T,D> r; + for (int d=0; d<D; ++d) r[d]=pow(a[d],b[d]); + return r; +} + + + +// Reduction operators + +/** Return true iff any of the elements are true (boolean sum). */ +template<int D> +inline bool any (const vect<bool,D>& a) { + bool r(false); + for (int d=0; d<D; ++d) r|=a[d]; + return r; +} + +/** Return true iff all of the elements are true (boolean product). */ +template<int D> +inline bool all (const vect<bool,D>& a) { + bool r(true); + for (int d=0; d<D; ++d) r&=a[d]; + return r; +} + +/** Count the number of elements in the vector. */ +template<class T,int D> +inline int count (const vect<T,D>& a) { + return D; +} + +/** Return the dot product of two vectors. */ +template<class T,int D> +inline T dot (const vect<T,D>& a, const vect<T,D>& b) { + T r(0); + for (int d=0; d<D; ++d) r+=a[d]*b[d]; + return r; +} + +/** Return the Euklidean length. */ +template<class T,int D> +inline T hypot (const vect<T,D>& a) { + return sqrt(dot(a,a)); +} + +/** Return the maximum element. */ +template<class T,int D> +inline T maxval (const vect<T,D>& a) { + assert (D>0); + T r(a[0]); + for (int d=1; d<D; ++d) r=max(r,a[d]); + return r; +} + +/** Return the minimum element. */ +template<class T,int D> +inline T minval (const vect<T,D>& a) { + assert (D>0); + T r(a[0]); + for (int d=1; d<D; ++d) r=min(r,a[d]); + return r; +} + +/** Return the index of the first maximum element. */ +template<class T,int D> +inline int maxloc (const vect<T,D>& a) { + assert (D>0); + int r(0); + for (int d=1; d<D; ++d) if (a[d]>a[r]) r=d; + return r; +} + +/** Return the index of the first minimum element. */ +template<class T,int D> +inline int minloc (const vect<T,D>& a) { + assert (D>0); + int r(0); + for (int d=1; d<D; ++d) if (a[d]<a[r]) r=d; + return r; +} + +/** Return the product of the elements. */ +template<class T,int D> +inline T prod (const vect<T,D>& a) { + T r(1); + for (int d=0; d<D; ++d) r*=a[d]; + return r; +} + +/** Return the size (number of elements) of the vector. */ +template<class T,int D> +inline int size (const vect<T,D>& a) { + return D; +} + +/** Return the sum of the elements. */ +template<class T,int D> +inline T sum (const vect<T,D>& a) { + T r(0); + for (int d=0; d<D; ++d) r+=a[d]; + return r; +} + +// Higher order functions + +/** Return a new vector where the function func() has been applied to + all elements. */ +template<class T, class U, int D> +inline vect<U,D> map (U (* const func)(T x), const vect<T,D>& a) { + vect<U,D> r; + for (int d=0; d<D; ++d) r[d] = func(a[d]); + return r; +} + +/** Return a new vector where the function func() has been used + element-wise to combine a and b. */ +template<class S, class T, class U, int D> +inline vect<U,D> zip (U (* const func)(S x, T y), + const vect<S,D>& a, const vect<T,D>& b) +{ + vect<U,D> r; + for (int d=0; d<D; ++d) r[d] = func(a[d], b[d]); + return r; +} + +/** Return a scalar where the function func() has been used to reduce + the vector a, starting with the scalar value val. */ +template<class T, class U, int D> +inline U fold (U (* const func)(U val, T x), U val, const vect<T,D>& a) +{ + for (int d=0; d<D; ++d) val = func(val, a[d]); + return val; +} + +/** Return a scalar where the function func() has been used to reduce + the vector a, starting with element 0. */ +template<class T, class U, int D> +inline U fold1 (U (* const func)(U val, T x), const vect<T,D>& a) +{ + assert (D>=1); + U val = a[0]; + for (int d=1; d<D; ++d) val = func(val, a[d]); + return val; +} + +/** Return a vector where the function func() has been used to scan + the vector a, starting with the scalar value val. */ +template<class T, class U, int D> +inline vect<U,D> scan0 (U (* const func)(U val, T x), U val, + const vect<T,D>& a) +{ + vect<U,D> r; + for (int d=0; d<D; ++d) { + r[d] = val; + val = func(val, a[d]); + } + return r; +} + +/** Return a vector where the function func() has been used to scan + the vector a, starting with element 0. */ +template<class T, class U, int D> +inline vect<U,D> scan1 (U (* const func)(U val, T x), U val, + const vect<T,D>& a) +{ + vect<U,D> r; + for (int d=0; d<D; ++d) { + val = func(val, a[d]); + r[d] = val; + } + return r; +} + + + +// Input + +/** Read a formatted vector from a stream. */ +template<class T,int D> +inline istream& operator>> (istream& is, vect<T,D>& a) { + a.input(is); + return is; +} + + + +// Output + +/** Write a vector formatted to a stream. */ +template<class T,int D> +inline ostream& operator<< (ostream& os, const vect<T,D>& a) { + a.output(os); + return os; +} + + + +#if 0 +// Specialise explicit constructors + +/** Constructor for 2-element vectors from 2 elements. */ +template<class T> +inline vect<T,2>::vect<T,2> (const T x, const T y) { + elt[0]=x; elt[1]=y; +} + +/** Constructor for 3-element vectors from 3 elements. */ +vect (const T x, const T y, const T z) { + assert (D==3); + elt[0]=x; elt[1]=y; elt[2]=z; +} + +/** Constructor for 4-element vectors from 4 elements. */ +vect (const T x, const T y, const T z, const T t) { + assert (D==4); + elt[0]=x; elt[1]=y; elt[2]=z; elt[3]=t; +} +#endif + + + +// Specialise for double + +template<> +inline vect<double,3>& vect<double,3>::operator%=(const vect<double,3>& a) { + for (int d=0; d<3; ++d) { + elt[d]=fmod(elt[d],a[d]); + if (elt[d]>a[d]*double(1.0-1.0e-10)) elt[d]=double(0); + if (elt[d]<a[d]*double( 1.0e-10)) elt[d]=double(0); + } + return *this; +} + + + +#endif // VECT_HH diff --git a/Carpet/CarpetReduce/COPYING b/Carpet/CarpetReduce/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetReduce/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetReduce/README b/Carpet/CarpetReduce/README new file mode 100644 index 000000000..8692a2930 --- /dev/null +++ b/Carpet/CarpetReduce/README @@ -0,0 +1,29 @@ +Cactus Code Thorn CarpetReduce +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/README,v 1.3 2004/06/14 07:01:21 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides parallel reduction operators for Carpet. + + + +This thorn now uses a weight function. This makes it possible to +perform physically meaningful spatial reduction operations. The +weight is 1 for all "normal" grid points. + +The weight is set to 0 on symmetry and possible the outer boundary, +and it might be set to 1/2 on the edge of the boundary. Setting this +depends on the coordinate thorn, and currently works only when the +coordinates are defined via CoordBase. + +The weight is also reduced or set to 0 on coarser grids that are +overlaid by finer grid. + +The weight should also be reduced or set to 0 near and in excised +regions. This should happen in conjunction with an excision boundary +thorn. + +This weigth function should probably be extracted into its own thorn +MaskBase, so that many thorns can easily operate on it. diff --git a/Carpet/CarpetReduce/configuration.ccl b/Carpet/CarpetReduce/configuration.ccl new file mode 100644 index 000000000..b24240084 --- /dev/null +++ b/Carpet/CarpetReduce/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetReduce +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/configuration.ccl,v 1.3 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib + +REQUIRES THORNS: Carpet CarpetLib diff --git a/Carpet/CarpetReduce/doc/documentation.tex b/Carpet/CarpetReduce/doc/documentation.tex new file mode 100644 index 000000000..38e62c3cc --- /dev/null +++ b/Carpet/CarpetReduce/doc/documentation.tex @@ -0,0 +1,143 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/doc/documentation.tex,v 1.1 2003/04/29 14:01:52 schnetter Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevent thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be sparated with a \\ or a comma +% - You can define your own macros, but they must appear after +% the START CACTUS THORNGUIDE line, and must not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphix package. +% More specifically, with the "includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us (later) to create a PDF version of the ThornGuide +% via pdflatex. | +% - References should be included with the latex "bibitem" command. +% - Use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - Do not use \appendix, instead include any appendices you need as +% standard sections. +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/doc/documentation.tex,v 1.1 2003/04/29 14:01:52 schnetter Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/ThornGuide/cactus} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter \textless schnetter@uni-tuebingen.de\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{CarpetReduce} + +% the date your document was last changed, if your document is in CVS, +% please use: +\date{$ $Date: 2003/04/29 14:01:52 $ $} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +\section{Physical System} + +\section{Numerical Implementation} + +\section{Using This Thorn} + +\subsection{Obtaining This Thorn} + +\subsection{Basic Usage} + +\subsection{Special Behaviour} + +\subsection{Interaction With Other Thorns} + +\subsection{Examples} + +\subsection{Support and Feedback} + +\section{History} + +\subsection{Thorn Source Code} + +\subsection{Thorn Documentation} + +\subsection{Acknowledgements} + + +\begin{thebibliography}{9} + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/CarpetReduce/interface.ccl b/Carpet/CarpetReduce/interface.ccl new file mode 100644 index 000000000..6c14b6bae --- /dev/null +++ b/Carpet/CarpetReduce/interface.ccl @@ -0,0 +1,27 @@ +# Interface definition for thorn CarpetReduce +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/interface.ccl,v 1.9 2004/06/21 12:37:07 hawke Exp $ + +IMPLEMENTS: reduce + +uses include header: dist.hh +uses include header: vect.hh + +uses include header: carpet.hh + + + +CCTK_INT FUNCTION \ + SymmetryTableHandleForGrid (CCTK_POINTER_TO_CONST IN cctkGH) +REQUIRES FUNCTION SymmetryTableHandleForGrid + +CCTK_INT FUNCTION GetBoundarySpecification \ + (CCTK_INT IN size, \ + CCTK_INT OUT ARRAY nboundaryzones, \ + CCTK_INT OUT ARRAY is_internal, \ + CCTK_INT OUT ARRAY is_staggered, \ + CCTK_INT OUT ARRAY shiftout) +REQUIRES FUNCTION GetBoundarySpecification + + + +REAL weight TYPE=gf TAGS='prolongation="none"' "Weight function" diff --git a/Carpet/CarpetReduce/param.ccl b/Carpet/CarpetReduce/param.ccl new file mode 100644 index 000000000..0842ac0db --- /dev/null +++ b/Carpet/CarpetReduce/param.ccl @@ -0,0 +1,6 @@ +# Parameter definitions for thorn CarpetReduce +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/param.ccl,v 1.2 2004/06/14 07:01:21 schnetter Exp $ + +BOOLEAN verbose "Produce screen output while running" +{ +} "no" diff --git a/Carpet/CarpetReduce/schedule.ccl b/Carpet/CarpetReduce/schedule.ccl new file mode 100644 index 000000000..db1530ae7 --- /dev/null +++ b/Carpet/CarpetReduce/schedule.ccl @@ -0,0 +1,44 @@ +# Schedule definitions for thorn CarpetReduce +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/schedule.ccl,v 1.4 2004/08/02 11:43:35 schnetter Exp $ + +schedule CarpetReduceStartup at STARTUP +{ + LANG: C +} "Startup routine" + + + +# This might move to MaskBase +STORAGE: weight + +SCHEDULE GROUP MaskBase_SetupMask AT basegrid +{ +} "Set up the weight function" + +SCHEDULE GROUP MaskBase_SetupMask AT postregrid +{ +} "Set up the weight function" + +SCHEDULE MaskBase_InitMask IN MaskBase_SetupMask +{ + LANG: C + OPTIONS: global loop-local +} "Initialise the weight function" + +SCHEDULE GROUP SetupMask IN MaskBase_SetupMask AFTER MaskBase_InitMask +{ +} "Set up the weight function (schedule other routines in here)" + +# This might move to CoordBase +SCHEDULE CoordBase_SetupMask IN SetupMask +{ + LANG: C + OPTIONS: global loop-local +} "Set up the outer boundaries of the weight function" + +# This might move to CarpetMask +SCHEDULE CarpetMaskSetup IN SetupMask +{ + LANG: C + OPTIONS: global loop-singlemap +} "Set up the weight function for the restriction regions" diff --git a/Carpet/CarpetReduce/src/make.code.defn b/Carpet/CarpetReduce/src/make.code.defn new file mode 100644 index 000000000..afc3646db --- /dev/null +++ b/Carpet/CarpetReduce/src/make.code.defn @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn CarpetReduce +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/make.code.defn,v 1.2 2004/06/14 07:01:21 schnetter Exp $ + +# Source files in this directory +SRCS = mask_carpet.cc mask_coords.c mask_init.c reduce.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetReduce/src/mask_carpet.cc b/Carpet/CarpetReduce/src/mask_carpet.cc new file mode 100644 index 000000000..d0861320f --- /dev/null +++ b/Carpet/CarpetReduce/src/mask_carpet.cc @@ -0,0 +1,292 @@ +#include <cassert> +#include <sstream> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "carpet.hh" + +#include "mask_carpet.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_carpet.cc,v 1.5 2004/08/05 11:15:49 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetMask_Mask_cc); +} + + + +namespace CarpetMask { + + using namespace std; + using namespace Carpet; + + + + /** + * Reduce the weight on the current and the next coarser level to + * make things consistent. Set the weight to 0 inside the + * restriction region of the next coarser level, maybe to 1/2 near + * the boundary of that region, and also to 1/2 near the + * prolongation boundary of this level. + */ + + void + CarpetMaskSetup (CCTK_ARGUMENTS) + { + DECLARE_CCTK_PARAMETERS; + + assert (reffact == 2); + + if (! is_singlemap_mode()) { + CCTK_WARN (0, "This routine may only be called in singlemap mode"); + } + + if (reflevel > 0) { + + ivect const izero = ivect(0); + ivect const ione = ivect(1); + + gh<dim> const & hh = *vhh.at(Carpet::map); + dh<dim> const & dd = *vdd.at(Carpet::map); + + ibbox const & base = hh.bases.at(reflevel).at(mglevel); + + + + // Calculate the union of all refined regions + ibset refined; + for (int c=0; c<hh.components(reflevel); ++c) { + refined |= hh.extents.at(reflevel).at(c).at(mglevel); + } + refined.normalize(); + + // Calculate the union of all coarse regions + ibset parent; + for (int c=0; c<hh.components(reflevel-1); ++c) { + parent |= hh.extents.at(reflevel-1).at(c).at(mglevel).expanded_for(base); + } + parent.normalize(); + + // Subtract the refined region + ibset notrefined = parent - refined; + notrefined.normalize(); + + // Enlarge this set + ibset enlarged[dim]; + for (int d=0; d<dim; ++d) { + for (ibset::const_iterator bi = notrefined.begin(); + bi != notrefined.end(); + ++bi) + { + enlarged[d] |= (*bi).expand(ivect::dir(d), ivect::dir(d)); + } + enlarged[d].normalize(); + } + + // Intersect with the original union + ibset boundaries[dim]; + for (int d=0; d<dim; ++d) { + boundaries[d] = refined & enlarged[d]; + boundaries[d].normalize(); + } + + // Subtract the boundaries from the refined region + for (int d=0; d<dim; ++d) { + refined -= boundaries[d]; + } + refined.normalize(); + + + + // Set prolongation boundaries of this level + { + BEGIN_LOCAL_COMPONENT_LOOP (cctkGH, CCTK_GF) { + + DECLARE_CCTK_ARGUMENTS; + + ibbox const & ext + = dd.boxes.at(reflevel).at(component).at(mglevel).exterior; + + for (int d=0; d<dim; ++d) { + for (ibset::const_iterator bi = boundaries[d].begin(); + bi != boundaries[d].end(); + ++bi) + { + + ibbox const & box = (*bi) & ext; + if (! box.empty()) { + + assert (all ((box.lower() - ext.lower() ) >= 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0)); + assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0)); + ivect const imin = (box.lower() - ext.lower() ) / ext.stride(); + ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride(); + assert (all (izero <= imin)); + assert (box.empty() || all (imin <= imax)); + assert (all (imax <= ivect::ref(cctk_lsh))); + + if (verbose) { + ostringstream buf; + buf << "Setting prolongation boundary on level " << reflevel << " direction " << d << " to weight 1/2: " << imin << ":" << imax-ione; + CCTK_INFO (buf.str().c_str()); + } + + // Set weight on the boundary to 1/2 + assert (dim == 3); + for (int k=imin[2]; k<imax[2]; ++k) { + for (int j=imin[1]; j<imax[1]; ++j) { + for (int i=imin[0]; i<imax[0]; ++i) { + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] *= 0.5; + } + } + } + + } // if box not empty + + } // for box + } // for d + + } END_LOCAL_COMPONENT_LOOP; + } + + + + // Set restriction region on next coarser level + { + int const oldreflevel = reflevel; + int const oldmap = Carpet::map; + leave_singlemap_mode (cctkGH); + leave_level_mode (cctkGH); + enter_level_mode (cctkGH, oldreflevel-1); + enter_singlemap_mode (cctkGH, oldmap); + + BEGIN_LOCAL_COMPONENT_LOOP (cctkGH, CCTK_GF) { + + DECLARE_CCTK_ARGUMENTS; + + ibbox const & ext + = dd.boxes.at(reflevel).at(component).at(mglevel).exterior; + + for (ibset::const_iterator bi = refined.begin(); + bi != refined.end(); + ++bi) + { + + ibbox const & box = (*bi).contracted_for(ext) & ext; + if (! box.empty()) { + + assert (all ((box.lower() - ext.lower() ) >= 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0)); + assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0)); + ivect const imin = (box.lower() - ext.lower() ) / ext.stride(); + ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride(); + assert (all (izero <= imin)); + assert (box.empty() || all (imin <= imax)); + assert (all (imax <= ivect::ref(cctk_lsh))); + + if (verbose) { + ostringstream buf; + buf << "Setting restricted region on level " << reflevel << " to weight 0: " << imin << ":" << imax-ione; + CCTK_INFO (buf.str().c_str()); + } + + // Set weight in the restricted region to 0 + assert (dim == 3); + for (int k=imin[2]; k<imax[2]; ++k) { + for (int j=imin[1]; j<imax[1]; ++j) { + for (int i=imin[0]; i<imax[0]; ++i) { + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] = 0; + } + } + } + + } // if box not empty + + } // for box + + assert (dim == 3); + vector<int> mask (cctk_lsh[0] * cctk_lsh[1] * cctk_lsh[2]); + + assert (dim == 3); + for (int k=0; k<cctk_lsh[2]; ++k) { + for (int j=0; j<cctk_lsh[1]; ++j) { + for (int i=0; i<cctk_lsh[0]; ++i) { + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + mask[ind] = 0; + } + } + } + + for (int d=0; d<dim; ++d) { + for (ibset::const_iterator bi = boundaries[d].begin(); + bi != boundaries[d].end(); + ++bi) + { + + ibbox const & box = (*bi).contracted_for(ext) & ext; + if (! box.empty()) { + + assert (all ((box.lower() - ext.lower() ) >= 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) >= 0)); + assert (all ((box.lower() - ext.lower() ) % ext.stride() == 0)); + assert (all ((box.upper() - ext.lower() + ext.stride()) % ext.stride() == 0)); + ivect const imin = (box.lower() - ext.lower() ) / ext.stride(); + ivect const imax = (box.upper() - ext.lower() + ext.stride()) / ext.stride(); + assert (all (izero <= imin)); + assert (box.empty() || all (imin <= imax)); + assert (all (imax <= ivect::ref(cctk_lsh))); + + if (verbose) { + ostringstream buf; + buf << "Setting restriction boundary on level " << reflevel << " direction " << d << " to weight 1/2: " << imin << ":" << imax-ione; + CCTK_INFO (buf.str().c_str()); + } + + // Set weight on the boundary to 1/2 + assert (dim == 3); + for (int k=imin[2]; k<imax[2]; ++k) { + for (int j=imin[1]; j<imax[1]; ++j) { + for (int i=imin[0]; i<imax[0]; ++i) { + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + if (mask[ind] == 0) { + mask[ind] = 1; + } + mask[ind] *= 2; + } + } + } + + } // if box not empty + + } // for box + } // for d + + assert (dim == 3); + for (int k=0; k<cctk_lsh[2]; ++k) { + for (int j=0; j<cctk_lsh[1]; ++j) { + for (int i=0; i<cctk_lsh[0]; ++i) { + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + if (mask[ind] > 0) { + weight[ind] *= 1.0 - 1.0 / mask[ind]; + } + } + } + } + + } END_LOCAL_COMPONENT_LOOP; + + leave_singlemap_mode (cctkGH); + leave_level_mode (cctkGH); + enter_level_mode (cctkGH, oldreflevel); + enter_singlemap_mode (cctkGH, oldmap); + } + + } // if reflevel>0 + } + +} // namespace CarpetMask diff --git a/Carpet/CarpetReduce/src/mask_carpet.hh b/Carpet/CarpetReduce/src/mask_carpet.hh new file mode 100644 index 000000000..818e101cf --- /dev/null +++ b/Carpet/CarpetReduce/src/mask_carpet.hh @@ -0,0 +1,13 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_carpet.hh,v 1.1 2004/06/14 07:01:21 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Arguments.h" + +namespace CarpetMask { + + extern "C" { + void + CarpetMaskSetup (CCTK_ARGUMENTS); + } + +} // namespace CarpetMask diff --git a/Carpet/CarpetReduce/src/mask_coords.c b/Carpet/CarpetReduce/src/mask_coords.c new file mode 100644 index 000000000..d5d8df7c4 --- /dev/null +++ b/Carpet/CarpetReduce/src/mask_coords.c @@ -0,0 +1,128 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_coords.c,v 1.3 2004/08/04 13:03:09 schnetter Exp $ */ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + + + +void +CoordBase_SetupMask (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT nboundaryzones[6]; + CCTK_INT is_internal[6]; + CCTK_INT is_staggered[6]; + CCTK_INT shiftout[6]; + + int imin[3], imax[3]; /* boundary extent */ + + int i, j, k; + int d, f; + int dd; + + int ierr; + + + + ierr = GetBoundarySpecification + (6, nboundaryzones, is_internal, is_staggered, shiftout); + if (ierr != 0) { + CCTK_WARN (0, "Could not get boundary specification"); + } + + /* Loop over all dimensions and faces */ + for (d=0; d<3; ++d) { + for (f=0; f<2; ++f) { + /* If this processor has the outer boundary */ + if (cctk_bbox[2*d+f]) { + + int npoints; + + if (is_internal[2*d+f]) { + /* The boundary extends inwards */ + npoints = - nboundaryzones[2*d+f] + shiftout[2*d+f]; + } else { + /* The boundary extends outwards */ + npoints = nboundaryzones[2*d+f] + shiftout[2*d+f] - 1; + } + + /* If there are boundary that should be ignored */ + if (npoints >= 0) { + + if (npoints < 0 || npoints > cctk_lsh[d]) { + CCTK_WARN (0, "Illegal number of boundary points"); + } + + /* Calculate the extent of the boundary */ + for (dd=0; dd<3; ++dd) { + imin[dd] = 0; + imax[dd] = cctk_lsh[dd]; + } + + if (f==0) { + /* lower face */ + imax[d] = imin[d] + npoints; + } else { + /* upper face */ + imin[d] = imax[d] - npoints; + } + + /* Loop over the boundary */ + if (verbose) { + CCTK_VInfo (CCTK_THORNSTRING, + "Setting boundary points in direction %d face %d to weight 0", d, f); + } + for (k=imin[2]; k<imax[2]; ++k) { + for (j=imin[1]; j<imax[1]; ++j) { + for (i=imin[0]; i<imax[0]; ++i) { + + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] = 0.0; + + } + } + } + + /* When the boundary is not staggered, then give the points + on the boundary the weight 1/2 */ + if (! is_staggered[2*d+f]) { + + /* Adapt the extent of the boundary */ + if (f==0) { + /* lower face */ + imin[d] = imax[d]; + imax[d] = imin[d] + 1; + } else { + /* upper face */ + imax[d] = imin[d]; + imin[d] = imax[d] - 1; + } + + /* Loop over the points next to boundary */ + if (verbose) { + CCTK_VInfo (CCTK_THORNSTRING, + "Setting staggered boundary points in direction %d face %d to weight 1/2", d, f); + } + for (k=imin[2]; k<imax[2]; ++k) { + for (j=imin[1]; j<imax[1]; ++j) { + for (i=imin[0]; i<imax[0]; ++i) { + + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] *= 0.5; + + } + } + } + + } /* if the boundary is not staggered */ + + } /* if there are boundary points */ + + } /* if is outer boundary */ + } /* loop over faces */ + } /* loop over directions */ + +} diff --git a/Carpet/CarpetReduce/src/mask_init.c b/Carpet/CarpetReduce/src/mask_init.c new file mode 100644 index 000000000..70768b973 --- /dev/null +++ b/Carpet/CarpetReduce/src/mask_init.c @@ -0,0 +1,161 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/mask_init.c,v 1.2 2004/08/02 11:43:35 schnetter Exp $ */ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "util_Table.h" + + + +void +MaskBase_InitMask (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + +#if 0 + CCTK_INT symtable; + CCTK_INT symmetry_handle[6]; + CCTK_INT symmetry_zone_width[6]; +#endif + + int imin[3], imax[3]; /* boundary extent */ + + int i, j, k; + int d, f; + int dd; + +#if 0 + int istat; +#endif + + + + /* Initialise the weight to 1 everywhere */ + if (verbose) { + CCTK_INFO ("Initialising to weight 1"); + } + + for (k=0; k<cctk_lsh[2]; ++k) { + for (j=0; j<cctk_lsh[1]; ++j) { + for (i=0; i<cctk_lsh[0]; ++i) { + + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] = 1.0; + + } + } + } + + + + /* Set the weight to 0 on inter-processor boundaries */ + if (verbose) { + CCTK_INFO ("Setting inter-processor boundaries to weight 0"); + } + + /* Loop over all dimensions and faces */ + for (d=0; d<3; ++d) { + for (f=0; f<2; ++f) { + /* If this is an inter-processor boundary */ + if (! cctk_bbox[2*d+f]) { + + /* Calculate the extent of the boundary hyperslab */ + for (dd=0; dd<3; ++dd) { + imin[dd] = 0; + imax[dd] = cctk_lsh[dd]; + } + if (f==0) { + /* lower face */ + imax[d] = imin[d] + cctk_nghostzones[d]; + } else { + /* upper face */ + imin[d] = imax[d] - cctk_nghostzones[d]; + } + + /* Loop over the boundary slab */ + for (k=imin[2]; k<imax[2]; ++k) { + for (j=imin[1]; j<imax[1]; ++j) { + for (i=imin[0]; i<imax[0]; ++i) { + + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] = 0.0; + + } + } + } + + } + } + } + + + +#if 0 + + /* Take the symmetry boundaries into account */ + if (verbose) { + CCTK_INFO ("Setting symmetry boundaries to weight 0"); + } + + /* Get symmetry information */ + symtable = SymmetryTableHandleForGrid (cctkGH); + if (symtable < 0) { + CCTK_WARN (0, "Could not get symmetry table"); + } + istat = Util_TableGetIntArray + (symtable, 6, symmetry_handle, "symmetry_handle"); + if (istat != 6) { + CCTK_WARN (0, "Could not get \"symmetry_handle\" entry from symmetry table"); + } + istat = Util_TableGetIntArray + (symtable, 6, symmetry_zone_width, "symmetry_zone_width"); + if (istat != 6) { + CCTK_WARN (0, "Could not get \"symmetry_zone_width\" entry from symmetry table"); + } + + /* Loop over all dimensions and faces */ + for (d=0; d<3; ++d) { + for (f=0; f<2; ++f) { + /* If this is a symmetry face */ + if (symmetry_handle[2*d+f] >= 0) { + /* If this processor has the outer boundary */ + if (cctk_bbox[2*d+f]) { + + if (symmetry_zone_width[2*d+f] < 0 + || symmetry_zone_width[2*d+f] > cctk_lsh[d]) { + CCTK_WARN (0, "The symmetry table entry \"symmetry_zone_width\" contains illegal values"); + } + + /* Calculate the extent of the boundary hyperslab */ + for (dd=0; dd<3; ++dd) { + imin[dd] = 0; + imax[dd] = cctk_lsh[dd]; + } + if (f==0) { + /* lower face */ + imax[d] = imin[d] + symmetry_zone_width[2*d+f]; + } else { + /* upper face */ + imin[d] = imax[d] - symmetry_zone_width[2*d+f]; + } + + /* Loop over the boundary slab */ + for (k=imin[2]; k<imax[2]; ++k) { + for (j=imin[1]; j<imax[1]; ++j) { + for (i=imin[0]; i<imax[0]; ++i) { + + int const ind = CCTK_GFINDEX3D (cctkGH, i, j, k); + weight[ind] = 0.0; + + } + } + } + + } + } + } + } +#endif +} diff --git a/Carpet/CarpetReduce/src/reduce.cc b/Carpet/CarpetReduce/src/reduce.cc new file mode 100644 index 000000000..622d63291 --- /dev/null +++ b/Carpet/CarpetReduce/src/reduce.cc @@ -0,0 +1,1174 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.43 2004/08/02 11:43:35 schnetter Exp $ + +#include <assert.h> +#include <float.h> +#include <limits.h> +#include <math.h> +#include <stdio.h> +#include <stdlib.h> + +#include <complex> +#include <limits> +#include <vector> + +#include <mpi.h> + +#include "cctk.h" + +#include "dist.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "reduce.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.cc,v 1.43 2004/08/02 11:43:35 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetReduce_reduce_cc); +} + + + +namespace CarpetReduce { + + using namespace std; + using namespace Carpet; + + + + // Helper functions and types + + // The minimum of two values + template<typename T> inline T + mymin (const T x, const T y) + { + return min(x, y); + } + + // The maximum of two values + template<typename T> inline T + mymax (const T x, const T y) + { + return max(x, y); + } + + // Square root + template<typename T> inline T + mysqrt (const T x) + { + return sqrt(x); + } + + + + // Properties of numeric types + template<typename T> + struct my_numeric_limits { + + // The smallest possible value + static T min () + { + return mymin (numeric_limits<T>::min(), -numeric_limits<T>::max()); + } + + // The largest possible value + static T max () + { + return mymax (numeric_limits<T>::max(), -numeric_limits<T>::min()); + } + + }; + + + + // Provide for each Cactus type a "good" type, translating between + // CCTK_COMPLEX* and complex<CCTK_REAL*> + template<typename T> + struct typeconv { + typedef T goodtype; + typedef T badtype; + }; + + + + // Overload the above helper functions and types for complex values + +#ifdef CCTK_REAL4 + + template<> inline complex<CCTK_REAL4> + mymin (const complex<CCTK_REAL4> x, const complex<CCTK_REAL4> y) + { + return complex<CCTK_REAL4> (mymin(x.real(), y.real()), + mymin(x.imag(), y.imag())); + } + + template<> inline complex<CCTK_REAL4> + mymax (const complex<CCTK_REAL4> x, const complex<CCTK_REAL4> y) + { + return complex<CCTK_REAL4> (mymax(x.real(), y.real()), + mymax(x.imag(), y.imag())); + } + + template<> + struct my_numeric_limits<complex<CCTK_REAL4> > { + static complex<CCTK_REAL4> min () + { + return complex<CCTK_REAL4> (my_numeric_limits<CCTK_REAL4>::min(), + my_numeric_limits<CCTK_REAL4>::min()); + } + static complex<CCTK_REAL4> max () + { + return complex<CCTK_REAL4> (my_numeric_limits<CCTK_REAL4>::max(), + my_numeric_limits<CCTK_REAL4>::max()); + } + }; + + template<> + struct typeconv<CCTK_COMPLEX8> { + typedef complex<CCTK_REAL4> goodtype; + typedef CCTK_COMPLEX8 badtype; + }; + +#endif + +#ifdef CCTK_REAL8 + + template<> inline complex<CCTK_REAL8> + mymin (const complex<CCTK_REAL8> x, const complex<CCTK_REAL8> y) + { + return complex<CCTK_REAL8> (mymin(x.real(), y.real()), + mymin(x.imag(), y.imag())); + } + + template<> inline complex<CCTK_REAL8> + mymax (const complex<CCTK_REAL8> x, const complex<CCTK_REAL8> y) + { + return complex<CCTK_REAL8> (mymax(x.real(), y.real()), + mymax(x.imag(), y.imag())); + } + + template<> + struct my_numeric_limits<complex<CCTK_REAL8> > { + static complex<CCTK_REAL8> min () + { + return complex<CCTK_REAL8> (my_numeric_limits<CCTK_REAL8>::min(), + my_numeric_limits<CCTK_REAL8>::min()); + } + static complex<CCTK_REAL8> max () + { + return complex<CCTK_REAL8> (my_numeric_limits<CCTK_REAL8>::max(), + my_numeric_limits<CCTK_REAL8>::max()); + } + }; + + template<> + struct typeconv<CCTK_COMPLEX16> { + typedef complex<CCTK_REAL8> goodtype; + typedef CCTK_COMPLEX16 badtype; + }; + +#endif + +#ifdef CCTK_REAL16 + + template<> inline complex<CCTK_REAL16> + mymin (const complex<CCTK_REAL16> x, const complex<CCTK_REAL16> y) + { + return complex<CCTK_REAL16> (mymin(x.real(), y.real()), + mymin(x.imag(), y.imag())); + } + + template<> inline complex<CCTK_REAL16> + mymax (const complex<CCTK_REAL16> x, const complex<CCTK_REAL16> y) + { + return complex<CCTK_REAL16> (mymax(x.real(), y.real()), + mymax(x.imag(), y.imag())); + } + + template<> + struct my_numeric_limits<complex<CCTK_REAL16> > { + static complex<CCTK_REAL16> min () + { + return complex<CCTK_REAL16> (my_numeric_limits<CCTK_REAL16>::min(), + my_numeric_limits<CCTK_REAL16>::min()); + } + static complex<CCTK_REAL16> max () + { + return complex<CCTK_REAL16> (my_numeric_limits<CCTK_REAL16>::max(), + my_numeric_limits<CCTK_REAL16>::max()); + } + }; + + template<> + struct typeconv<CCTK_COMPLEX32> { + typedef complex<CCTK_REAL16> goodtype; + typedef CCTK_COMPLEX32 badtype; + }; + +#endif + + + + // Provide a square root function for integer values + +#ifdef CCTK_INT1 + template<> inline CCTK_INT1 + mysqrt (const CCTK_INT1 x) + { + return sqrt((CCTK_REAL)x); + } +#endif + +#ifdef CCTK_INT2 + template<> inline CCTK_INT2 + mysqrt (const CCTK_INT2 x) + { + return sqrt((CCTK_REAL)x); + } +#endif + +#ifdef CCTK_INT4 + template<> inline CCTK_INT4 + mysqrt (const CCTK_INT4 x) + { + return sqrt((CCTK_REAL)x); + } +#endif + +#ifdef CCTK_INT8 + template<> inline CCTK_INT8 + mysqrt (const CCTK_INT8 x) + { + return sqrt((CCTK_REAL)x); + } +#endif + + + + // Poor man's RTTI + enum ared { do_count, do_minimum, do_maximum, do_product, do_sum, + do_sum_abs, do_sum_squared, do_average, do_norm1, do_norm2, + do_norm_inf }; + + + + struct reduction { + virtual ared thered () const = 0; + virtual bool uses_cnt () const = 0; + virtual MPI_Op mpi_op () const = 0; + }; + + + + // count: count the number of grid points + struct count : reduction { + count () { } + ared thered () const { return do_count; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { accum += T(weight); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct minimum : reduction { + minimum () { } + ared thered () const { return do_minimum; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = my_numeric_limits<T>::max(); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum = mymin(accum, val); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_MIN; } + }; + + struct maximum : reduction { + maximum () { } + ared thered () const { return do_maximum; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = my_numeric_limits<T>::min(); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum = mymax(accum, val); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_MAX; } + }; + + struct product : reduction { + product () { } + ared thered () const { return do_product; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(1); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum *= weight==1 ? val : pow(val,weight); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_PROD; } + }; + + struct sum : reduction { + sum () { } + ared thered () const { return do_sum; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*val; } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct sum_abs : reduction { + sum_abs () { } + ared thered () const { return do_sum_abs; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*abs(val); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct sum_squared : reduction { + sum_squared () { } + ared thered () const { return do_sum_squared; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*val*val; } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct average : reduction { + average () { } + ared thered () const { return do_average; } + bool uses_cnt () const { return true; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*val; } + static inline void finalise (T& accum, const T& cnt) { accum /= cnt; } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct norm1 : reduction { + norm1 () { } + ared thered () const { return do_norm1; } + bool uses_cnt () const { return true; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*abs(val); } + static inline void finalise (T& accum, const T& cnt) { accum /= cnt; } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct norm2 : reduction { + norm2 () { } + ared thered () const { return do_norm2; } + bool uses_cnt () const { return true; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum += weight*abs(val)*abs(val); } + static inline void finalise (T& accum, const T& cnt) { accum = mysqrt(accum / cnt); } + }; + MPI_Op mpi_op () const { return MPI_SUM; } + }; + + struct norm_inf : reduction { + norm_inf () { } + ared thered () const { return do_norm_inf; } + bool uses_cnt () const { return false; } + template<class T> + struct op { + static inline void initialise (T& accum) { accum = T(0); } + static inline void reduce (T& accum, const T& val, const CCTK_REAL weight) { if (weight>0) accum = mymax(accum, T(abs(val))); } + static inline void finalise (T& accum, const T& cnt) { } + }; + MPI_Op mpi_op () const { return MPI_MAX; } + }; + + + + template<class T,class OP> + void initialise (void* const outval, void* const cnt) + { + OP::initialise (*(T*)outval); + *(T*)cnt = T(0); + } + + template<class T,class OP> + void reduce (const int* const lsh, const int* const bbox, + const int* const nghostzones, + vector<const void*> const& inarrays, + vector<CCTK_REAL> const& tfacs, + void* const outval, void* const cnt, + const CCTK_REAL* const weight, const CCTK_REAL levfac) + { + for (size_t tl=0; tl<inarrays.size(); ++tl) { + assert (inarrays.at(tl)); + } + assert (tfacs.size() == inarrays.size()); + T myoutval = *(T*)outval; + T mycnt = *(T*)cnt; + vect<int,dim> imin, imax; + for (int d=0; d<dim; ++d) { + imin[d] = bbox[2*d ] ? 0 : nghostzones[d]; + imax[d] = bbox[2*d+1] ? lsh[d] : lsh[d] - nghostzones[d]; + } + assert (dim==3); + for (int k=imin[2]; k<imax[2]; ++k) { + for (int j=imin[1]; j<imax[1]; ++j) { + for (int i=imin[0]; i<imax[0]; ++i) { + const int index = i + lsh[0] * (j + lsh[1] * k); + CCTK_REAL const w = (weight ? weight[index] : 1.0) * levfac; + T myinval = T(0); + for (size_t tl=0; tl<inarrays.size(); ++tl) { + myinval += (static_cast<const T*>(inarrays.at(tl))[index] + * tfacs.at(tl)); + } + OP::reduce (myoutval, myinval, w); + mycnt += w; + } + } + } + *(T*)outval = myoutval; + *(T*)cnt = mycnt; + } + + template<class T,class OP> + void finalise (void* const outval, const void* const cnt) + { + OP::finalise (*(T*)outval, *(const T*)cnt); + } + + + + void Initialise (const cGH* const cgh, const int proc, + const int num_outvals, + void* const myoutvals, const int outtype, + void* const mycounts, + const reduction* const red) + { + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (num_outvals>=0); + + const int vartypesize = CCTK_VarTypeSize(outtype); + assert (vartypesize>=0); + + assert (myoutvals); + assert (mycounts); + + assert (red); + + for (int n=0; n<num_outvals; ++n) { + + switch (outtype) { +#define INITIALISE(OP,S) \ + case do_##OP: { \ + typedef typeconv<S>::goodtype T; \ + initialise<T,OP::op<T> > (&((char*)myoutvals)[vartypesize*n], \ + &((char*)mycounts )[vartypesize*n]); \ + break; \ + } +#define TYPECASE(N,T) \ + case N: { \ + switch (red->thered()) { \ + INITIALISE(count,T); \ + INITIALISE(minimum,T); \ + INITIALISE(maximum,T); \ + INITIALISE(product,T); \ + INITIALISE(sum,T); \ + INITIALISE(sum_abs,T); \ + INITIALISE(sum_squared,T); \ + INITIALISE(average,T); \ + INITIALISE(norm1,T); \ + INITIALISE(norm2,T); \ + INITIALISE(norm_inf,T); \ + default: \ + assert (0); \ + } \ + break; \ + } +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE +#undef INITIALISE + default: + assert (0); + } + + } // for n + } + + + + void Copy (const cGH* const cgh, const int proc, + const int lsize, + const int num_inarrays, + const void* const* const inarrays, const int intype, + const int num_outvals, + void* const myoutvals, const int outtype, + void* const mycounts) + { + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (lsize >= 0); + assert (num_outvals>=0); + + assert (num_inarrays>=0); + assert (num_inarrays * lsize == num_outvals); + assert (inarrays); + for (int n=0; n<num_inarrays; ++n) { + assert (inarrays[n]); + } + + assert (myoutvals); + assert (mycounts); + + assert (outtype == intype); + + for (int m=0; m<num_inarrays; ++m) { + for (int n=0; n<lsize; ++n) { + + switch (outtype) { +#define COPY(S) \ + { \ + typedef typeconv<S>::goodtype T; \ + ((T*)myoutvals)[n+lsize*m] = ((const T*)inarrays[m])[n]; \ + ((T*)mycounts )[n+lsize*m] = T(1); \ + } +#define TYPECASE(N,T) \ + case N: { \ + COPY(T); \ + break; \ + } +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE +#undef COPY + default: + assert (0); + } + + } // for + } // for + } + + + + void Reduce (const cGH* const cgh, const int proc, + const int* const mylsh, const int* const mybbox, + const int* const mynghostzones, + const int num_inarrays, + vector<const void* const*> const& inarrays, + vector<CCTK_REAL> const& tfacs, const int intype, + const int num_outvals, + void* const myoutvals, const int outtype, + void* const mycounts, + const reduction* const red, + CCTK_REAL const * const weight, CCTK_REAL const levfac) + { + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (num_outvals>=0); + + assert (num_inarrays>=0); + assert (num_inarrays == num_outvals); + for (size_t tl=0; tl<inarrays.size(); ++tl) { + assert (inarrays.at(tl)); + for (int n=0; n<num_inarrays; ++n) { + assert (inarrays.at(tl)[n]); + } + } + assert (tfacs.size() == inarrays.size()); + + for (int d=0; d<dim; ++d) { + assert (mylsh[d]>=0); + assert (mynghostzones[d]>=0 && 2*mynghostzones[d]<=mylsh[d]); + } + + const int vartypesize = CCTK_VarTypeSize(outtype); + assert (vartypesize>=0); + + assert (myoutvals); + assert (mycounts); + + assert (outtype == intype); + + vector<const void*> myinarrays(inarrays.size()); + + for (int n=0; n<num_outvals; ++n) { + + for (size_t tl=0; tl<inarrays.size(); ++tl) { + myinarrays.at(tl) = inarrays.at(tl)[n]; + } + + switch (outtype) { +#define REDUCE(OP,S) \ + case do_##OP: { \ + typedef typeconv<S>::goodtype T; \ + reduce<T,OP::op<T> > (mylsh, mybbox, mynghostzones, \ + myinarrays, tfacs, \ + &((char*)myoutvals)[vartypesize*n], \ + &((char*)mycounts )[vartypesize*n], \ + weight, levfac); \ + break; \ + } +#define TYPECASE(N,T) \ + case N: { \ + switch (red->thered()) { \ + REDUCE(count,T); \ + REDUCE(minimum,T); \ + REDUCE(maximum,T); \ + REDUCE(product,T); \ + REDUCE(sum,T); \ + REDUCE(sum_abs,T); \ + REDUCE(sum_squared,T); \ + REDUCE(average,T); \ + REDUCE(norm1,T); \ + REDUCE(norm2,T); \ + REDUCE(norm_inf,T); \ + default: \ + assert (0); \ + } \ + break; \ + } +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE +#undef REDUCE + default: + assert (0); + } + + } // for n + } + + + + void Finalise (const cGH* const cgh, const int proc, + const int num_outvals, + void* const outvals, const int outtype, + const void* const myoutvals, + const void* const mycounts, + const reduction* const red) + { + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (num_outvals>=0); + assert (outvals || (proc!=-1 && proc!=CCTK_MyProc(cgh))); + + const int vartypesize = CCTK_VarTypeSize(outtype); + assert (vartypesize>=0); + + assert (myoutvals); + assert (mycounts); + + vector<char> counts; + if (proc==-1 || proc==CCTK_MyProc(cgh)) { + counts.resize(vartypesize * num_outvals); + } + + const MPI_Datatype mpitype = CarpetSimpleMPIDatatype(outtype); + const int mpilength = CarpetSimpleMPIDatatypeLength(outtype); + if (proc == -1) { + MPI_Allreduce ((void*)myoutvals, outvals, mpilength*num_outvals, + mpitype, red->mpi_op(), + CarpetMPIComm()); + if (red->uses_cnt()) { + MPI_Allreduce ((void*)mycounts, &counts[0], num_outvals*mpilength, + mpitype, MPI_SUM, + CarpetMPIComm()); + } + } else { + MPI_Reduce ((void*)myoutvals, outvals, num_outvals*mpilength, + mpitype, red->mpi_op(), + proc, CarpetMPIComm()); + if (red->uses_cnt()) { + MPI_Reduce ((void*)mycounts, &counts[0], num_outvals*mpilength, + mpitype, MPI_SUM, + proc, CarpetMPIComm()); + } + } + + if (proc==-1 || proc==CCTK_MyProc(cgh)) { + + for (int n=0; n<num_outvals; ++n) { + + assert (outvals); + assert ((int)counts.size() == vartypesize * num_outvals); + + switch (outtype) { +#define FINALISE(OP,S) \ + case do_##OP: { \ + typedef typeconv<S>::goodtype T; \ + finalise<T,OP::op<T> > (&((char*)outvals)[vartypesize*n], \ + & counts [vartypesize*n]); \ + break; \ + } +#define TYPECASE(N,T) \ + case N: { \ + switch (red->thered()) { \ + FINALISE(count,T); \ + FINALISE(minimum,T); \ + FINALISE(maximum,T); \ + FINALISE(product,T); \ + FINALISE(sum,T); \ + FINALISE(sum_abs,T); \ + FINALISE(sum_squared,T); \ + FINALISE(average,T); \ + FINALISE(norm1,T); \ + FINALISE(norm2,T); \ + FINALISE(norm_inf,T); \ + default: \ + assert (0); \ + } \ + break; \ + } +#include "Carpet/Carpet/src/typecase" +#undef TYPECASE +#undef FINALISE + default: + assert (0); + } + + } // for n + + } // if + } + + + + int ReduceArrays (const cGH* const cgh, const int proc, + const int num_dims, const int* const dims, + const int num_inarrays, + const void* const* const inarrays, const int intype, + const int num_outvals, + void* const outvals, const int outtype, + const reduction* const red) + { + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (num_outvals>=0); + assert (outvals || (proc!=-1 && proc!=CCTK_MyProc(cgh))); + + assert (num_inarrays>=0); + assert (inarrays); + for (int n=0; n<num_inarrays; ++n) { + assert (inarrays[n]); + } + + assert (num_dims>=0 && num_dims<=dim); + for (int d=0; d<num_dims; ++d) { + assert (dims[d]>=0); + } + + int lsize = 1; + for (int d=0; d<num_dims; ++d) { + lsize *= dims[d]; + } + + const bool do_local_reduction = num_outvals == 1; + + if (! do_local_reduction) { + assert (num_outvals == lsize); + } + + vect<int,dim> mylsh, mynghostzones; + vect<vect<int,2>,dim> mybbox; + for (int d=0; d<num_dims; ++d) { + mylsh[d] = dims[d]; + mybbox[d][0] = 0; + mybbox[d][1] = 0; + mynghostzones[d] = 0; + } + for (int d=num_dims; d<dim; ++d) { + mylsh[d] = 1; + mybbox[d][0] = 0; + mybbox[d][1] = 0; + mynghostzones[d] = 0; + } + + vector<const void* const*> myinarrays(1); + vector<CCTK_REAL> tfacs(1); + myinarrays.at(0) = inarrays; + tfacs.at(0) = 1.0; + + const int vartypesize = CCTK_VarTypeSize(outtype); + assert (vartypesize>=0); + + vector<char> myoutvals (vartypesize * num_inarrays * num_outvals); + vector<char> mycounts (vartypesize * num_inarrays * num_outvals); + + Initialise (cgh, proc, num_inarrays * num_outvals, &myoutvals[0], outtype, + &mycounts[0], red); + if (do_local_reduction) { + Reduce (cgh, proc, &mylsh[0], &mybbox[0][0], &mynghostzones[0], + num_inarrays, myinarrays, tfacs, intype, + num_inarrays * num_outvals, &myoutvals[0], outtype, + &mycounts[0], red, + NULL, 1.0); + } else { + Copy (cgh, proc, lsize, num_inarrays, inarrays, intype, + num_inarrays * num_outvals, &myoutvals[0], outtype, + &mycounts[0]); + } + Finalise (cgh, proc, num_inarrays * num_outvals, outvals, outtype, + &myoutvals[0], &mycounts[0], red); + + return 0; + } + + + + int ReduceGVs (const cGH* const cgh, const int proc, + const int num_outvals, const int outtype, void* const outvals, + const int num_invars, const int* const invars, + const reduction* const red) + { + int ierr; + + assert (cgh); + + assert (proc == -1 || (proc>=0 && proc<CCTK_nProcs(cgh))); + + assert (num_outvals>=0); + assert (num_outvals==1); + assert (outvals || (proc!=-1 && proc!=CCTK_MyProc(cgh))); + + assert (num_invars>=0); + assert (invars); + for (int n=0; n<num_invars; ++n) { + assert (invars[n]>=0 && invars[n]<CCTK_NumVars()); + } + + if (num_invars==0) return 0; + + assert (num_invars>0); + const int vi = invars[0]; + assert (vi>=0 && vi<CCTK_NumVars()); + + const int grpdim = CCTK_GroupDimFromVarI(vi); + assert (grpdim>=0 && grpdim<=dim); + for (int n=0; n<num_invars; ++n) { + assert (CCTK_GroupDimFromVarI(invars[n]) == grpdim); + } + + const int intype = CCTK_VarTypeI(vi); + for (int n=0; n<num_invars; ++n) { + assert (CCTK_VarTypeI(invars[n]) == intype); + } + + const int vartypesize = CCTK_VarTypeSize(outtype); + assert (vartypesize>=0); + + + + // meta mode + if (is_meta_mode()) { + CCTK_WARN (0, "Grid variable reductions are not possible in meta mode"); + } + + bool const reduce_arrays = CCTK_GroupTypeFromVarI(vi) != CCTK_GF; + bool const want_global_mode = is_global_mode() && ! reduce_arrays; + bool const want_level_mode = is_level_mode() && ! reduce_arrays; + + for (int n=0; n<num_invars; ++n) { + if ((CCTK_GroupTypeFromVarI(invars[n]) != CCTK_GF) != reduce_arrays) { + CCTK_WARN (0, "Cannot (yet) reduce grid functions and grid arrays/scalars at the same time"); + } + } + + // Ensure that all maps have the same number of refinement levels + for (int m=0; m<(int)vhh.size(); ++m) { + assert (vhh.at(m)->reflevels() == vhh.at(0)->reflevels()); + } + int const minrl = reduce_arrays ? 0 : want_global_mode ? 0 : reflevel; + int const maxrl = reduce_arrays ? 1 : want_global_mode ? vhh.at(0)->reflevels() : reflevel+1; + int const minm = reduce_arrays ? 0 : want_global_mode || want_level_mode ? 0 : Carpet::map; + int const maxm = reduce_arrays ? 1 : want_global_mode || want_level_mode ? maps : Carpet::map+1; + + + + // Find the time interpolation order + int partype; + void const * const parptr + = CCTK_ParameterGet ("prolongation_order_time", "Carpet", &partype); + assert (parptr); + assert (partype == PARAMETER_INTEGER); + int const prolongation_order_time = * (CCTK_INT const *) parptr; + + CCTK_REAL const current_time = cgh->cctk_time / cgh->cctk_delta_time; + + + + vector<char> myoutvals (vartypesize * num_invars * num_outvals); + vector<char> mycounts (vartypesize * num_invars * num_outvals); + + Initialise (cgh, proc, num_invars * num_outvals, &myoutvals[0], outtype, + &mycounts[0], red); + + BEGIN_GLOBAL_MODE(cgh) { + for (int rl=minrl; rl<maxrl; ++rl) { + enter_level_mode (const_cast<cGH*>(cgh), rl); + + + + // Number of necessary time levels + CCTK_REAL const level_time = cgh->cctk_time / cgh->cctk_delta_time; + bool need_time_interp + = (! reduce_arrays + && (fabs(current_time - level_time) + > 1e-12 * (fabs(level_time) + fabs(current_time) + + fabs(cgh->cctk_delta_time)))); + assert (! (! want_global_mode && need_time_interp)); + assert (! (reduce_arrays && need_time_interp)); + int num_tl = need_time_interp ? prolongation_order_time + 1 : 1; + + // Are there enought time levels? + if (need_time_interp) { + + if (CCTK_ActiveTimeLevelsVI(cgh, vi) < num_tl) { + static vector<bool> have_warned; + if (have_warned.empty()) { + have_warned.resize (CCTK_NumVars(), false); + } + if (! have_warned.at(vi)) { + char * const fullname = CCTK_FullName(vi); + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "Grid function \"%s\" has only %d active time levels on refinement level %d; this is not enough for time interpolation. Using the current time level instead", + fullname, CCTK_ActiveTimeLevelsVI(cgh, vi), reflevel); + free (fullname); + have_warned.at(vi) = true; + } + + // fall back + need_time_interp = false; + num_tl = 1; + } + + } + + vector<CCTK_REAL> tfacs(num_tl); + + // Interpolate in time, if necessary + if (need_time_interp) { + + // Get interpolation times + CCTK_REAL const time = current_time; + vector<CCTK_REAL> times(num_tl); + for (int tl=0; tl<num_tl; ++tl) { + times.at(tl) = vtt.at(0)->time (-tl, reflevel, mglevel); + } + + // Calculate interpolation weights + switch (num_tl) { + case 1: + // no interpolation + assert (fabs((time - times.at(0)) / fabs(time + times.at(0) + cgh->cctk_delta_time)) < 1e-12); + tfacs.at(0) = 1.0; + break; + case 2: + // linear (2-point) interpolation + tfacs.at(0) = (time - times.at(1)) / (times.at(0) - times.at(1)); + tfacs.at(1) = (time - times.at(0)) / (times.at(1) - times.at(0)); + break; + case 3: + // quadratic (3-point) interpolation + tfacs.at(0) = (time - times.at(1)) * (time - times.at(2)) / ((times.at(0) - times.at(1)) * (times.at(0) - times.at(2))); + tfacs.at(1) = (time - times.at(0)) * (time - times.at(2)) / ((times.at(1) - times.at(0)) * (times.at(1) - times.at(2))); + tfacs.at(2) = (time - times.at(0)) * (time - times.at(1)) / ((times.at(2) - times.at(0)) * (times.at(2) - times.at(1))); + break; + default: + assert (0); + } + + } else { // if ! need_time_interp + + assert (num_tl == 1); + tfacs.at(0) = 1; + + } // if ! need_time_interp + + + + for (int m=minm; m<maxm; ++m) { + enter_singlemap_mode (const_cast<cGH*>(cgh), m); + BEGIN_LOCAL_COMPONENT_LOOP(cgh, reduce_arrays ? CCTK_ARRAY : CCTK_GF) { + + + + assert (grpdim<=dim); + int lsh[dim], bbox[2*dim], nghostzones[dim]; + ierr = CCTK_GrouplshVI(cgh, grpdim, lsh, vi); + assert (!ierr); + ierr = CCTK_GroupbboxVI(cgh, 2*grpdim, bbox, vi); + assert (!ierr); + ierr = CCTK_GroupnghostzonesVI(cgh, grpdim, nghostzones, vi); + assert (!ierr); + for (int d=0; d<grpdim; ++d) { + assert (lsh[d]>=0); + assert (nghostzones[d]>=0 && 2*nghostzones[d]<=lsh[d]); + } + + vect<int,dim> mylsh, mynghostzones; + vect<vect<int,2>,dim> mybbox; + for (int d=0; d<grpdim; ++d) { + mylsh[d] = lsh[d]; + mybbox[d][0] = bbox[2*d ]; + mybbox[d][1] = bbox[2*d+1]; + mynghostzones[d] = nghostzones[d]; + } + for (int d=grpdim; d<dim; ++d) { + mylsh[d] = 1; + mybbox[d][0] = 0; + mybbox[d][1] = 0; + mynghostzones[d] = 0; + } + + + + CCTK_REAL const * weight; + CCTK_REAL levfac; + if (want_global_mode) { + weight = (static_cast<CCTK_REAL const *> + (CCTK_VarDataPtr (cgh, 0, "CarpetReduce::weight"))); + assert (weight); + levfac = pow(CCTK_REAL(reflevelfact), -grpdim); + } else { + weight = NULL; + levfac = 1.0; + } + + vector<vector<const void*> > myinarrays (num_tl); + vector<const void* const*> inarrays (num_tl); + for (int tl=0; tl<num_tl; ++tl) { + myinarrays.at(tl).resize (num_invars); + for (int n=0; n<num_invars; ++n) { + myinarrays.at(tl).at(n) = CCTK_VarDataPtrI(cgh, tl, invars[n]); + assert (myinarrays.at(tl).at(n)); + } + inarrays.at(tl) = &myinarrays.at(tl).at(0); + } + + + + Reduce (cgh, proc, &mylsh[0], &mybbox[0][0], &mynghostzones[0], + num_invars, inarrays, tfacs, intype, + num_invars * num_outvals, &myoutvals[0], outtype, + &mycounts[0], red, + weight, levfac); + + + + } END_LOCAL_COMPONENT_LOOP; + leave_singlemap_mode (const_cast<cGH*>(cgh)); + } // for m + + leave_level_mode (const_cast<cGH*>(cgh)); + } // for rl + } END_GLOBAL_MODE; + + Finalise (cgh, proc, num_invars * num_outvals, outvals, outtype, + &myoutvals[0], &mycounts[0], red); + + return 0; + } + + + +#define REDUCTION(OP) \ + int OP##_arrays (const cGH * const cgh, const int proc, \ + const int num_dims, const int * const dims, \ + const int num_inarrays, \ + const void * const * const inarrays, const int intype, \ + const int num_outvals, \ + void * const outvals, const int outtype) \ + { \ + const OP red; \ + return ReduceArrays \ + (cgh, proc, num_dims, dims, \ + num_inarrays, inarrays, intype, num_outvals, outvals, outtype, \ + &red); \ + } \ + \ + int OP##_GVs (const cGH * const cgh, const int proc, \ + const int num_outvals, \ + const int outtype, void * const outvals, \ + const int num_invars, const int * const invars) \ + { \ + const OP red; \ + return ReduceGVs (cgh, proc, \ + num_outvals, outtype, outvals, num_invars, invars, \ + &red); \ + } + + REDUCTION(count); + REDUCTION(minimum); + REDUCTION(maximum); + REDUCTION(product); + REDUCTION(sum); + REDUCTION(sum_abs); + REDUCTION(sum_squared); + REDUCTION(average); + REDUCTION(norm1); + REDUCTION(norm2); + REDUCTION(norm_inf); + +#undef REDUCTION + + + + void CarpetReduceStartup () + { + CCTK_RegisterReductionOperator (count_GVs, "count"); + CCTK_RegisterReductionOperator (minimum_GVs, "minimum"); + CCTK_RegisterReductionOperator (maximum_GVs, "maximum"); + CCTK_RegisterReductionOperator (product_GVs, "product"); + CCTK_RegisterReductionOperator (sum_GVs, "sum"); + CCTK_RegisterReductionOperator (sum_abs_GVs, "sum_abs"); + CCTK_RegisterReductionOperator (sum_squared_GVs, "sum_squared"); + CCTK_RegisterReductionOperator (average_GVs, "average"); + CCTK_RegisterReductionOperator (norm1_GVs, "norm1"); + CCTK_RegisterReductionOperator (norm2_GVs, "norm2"); + CCTK_RegisterReductionOperator (norm_inf_GVs, "norm_inf"); + + CCTK_RegisterReductionArrayOperator (count_arrays, "count"); + CCTK_RegisterReductionArrayOperator (minimum_arrays, "minimum"); + CCTK_RegisterReductionArrayOperator (maximum_arrays, "maximum"); + CCTK_RegisterReductionArrayOperator (product_arrays, "product"); + CCTK_RegisterReductionArrayOperator (sum_arrays, "sum"); + CCTK_RegisterReductionArrayOperator (sum_abs_arrays, "sum_abs"); + CCTK_RegisterReductionArrayOperator (sum_squared_arrays, "sum_squared"); + CCTK_RegisterReductionArrayOperator (average_arrays, "average"); + CCTK_RegisterReductionArrayOperator (norm1_arrays, "norm1"); + CCTK_RegisterReductionArrayOperator (norm2_arrays, "norm2"); + CCTK_RegisterReductionArrayOperator (norm_inf_arrays, "norm_inf"); + } + +} // namespace CarpetReduce diff --git a/Carpet/CarpetReduce/src/reduce.h b/Carpet/CarpetReduce/src/reduce.h new file mode 100644 index 000000000..a30a5a735 --- /dev/null +++ b/Carpet/CarpetReduce/src/reduce.h @@ -0,0 +1,19 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.h,v 1.3 2003/04/30 12:41:02 schnetter Exp $ */ + +#ifndef CARPETREDUCE_H +#define CARPETREDUCE_H + +#ifdef __cplusplus +namespace CarpetReduce { + extern "C" { +#endif + + /* Scheduled functions */ + void CarpetReduceStartup (void); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetReduce */ +#endif + +#endif /* !defined(CARPETREDUCE_H) */ diff --git a/Carpet/CarpetReduce/src/reduce.hh b/Carpet/CarpetReduce/src/reduce.hh new file mode 100644 index 000000000..856f2f823 --- /dev/null +++ b/Carpet/CarpetReduce/src/reduce.hh @@ -0,0 +1,8 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetReduce/src/reduce.hh,v 1.4 2002/09/01 14:52:28 schnetter Exp $ + +#ifndef CARPETREDUCE_HH +#define CARPETREDUCE_HH + +#include "reduce.h" + +#endif // !defined(CARPETREDUCE_HH) diff --git a/Carpet/CarpetRegrid/COPYING b/Carpet/CarpetRegrid/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetRegrid/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetRegrid/README b/Carpet/CarpetRegrid/README new file mode 100644 index 000000000..a10d18f5c --- /dev/null +++ b/Carpet/CarpetRegrid/README @@ -0,0 +1,8 @@ +Cactus Code Thorn CarpetRegrid +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/README,v 1.1 2001/12/14 16:34:37 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn handles regridding for Carpet. diff --git a/Carpet/CarpetRegrid/configuration.ccl b/Carpet/CarpetRegrid/configuration.ccl new file mode 100644 index 000000000..be06ddeb1 --- /dev/null +++ b/Carpet/CarpetRegrid/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetRegrid +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/configuration.ccl,v 1.3 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib + +REQUIRES THORNS: Carpet CarpetLib diff --git a/Carpet/CarpetRegrid/interface.ccl b/Carpet/CarpetRegrid/interface.ccl new file mode 100644 index 000000000..052fffc73 --- /dev/null +++ b/Carpet/CarpetRegrid/interface.ccl @@ -0,0 +1,72 @@ +# Interface definition for thorn CarpetRegrid +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/interface.ccl,v 1.17 2004/08/07 19:44:59 schnetter Exp $ + +IMPLEMENTS: CarpetRegrid + +uses include header: carpet.hh + +uses include header: defs.hh + +uses include header: bbox.hh +uses include header: bboxset.hh +uses include header: vect.hh + +uses include header: gf.hh +uses include header: gh.hh + + + +# The location of the boundary points +CCTK_INT FUNCTION GetBoundarySpecification \ + (CCTK_INT IN size, \ + CCTK_INT OUT ARRAY nboundaryzones, \ + CCTK_INT OUT ARRAY is_internal, \ + CCTK_INT OUT ARRAY is_staggered, \ + CCTK_INT OUT ARRAY shiftout) +USES FUNCTION GetBoundarySpecification + +# The overall size of the domain +CCTK_INT FUNCTION GetDomainSpecification \ + (CCTK_INT IN size, \ + CCTK_REAL OUT ARRAY physical_min, \ + CCTK_REAL OUT ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL OUT ARRAY exterior_min, \ + CCTK_REAL OUT ARRAY exterior_max, \ + CCTK_REAL OUT ARRAY spacing) +USES FUNCTION GetDomainSpecification + +# Convert between boundaries types +CCTK_INT FUNCTION ConvertFromPhysicalBoundary \ + (CCTK_INT IN size, \ + CCTK_REAL IN ARRAY physical_min, \ + CCTK_REAL IN ARRAY physical_max, \ + CCTK_REAL OUT ARRAY interior_min, \ + CCTK_REAL OUT ARRAY interior_max, \ + CCTK_REAL OUT ARRAY exterior_min, \ + CCTK_REAL OUT ARRAY exterior_max, \ + CCTK_REAL IN ARRAY spacing) +USES FUNCTION ConvertFromPhysicalBoundary + + + +# The true prototype of the routine below: +# int Carpet_Regrid (const cGH * cctkGH, +# gh<dim>::rexts * bbsss, +# gh<dim>::rbnds * obss, +# gh<dim>::rprocs * pss); +CCTK_INT FUNCTION Carpet_Regrid (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_POINTER IN bbsss, \ + CCTK_POINTER IN obss, \ + CCTK_POINTER IN pss, \ + CCTK_INT IN force) +PROVIDES FUNCTION Carpet_Regrid WITH CarpetRegrid_Regrid LANGUAGE C + + + + +CCTK_INT FUNCTION RegridLevel (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN current_max_reflevel, \ + CCTK_INT IN max_reflevels) +USES FUNCTION RegridLevel diff --git a/Carpet/CarpetRegrid/param.ccl b/Carpet/CarpetRegrid/param.ccl new file mode 100644 index 000000000..447dcc450 --- /dev/null +++ b/Carpet/CarpetRegrid/param.ccl @@ -0,0 +1,347 @@ +# Parameter definitions for thorn CarpetRegrid +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/param.ccl,v 1.21 2004/08/02 11:40:36 schnetter Exp $ + + + +BOOLEAN verbose "Print screen output while running" +{ +} "no" + + + +CCTK_INT refinement_levels "Number of refinement levels (including the base level)" STEERABLE=always +{ + 1:* :: "must be positive, and must not be larger than Carpet::max_refinement_levels" +} 1 + + + +CCTK_INT regrid_every "Regrid every n time steps" STEERABLE=always +{ + -1 :: "regrid never" + 0 :: "regrid during initial data calculation only" + 1:* :: "regrid every n time steps" +} 0 + + + +KEYWORD activate_levels_on_regrid "Whether to activate or deactivate new levels on regridding" STEERABLE=always +{ + "none" :: "Do not activate or deactivate any levels" + "fixed" :: "Activate or deactivate a fixed number of levels" + "function" :: "Activate or deactivate a variable number of levels, determined by a user-specified function. When this option is used, the parameters num_new_levels and activate_next have no effect and should not be set." +} "none" + +CCTK_INT num_new_levels "When regridding, activate this many new levels (if possible). Note that this will steer the parameter refinement_levels." STEERABLE=always +{ + : :: "Number of new levels to activate (negative numbers deactivate)" +} 0 + +CCTK_INT activate_next "The next iteration at which new levels should be activated" STEERABLE=always +{ + 0: :: "Note that this parameter is steered when new levels are activated" +} 1 + +BOOLEAN keep_same_grid_structure "Do not allow the grid structure to change; only allow levels to be switched on or off" STEERABLE=always +{ +} "no" + + + +KEYWORD refined_regions "Regions where the grid is refined" STEERABLE=always +{ + "none" :: "Don't refine" + "centre" :: "Refine around the centre of the grid only" + "manual-gridpoints" :: "Refine the regions specified by integer grid points l[123]i[xyz]{min,max}" + "manual-coordinates" :: "Refine the regions specified by coordinates l[123][xyz]{min,max}" + "manual-gridpoint-list" :: "Refine the regions specified by integer grid points in the parameter 'gridpoints'" + "manual-coordinate-list" :: "Refine the regions specified by coordinates in the parameter 'coordinates'" + "moving" :: "Refine a moving region" + "automatic" :: "Refine automatically" +} "centre" + + + +BOOLEAN smart_outer_boundaries "Use the CoordBase interface for outer boundaries" STEERABLE=always +{ +} no + + + +# Region specifications for centre refinement + +BOOLEAN symmetry_x "Refine the lower half in x-direction" STEERABLE=always +{ +} "no" +BOOLEAN symmetry_y "Refine the lower half in y-direction" STEERABLE=always +{ +} "no" +BOOLEAN symmetry_z "Refine the lower half in z-direction" STEERABLE=always +{ +} "no" + + + +# Region specifications for moving boxes + +KEYWORD moving_trajectory "Type of trajectory" STEERABLE=always +{ + "point" :: "Do not move" + "circle" :: "Move in a circle" +} "point" + +CCTK_REAL moving_region_radius "Radius of the moving region (on the first refined level)" STEERABLE=always +{ + (0: :: "" +} 1.0 + +CCTK_REAL moving_centre_x "x-coordinate of the centre" STEERABLE=always +{ + : :: "" +} 0.0 + +CCTK_REAL moving_centre_y "y-coordinate of the centre" STEERABLE=always +{ + : :: "" +} 0.0 + +CCTK_REAL moving_centre_z "z-coordinate of the centre" STEERABLE=always +{ + : :: "" +} 0.0 + +CCTK_REAL moving_circle_radius "Radius of the circle" STEERABLE=always +{ + 0: :: "" +} 1.0 + +CCTK_REAL moving_circle_frequency "Angular frequency on the circle" STEERABLE=always +{ + 0: :: "" +} 1.0 + + + +# Region specifications for manual gridpoint refinement + +CCTK_INT l1ixmin "Lower boundary of level 1 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l1iymin "Lower boundary of level 1 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l1izmin "Lower boundary of level 1 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_INT l1ixmax "Upper boundary of level 1 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l1iymax "Upper boundary of level 1 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l1izmax "Upper boundary of level 1 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +CCTK_INT l2ixmin "Lower boundary of level 2 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l2iymin "Lower boundary of level 2 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l2izmin "Lower boundary of level 2 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_INT l2ixmax "Upper boundary of level 2 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l2iymax "Upper boundary of level 2 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l2izmax "Upper boundary of level 2 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +CCTK_INT l3ixmin "Lower boundary of level 3 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l3iymin "Lower boundary of level 3 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_INT l3izmin "Lower boundary of level 3 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_INT l3ixmax "Upper boundary of level 3 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l3iymax "Upper boundary of level 3 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_INT l3izmax "Upper boundary of level 3 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +# Region specifications for manual coordinate refinement + +CCTK_REAL l1xmin "Lower boundary of level 1 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l1ymin "Lower boundary of level 1 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l1zmin "Lower boundary of level 1 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_REAL l1xmax "Upper boundary of level 1 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l1ymax "Upper boundary of level 1 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l1zmax "Upper boundary of level 1 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +CCTK_REAL l2xmin "Lower boundary of level 2 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l2ymin "Lower boundary of level 2 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l2zmin "Lower boundary of level 2 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_REAL l2xmax "Upper boundary of level 2 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l2ymax "Upper boundary of level 2 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l2zmax "Upper boundary of level 2 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +CCTK_REAL l3xmin "Lower boundary of level 3 box in x-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l3ymin "Lower boundary of level 3 box in y-direction" STEERABLE=always +{ + : :: "" +} 0 +CCTK_REAL l3zmin "Lower boundary of level 3 box in z-direction" STEERABLE=always +{ + : :: "" +} 0 + +CCTK_REAL l3xmax "Upper boundary of level 3 box in x-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l3ymax "Upper boundary of level 3 box in y-direction" STEERABLE=always +{ + : :: "" +} -1 +CCTK_REAL l3zmax "Upper boundary of level 3 box in z-direction" STEERABLE=always +{ + : :: "" +} -1 + + + +# Refinement criteria for manual-gridpoint-list + +CCTK_STRING gridpoints "List of bounding box gridpoints" STEERABLE=always +{ + "^$" :: "leave empty for no refinement" + ".*" :: "[ [ ([<imin>,<jmin>,<kmin>]:[<imax>,<jmax>,<kmax>]:[<istride>,<jstride>,<kstride>]), ... ], ... ]" +} "" + + + +# Refinement criteria for manual-coordinate-list + +CCTK_STRING coordinates "List of bounding box coordinates" STEERABLE=always +{ + "^$" :: "leave empty for no refinement" + ".*" :: "[ [ ([<xmin>,<ymin>,<zmin>]:[<xmax>,<ymax>,<zmax>]:[<xstride>,<ystride>,<zstride>]), ... ], ... ]" +} "" + + + +# Outer boundaries for manual-gridpoint-list and manual-coordinate-list + +CCTK_STRING outerbounds "Outer boundaries" STEERABLE=always +{ + "^$" :: "leave empty for no outer boundaries" + ".*" :: "[ [ [[?,?],[?,?],[?,?]], ... ], ...]" +} "" + + + +# Refinement criteria for automatic refining + +CCTK_INT minwidth "Minimum width of refined region" STEERABLE=always +{ + 1:* :: "must be positive" +} 8 + +CCTK_REAL minfraction "Minimum fraction of points in need of refinement in a refined region" STEERABLE=always +{ + 0:1 :: "must be positive and less than one" +} 0.75 + +CCTK_REAL maxerror "Maximum allowed error for non-refined grid points" STEERABLE=always +{ + *:* :: "everything goes" +} 1.0 + +CCTK_STRING errorvar "Name of grid function that contains the error" STEERABLE=always +{ + ".*" :: "must be the name of a grid function" +} "" diff --git a/Carpet/CarpetRegrid/schedule.ccl b/Carpet/CarpetRegrid/schedule.ccl new file mode 100644 index 000000000..a0479a01d --- /dev/null +++ b/Carpet/CarpetRegrid/schedule.ccl @@ -0,0 +1,8 @@ +# Schedule definitions for thorn CarpetRegrid +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/schedule.ccl,v 1.6 2004/01/25 14:57:30 schnetter Exp $ + +schedule CarpetRegridParamcheck at PARAMCHECK +{ + LANG: C + OPTIONS: global +} "Check Parameters" diff --git a/Carpet/CarpetRegrid/src/automatic.cc b/Carpet/CarpetRegrid/src/automatic.cc new file mode 100644 index 000000000..a3b4da055 --- /dev/null +++ b/Carpet/CarpetRegrid/src/automatic.cc @@ -0,0 +1,408 @@ +#include <assert.h> +#include <string.h> + +#include <algorithm> +#include <list> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gf.hh" +#include "gh.hh" +#include "vect.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/automatic.cc,v 1.5 2004/08/04 16:25:58 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_automatic_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int Automatic (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + assert (refinement_levels >= 1); + + assert (bbsss.size() >= 1); + + + + const int vi = CCTK_VarIndex (errorvar); + assert (vi>=0 && vi<CCTK_NumVars()); + const int gi = CCTK_GroupIndexFromVarI (vi); + assert (gi>=0 && gi<CCTK_NumGroups()); + const int v1 = CCTK_FirstVarIndexI(gi); + assert (v1>=0 && v1<=vi && v1<CCTK_NumVars()); + + assert (CCTK_GroupTypeI(gi) == CCTK_GF); + assert (CCTK_VarTypeI(vi) == CCTK_VARIABLE_REAL); + assert (CCTK_GroupDimI(gi) == dim); + + assert (arrdata.at(gi).at(Carpet::map).data.at(vi-v1)); + const gf<CCTK_REAL,dim>& errorgf + = (*dynamic_cast<const gf<CCTK_REAL,dim>*> + (arrdata.at(gi).at(Carpet::map).data.at(vi-v1))); + + assert (! smart_outer_boundaries); + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + Automatic_OneLevel + (cctkGH, hh, + reflevel, min(reflevels+1, maxreflevels), + minwidth, minfraction, maxerror, errorgf, + bbs, obs); + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + + + if (bbss.size() == 0) { + // remove all finer levels + bbsss.resize(reflevel+1); + obss.resize(reflevel+1); + pss.resize(reflevel+1); + } else { + assert (reflevel < (int)bbsss.size()); + if (reflevel+1 == (int)bbsss.size()) { + // add a finer level + bbsss.push_back (bbss); + obss.push_back (obs); + pss.push_back (ps); + } else { + // change a finer level + bbsss.at(reflevel+1) = bbss; + obss.at(reflevel+1) = obs; + pss.at(reflevel+1) = ps; + } + } + + return 1; + } + + + + void Automatic_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const int minwidth, + const CCTK_REAL minfraction, + const CCTK_REAL maxerror, + const gf<CCTK_REAL,dim> & errorgf, + vector<ibbox> & bbs, + vector<bbvect> & obs) + { + if (rl+1 >= numrl) return; + + // Arbitrary + const int tl = 0; + const int ml = 0; + +// cout << endl << "MRA: Choosing regions to refine in " << hh.components(rl) << " components" << endl; + + list<ibbox> bbl; + for (int c=0; c<hh.components(rl); ++c) { + const ibbox region = hh.extents.at(rl).at(c).at(ml); + assert (! region.empty()); + + const data<CCTK_REAL,dim>& errordata = *errorgf(tl,rl,c,ml); + + Automatic_Recursive (cctkGH, hh, minwidth, minfraction, maxerror, + errordata, bbl, region); + } + +// int numpoints = 0; +// for (list<ibbox>::const_iterator ibb = bbl.begin(); ibb != bbl.end(); ++ibb) { +// numpoints += ibb->size(); +// } +// cout << "MRA: Chose " << bbl.size() << " regions with a total size of " << numpoints << " to refine." << endl << endl; + + // Create bbs from bbl + assert (bbs.size() == 0); + bbs.reserve (bbl.size()); + for (list<ibbox>::const_iterator it = bbl.begin(); + it != bbl.end(); + ++it) { + bbs.push_back (*it); + } + + // Remove grid points outside the outer boundary + bbvect const obp (false); + for (size_t c=0; c<bbs.size(); ++c) { + const ivect lb = xpose(obp)[0].ifthen + (bbs.at(c).lower(), min (bbs.at(c).lower(), hh.baseextent.lower())); + const ivect ub = xpose(obp)[1].ifthen + (bbs.at(c).upper(), min (bbs.at(c).upper(), hh.baseextent.upper())); + bbs.at(c) = ibbox(lb, ub, bbs.at(c).stride()); + } + + // Create obs from bbs + obs.resize (bbs.size()); + for (size_t c=0; c<bbs.size(); ++c) { + assert (hh.bases.size()>0 && hh.bases.at(0).size()>0); + obs.at(c) = zip ((vect<bool,2> (*) (bool, bool)) &vect<bool,2>::make, + bbs.at(c).lower() == hh.baseextent.lower(), + bbs.at(c).upper() == hh.baseextent.upper()); + } + + } + + + + void Automatic_Recursive (const cGH * const cctkGH, + const gh<dim> & hh, + const int minwidth, + const CCTK_REAL minfraction, + const CCTK_REAL maxerror, + const data<CCTK_REAL,dim> & errordata, + list<ibbox> & bbl, + const ibbox & region) + { + // Just to be sure + assert (! region.empty()); + + // Count grid points that need to be refined + // (this doesn't work yet on multiple processors) + assert (CCTK_nProcs(cctkGH)==1); + int cnt = 0; + { + ibbox::iterator it=region.begin(); + do { + if (errordata[*it] > maxerror) ++cnt; + ++it; + } while (it!=region.end()); + } + const CCTK_REAL fraction = (CCTK_REAL)cnt / region.size(); + const int width = maxval(region.shape() / region.stride()); + + if (cnt == 0) { + // Don't refine + } else if (width < 2*minwidth || fraction >= minfraction) { + // Refine the whole region + const ivect lo(region.lower()); + const ivect up(region.upper()); + const ivect str(region.stride()); + bbl.push_back (ibbox(lo,up+str-str/reffact,str/reffact)); +// cout << "MRA: Refining to " << bbl.back() << " size " << bbl.back().size() << " fraction " << fraction << endl; + } else { + // Split the region and check recursively + const int dir = maxloc(region.shape()); + const ivect lo(region.lower()); + const ivect up(region.upper()); + const ivect str(region.stride()); + ivect lo1(lo), lo2(lo); + ivect up1(up), up2(up); + const int mgstr = ipow(hh.mgfact, mglevels); // honour multigrid factors + const int step = str[dir]*mgstr; + lo2[dir] = ((up[dir]+lo[dir])/2/step)*step; + up1[dir] = lo2[dir]-str[dir]; + const ibbox region1(lo1,up1,str); + const ibbox region2(lo2,up2,str); + assert (region1.is_contained_in(region)); + assert (region2.is_contained_in(region)); + assert ((region1 & region2).empty()); + assert (region1 + region2 == region); + list<ibbox> bbl1, bbl2; + Automatic_Recursive (cctkGH, hh, minwidth, minfraction, maxerror, + errordata, bbl1, region1); + Automatic_Recursive (cctkGH, hh, minwidth, minfraction, maxerror, + errordata, bbl2, region2); + // Combine regions if possible + up2 += str-str/reffact; + up2[dir] = lo2[dir]; + const ibbox iface(lo2,up2,str/reffact); + Automatic_Recombine (bbl1, bbl2, bbl, iface, dir); + } + + } + + + + void Automatic_Recombine (list<ibbox> & bbl1, + list<ibbox> & bbl2, + list<ibbox> & bbl, + const ibbox & iface, + const int dir) + { + assert (!iface.empty()); + assert (iface.lower()[dir] == iface.upper()[dir]); + + const int oldnumboxes = bbl.size() + bbl1.size() + bbl2.size(); + int numcombinedboxes = 0; + + int oldnumpoints = 0; + for (list<ibbox>::const_iterator ibb = bbl.begin(); ibb != bbl.end(); ++ibb) { + oldnumpoints += ibb->size(); + } + for (list<ibbox>::const_iterator ibb1 = bbl1.begin(); ibb1 != bbl1.end(); ++ibb1) { + oldnumpoints += ibb1->size(); + } + for (list<ibbox>::const_iterator ibb2 = bbl2.begin(); ibb2 != bbl2.end(); ++ibb2) { + oldnumpoints += ibb2->size(); + } + +#if 0 + // remember old bounding boxes + bboxset<int,dim> oldboxes; + for (list<ibbox>::const_iterator ibb1 = bbl1.begin(); ibb1 != bbl1.end(); ++ibb1) { + oldboxes += *ibb1; + } + for (list<ibbox>::const_iterator ibb2 = bbl2.begin(); ibb2 != bbl2.end(); ++ibb2) { + oldboxes += *ibb2; + } +#endif +#if 0 + cout << endl; + cout << "MakeRegions_Adaptively_Recombine: initial list:" << endl; + cout << bbl << endl; + cout << "MakeRegions_Adaptively_Recombine: initial list 1:" << endl; + cout << bbl1 << endl; + cout << "MakeRegions_Adaptively_Recombine: initial list 2:" << endl; + cout << bbl2 << endl; +#endif + + const ivect lo = iface.lower(); + const ivect up = iface.upper(); + const ivect str = iface.stride(); + + { + // prune boxes on the left + list<ibbox>::iterator ibb1 = bbl1.begin(); + while (ibb1 != bbl1.end()) { + // is this bbox just to the left of the interface? +// const ivect lo1 = ibb1->lower(); + const ivect up1 = ibb1->upper(); + const ivect str1 = ibb1->stride(); + assert (up1[dir]+str1[dir] <= lo[dir]); + assert (all(str1 == str)); + if (up1[dir]+str1[dir] < lo[dir]) { + // no: forget it + bbl.push_back (*ibb1); + ibb1 = bbl1.erase(ibb1); + continue; + } + ++ibb1; + } // while + } + + { + // prune boxes on the right + list<ibbox>::iterator ibb2 = bbl2.begin(); + while (ibb2 != bbl2.end()) { + // is this bbox just to the right of the interface? + const ivect lo2 = ibb2->lower(); +// const ivect up2 = ibb2->upper(); + const ivect str2 = ibb2->stride(); + assert (up[dir] <= lo2[dir]); + assert (all(str2 == str)); + if (up[dir] < lo2[dir]) { + // no: forget it + bbl.push_back (*ibb2); + ibb2 = bbl2.erase(ibb2); + continue; + } + ++ibb2; + } // while + } + + { + // walk all boxes on the left + list<ibbox>::iterator ibb1 = bbl1.begin(); + while (ibb1 != bbl1.end()) { + ivect lo1 = ibb1->lower(); + ivect up1 = ibb1->upper(); + ivect str1 = ibb1->stride(); + assert (up1[dir]+str1[dir] == lo[dir]); + lo1[dir] = lo[dir]; + up1[dir] = up[dir]; + const ibbox iface1 (lo1,up1,str1); + + { + // walk all boxes on the right + list<ibbox>::iterator ibb2 = bbl2.begin(); + while (ibb2 != bbl2.end()) { + ivect lo2 = ibb2->lower(); + ivect up2 = ibb2->upper(); + ivect str2 = ibb2->stride(); + assert (lo2[dir] == up[dir]); + lo2[dir] = lo[dir]; + up2[dir] = up[dir]; + const ibbox iface2 (lo2,up2,str2); + + // check for a match + if (iface1 == iface2) { + const ibbox combined (ibb1->lower(), ibb2->upper(), str); + bbl.push_back (combined); + ibb1 = bbl1.erase(ibb1); + ibb2 = bbl2.erase(ibb2); + ++numcombinedboxes; +// cout << "MRA: Combining along " << "xyz"[dir] << " to " << bbl.back() << " size " << bbl.back().size() << endl; + goto continue_search; + } + + ++ibb2; + } // while + } + + ++ibb1; + continue_search:; + } // while + } + + bbl.splice (bbl.end(), bbl1); + bbl.splice (bbl.end(), bbl2); + + assert (bbl1.empty() && bbl2.empty()); + + const int newnumboxes = bbl.size(); + assert (newnumboxes + numcombinedboxes == oldnumboxes); + + int newnumpoints = 0; + for (list<ibbox>::const_iterator ibb = bbl.begin(); ibb != bbl.end(); ++ibb) { + newnumpoints += ibb->size(); + } + assert (newnumpoints == oldnumpoints); + +#if 0 + // find new bounding boxes + bboxset<int,dim> newboxes; + for (list<ibbox>::const_iterator ibb = bbl.begin(); ibb != bbl.end(); ++ibb) { + newboxes += *ibb; + } + + // Check that they are equal + assert (newboxes.size() <= oldboxes.size()); + assert ((newboxes.size()==0) == (oldboxes.size()==0)); + assert (oldboxes == newboxes); +#endif +#if 0 + cout << "MakeRegions_Adaptively_Recombine: final list:" << endl; + cout << bbl << endl; + cout << endl; +#endif + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/baselevel.cc b/Carpet/CarpetRegrid/src/baselevel.cc new file mode 100644 index 000000000..c380c6844 --- /dev/null +++ b/Carpet/CarpetRegrid/src/baselevel.cc @@ -0,0 +1,40 @@ +#include <assert.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/baselevel.cc,v 1.2 2004/04/18 13:29:43 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_baselevel_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int BaseLevel (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + assert (refinement_levels == 1); + + assert (bbsss.size() == 1); + + return 0; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/centre.cc b/Carpet/CarpetRegrid/src/centre.cc new file mode 100644 index 000000000..7599324ea --- /dev/null +++ b/Carpet/CarpetRegrid/src/centre.cc @@ -0,0 +1,95 @@ +#include <assert.h> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/centre.cc,v 1.4 2004/04/28 15:45:25 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_centre_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int Centre (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + assert (refinement_levels >= 1); + + // do nothing if the levels already exist + if (reflevel == refinement_levels) return 0; + + assert (bbsss.size() >= 1); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + bvect const symmetric (symmetry_x, symmetry_y, symmetry_z); + ivect const zero(0), one(1), two(2); + + ivect rstr = hh.baseextent.stride(); + ivect rlb = hh.baseextent.lower(); + ivect rub = hh.baseextent.upper(); + + assert (! smart_outer_boundaries); + + for (size_t rl=1; rl<bbsss.size(); ++rl) { + + // save old values + ivect const oldrlb = rlb; + ivect const oldrub = rub; + + // refined boxes have smaller stride + assert (all(rstr%hh.reffact == 0)); + rstr /= hh.reffact; + + // calculate new extent + ivect const quarter = (rub - rlb) / 4 / rstr * rstr; + ivect const half = (rub - rlb) / 2 / rstr * rstr; + rlb = oldrlb + symmetric.ifthen(zero, quarter); + rub = oldrub - symmetric.ifthen(half, quarter); + assert (all(rlb >= oldrlb && rub <= oldrub)); + + ibbox const bb (rlb, rub, rstr); + vector<ibbox> bbs (1); + bbs.at(0) = bb; + + bbvect const ob (false); + gh<dim>::cbnds obs (1); + obs.at(0) = ob; + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/make.code.defn b/Carpet/CarpetRegrid/src/make.code.defn new file mode 100644 index 000000000..e48f9956e --- /dev/null +++ b/Carpet/CarpetRegrid/src/make.code.defn @@ -0,0 +1,18 @@ +# Main make.code.defn file for thorn CarpetRegrid +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/make.code.defn,v 1.4 2004/04/14 22:19:44 schnetter Exp $ + +# Source files in this directory +SRCS = automatic.cc \ + baselevel.cc \ + centre.cc \ + manualcoordinatelist.cc \ + manualcoordinates.cc \ + manualgridpointlist.cc \ + manualgridpoints.cc \ + moving.cc \ + regrid.cc \ + paramcheck.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetRegrid/src/manualcoordinatelist.cc b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc new file mode 100644 index 000000000..10e40ecbd --- /dev/null +++ b/Carpet/CarpetRegrid/src/manualcoordinatelist.cc @@ -0,0 +1,185 @@ +#include <cassert> +#include <cmath> +#include <cstring> +#include <sstream> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinatelist.cc,v 1.12 2004/08/14 07:42:00 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_manualcoordinatelist_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int ManualCoordinateList (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + int ierr; + + assert (refinement_levels >= 1); + + // do nothing if the levels already exist + if (reflevel == refinement_levels) return 0; + + assert (bbsss.size() >= 1); + + jjvect nboundaryzones, is_internal, is_staggered, shiftout; + ierr = GetBoundarySpecification + (2*dim, &nboundaryzones[0][0], &is_internal[0][0], + &is_staggered[0][0], &shiftout[0][0]); + assert (!ierr); + rvect physical_min, physical_max; + rvect interior_min, interior_max; + rvect exterior_min, exterior_max; + rvect base_spacing; + ierr = GetDomainSpecification + (dim, &physical_min[0], &physical_max[0], + &interior_min[0], &interior_max[0], + &exterior_min[0], &exterior_max[0], &base_spacing[0]); + assert (!ierr); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + vector<vector<rbbox> > newbbss; + if (strcmp(coordinates, "") != 0) { + istringstream gp_str(coordinates); + try { + gp_str >> newbbss; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"coordinates\""); + } + } + + vector<vector<bbvect> > newobss; + if (smart_outer_boundaries) { + // TODO: + // assert (domain_from_coordbase); + + newobss.resize(newbbss.size()); + for (size_t rl=0; rl<newobss.size(); ++rl) { + newobss.at(rl).resize(newbbss.at(rl).size()); + for (size_t c=0; c<newobss.at(rl).size(); ++c) { + for (int d=0; d<dim; ++d) { + assert (mglevel==0); + rvect const spacing = base_spacing * pow(CCTK_REAL(mgfact), basemglevel) / ipow(reffact, rl+1); + ierr = ConvertFromPhysicalBoundary + (dim, &physical_min[0], &physical_max[0], + &interior_min[0], &interior_max[0], + &exterior_min[0], &exterior_max[0], &spacing[0]); + assert (!ierr); + newobss.at(rl).at(c)[d][0] = abs(newbbss.at(rl).at(c).lower()[d] - physical_min[d]) < 1.0e-6 * spacing[d]; + if (newobss.at(rl).at(c)[d][0]) { + rvect lo = newbbss.at(rl).at(c).lower(); + rvect up = newbbss.at(rl).at(c).upper(); + rvect str = newbbss.at(rl).at(c).stride(); + lo[d] = exterior_min[d]; + newbbss.at(rl).at(c) = rbbox(lo, up, str); + } + newobss.at(rl).at(c)[d][1] = abs(newbbss.at(rl).at(c).upper()[d] - physical_max[d]) < 1.0e-6 * base_spacing[d] / ipow(reffact, rl); + if (newobss.at(rl).at(c)[d][1]) { + rvect lo = newbbss.at(rl).at(c).lower(); + rvect up = newbbss.at(rl).at(c).upper(); + rvect str = newbbss.at(rl).at(c).stride(); + up[d] = exterior_max[d]; + newbbss.at(rl).at(c) = rbbox(lo, up, str); + } + } + } + } + + } else { // if ! smart_outer_boundaries + + if (strcmp(outerbounds, "") !=0 ) { + istringstream ob_str (outerbounds); + try { + ob_str >> newobss; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"outerbounds\""); + } + bool good = newobss.size() == newbbss.size(); + if (good) { + for (size_t rl=0; rl<newobss.size(); ++rl) { + good = good && newobss.at(rl).size() == newbbss.at(rl).size(); + } + } + if (! good) { + cout << "coordinates: " << newbbss << endl; + cout << "outerbounds: " << newobss << endl; + CCTK_WARN (0, "The parameters \"outerbounds\" and \"coordinates\" must have the same structure"); + } + } else { + newobss.resize(newbbss.size()); + for (size_t rl=0; rl<newobss.size(); ++rl) { + newobss.at(rl).resize(newbbss.at(rl).size()); + for (size_t c=0; c<newobss.at(rl).size(); ++c) { + newobss.at(rl).at(c) = bbvect(false); + } + } + } + + } // if ! smart_outer_boundaries + + if (newbbss.size() < refinement_levels-1) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The parameter \"coordinates\" must contain at least \"refinement_levels-1\" (here: %d) levels", int(refinement_levels-1)); + } + + for (size_t rl=1; rl<refinement_levels; ++rl) { + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + + bbs.reserve (newbbss.at(rl-1).size()); + obs.reserve (newbbss.at(rl-1).size()); + + for (size_t c=0; c<newbbss.at(rl-1).size(); ++c) { + rbbox const & ext = newbbss.at(rl-1).at(c); + bbvect const & ob = newobss.at(rl-1).at(c); + // TODO: + // assert (domain_from_coordbase); + rvect const spacing = base_spacing * pow(CCTK_REAL(mgfact), basemglevel) / ipow(reffact, rl); + assert (all(abs(ext.stride() - spacing) < spacing * 1.0e-10)); + ManualCoordinates_OneLevel + (cctkGH, hh, rl, refinement_levels, + ext.lower(), ext.upper(), ob, bbs, obs); + } + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/manualcoordinates.cc b/Carpet/CarpetRegrid/src/manualcoordinates.cc new file mode 100644 index 000000000..91018cf95 --- /dev/null +++ b/Carpet/CarpetRegrid/src/manualcoordinates.cc @@ -0,0 +1,166 @@ +#include <assert.h> + +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualcoordinates.cc,v 1.5 2004/04/28 15:45:25 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_manualcoordinates_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int ManualCoordinates (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + if (refinement_levels > 4) { + CCTK_WARN (0, "Cannot currently specify manual refinement regions for more than 4 refinement levels"); + } + assert (refinement_levels >= 1 && refinement_levels <= 4); + + // do nothing if the levels already exist + if (reflevel == refinement_levels) return 0; + + assert (bbsss.size() >= 1); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + vector<rvect> lower(3), upper(3); + lower.at(0) = rvect (l1xmin, l1ymin, l1zmin); + upper.at(0) = rvect (l1xmax, l1ymax, l1zmax); + lower.at(1) = rvect (l2xmin, l2ymin, l2zmin); + upper.at(1) = rvect (l2xmax, l2ymax, l2zmax); + lower.at(2) = rvect (l3xmin, l3ymin, l3zmin); + upper.at(2) = rvect (l3xmax, l3ymax, l3zmax); + + assert (! smart_outer_boundaries); + + for (size_t rl=1; rl<bbsss.size(); ++rl) { + + bbvect const ob (false); + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + + ManualCoordinates_OneLevel + (cctkGH, hh, rl, refinement_levels, + lower.at(rl-1), upper.at(rl-1), ob, bbs, obs); + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + + + + void ManualCoordinates_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const rvect lower, + const rvect upper, + const bbvect obound, + vector<ibbox> & bbs, + vector<bbvect> & obs) + { + if (rl >= numrl) return; + + jvect const ilower = pos2int (cctkGH, hh, lower, rl); + jvect const iupper = pos2int (cctkGH, hh, upper, rl); + + ManualGridpoints_OneLevel + (cctkGH, hh, rl, numrl, ilower, iupper, obound, bbs, obs); + } + + + + ivect delta2int (const cGH * const cctkGH, const gh<dim>& hh, + const rvect & rpos, const int rl) + { + rvect global_lower, global_upper; + for (int d=0; d<dim; ++d) { + const int ierr = CCTK_CoordRange + (cctkGH, &global_lower[d], &global_upper[d], d+1, 0, "cart3d"); + if (ierr<0) { + global_lower[d] = 0; + global_upper[d] = 1; + } + } + const ivect global_extent (hh.baseextent.upper() - hh.baseextent.lower()); + + const rvect scale = rvect(global_extent) / (global_upper - global_lower); + const int levfac = ipow(hh.reffact, rl); + assert (all (hh.baseextent.stride() % levfac == 0)); + const ivect istride = hh.baseextent.stride() / levfac; + + const ivect ipos + = ivect(floor(rpos * scale / rvect(istride) + 0.5)) * istride; + + const rvect apos = rpos * scale; + assert (all(abs(apos - rvect(ipos)) < rvect(istride)*0.01)); + + return ipos; + } + + + + ivect pos2int (const cGH* const cctkGH, const gh<dim>& hh, + const rvect & rpos, const int rl) + { + rvect global_lower, global_upper; + for (int d=0; d<dim; ++d) { + const int ierr = CCTK_CoordRange + (cctkGH, &global_lower[d], &global_upper[d], d+1, 0, "cart3d"); + if (ierr<0) { + global_lower[d] = 0; + global_upper[d] = 1; + } + } + const ivect global_extent (hh.baseextent.upper() - hh.baseextent.lower()); + + const rvect scale = rvect(global_extent) / (global_upper - global_lower); + const int levfac = ipow(hh.reffact, rl); + assert (all (hh.baseextent.stride() % levfac == 0)); + const ivect istride = hh.baseextent.stride() / levfac; + + const ivect ipos + = (ivect(floor((rpos - global_lower) * scale / rvect(istride) + 0.5)) + * istride); + + return ipos; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/manualgridpointlist.cc b/Carpet/CarpetRegrid/src/manualgridpointlist.cc new file mode 100644 index 000000000..e53866e6c --- /dev/null +++ b/Carpet/CarpetRegrid/src/manualgridpointlist.cc @@ -0,0 +1,125 @@ +#include <assert.h> +#include <string.h> + +#include <sstream> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpointlist.cc,v 1.4 2004/07/02 10:14:51 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_manualgridpointlist_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int ManualGridpointList (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + assert (refinement_levels >= 1); + + // do nothing if the levels already exist + if (reflevel == refinement_levels) return 0; + + assert (bbsss.size() >= 1); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + vector<vector<ibbox> > newbbss; + if (strcmp(gridpoints, "") != 0) { + istringstream gp_str(gridpoints); + try { + gp_str >> newbbss; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"gridpoints\""); + } + } + + vector<vector<bbvect> > newobss; + if (strcmp(outerbounds, "") !=0 ) { + istringstream ob_str (outerbounds); + try { + ob_str >> newobss; + } catch (input_error) { + CCTK_WARN (0, "Could not parse parameter \"outerbounds\""); + } + bool good = newobss.size() == newbbss.size(); + if (good) { + for (size_t rl=0; rl<newobss.size(); ++rl) { + good = good && newobss.at(rl).size() == newbbss.at(rl).size(); + } + } + if (! good) { + cout << "gridpoints: " << newbbss << endl; + cout << "outerbounds: " << newobss << endl; + CCTK_WARN (0, "The parameters \"outerbounds\" and \"gridpoints\" must have the same structure"); + } + } else { + newobss.resize(newbbss.size()); + for (size_t rl=0; rl<newobss.size(); ++rl) { + newobss.at(rl).resize(newbbss.at(rl).size()); + for (size_t c=0; c<newobss.at(rl).size(); ++c) { + newobss.at(rl).at(c) = bbvect(false); + } + } + } + + if (newbbss.size() < refinement_levels-1) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The parameter \"gridpoints\" must contain at least \"refinement_levels-1\" (here: %d) levels", (int)refinement_levels-1); + } + + for (size_t rl=1; rl<refinement_levels; ++rl) { + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + + bbs.reserve (newbbss.at(rl-1).size()); + obs.reserve (newbbss.at(rl-1).size()); + + for (size_t c=0; c<newbbss.at(rl-1).size(); ++c) { + ibbox const & ext = newbbss.at(rl-1).at(c); + bbvect const & ob = newobss.at(rl-1).at(c); + ManualGridpoints_OneLevel + (cctkGH, hh, rl, refinement_levels, + ext.lower(), ext.upper(), ob, bbs, obs); + } + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/manualgridpoints.cc b/Carpet/CarpetRegrid/src/manualgridpoints.cc new file mode 100644 index 000000000..2a8bedb5e --- /dev/null +++ b/Carpet/CarpetRegrid/src/manualgridpoints.cc @@ -0,0 +1,131 @@ +#include <assert.h> + +#include <sstream> +#include <vector> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/manualgridpoints.cc,v 1.5 2004/07/02 10:14:51 tradke Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_manualgridpoints_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int ManualGridpoints (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_PARAMETERS; + + if (refinement_levels > 4) { + CCTK_WARN (0, "Cannot currently specify manual refinement regions for more than 4 refinement levels"); + } + assert (refinement_levels >= 1 && refinement_levels <= 4); + + // do nothing if the levels already exist + if (reflevel == refinement_levels) return 0; + + assert (bbsss.size() >= 1); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + vector<ivect> ilower(3), iupper(3); + ilower.at(0) = ivect (l1ixmin, l1iymin, l1izmin); + iupper.at(0) = ivect (l1ixmax, l1iymax, l1izmax); + ilower.at(1) = ivect (l2ixmin, l2iymin, l2izmin); + iupper.at(1) = ivect (l2ixmax, l2iymax, l2izmax); + ilower.at(2) = ivect (l3ixmin, l3iymin, l3izmin); + iupper.at(2) = ivect (l3ixmax, l3iymax, l3izmax); + + assert (! smart_outer_boundaries); + + for (size_t rl=1; rl<bbsss.size(); ++rl) { + + bbvect const ob (false); + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + + ManualGridpoints_OneLevel + (cctkGH, hh, rl,refinement_levels, + ilower.at(rl-1), iupper.at(rl-1), ob, bbs, obs); + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + + + + void ManualGridpoints_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const ivect ilower, + const ivect iupper, + const bbvect obound, + vector<ibbox> & bbs, + vector<bbvect> & obs) + { + const ivect rstr = hh.baseextent.stride(); + const ivect rlb = hh.baseextent.lower(); + const ivect rub = hh.baseextent.upper(); + + const int levfac = ipow(hh.reffact, rl); + assert (all (rstr % levfac == 0)); + const ivect str (rstr / levfac); + const ivect lb (ilower); + const ivect ub (iupper); + if (! all(lb>=rlb && ub<=rub)) { + ostringstream buf; + buf << "The refinement region boundaries for refinement level #" << rl << " are not within the main grid. Allowed are the grid point boundaries " << rlb << " - " << rub << "; specified were " << lb << " - " << ub << ends; + CCTK_WARN (0, buf.str().c_str()); + } + if (! all(lb<=ub)) { + ostringstream buf; + buf << "The refinement region boundaries for refinement level #" << rl << " have the upper boundary (" << ub << ") less than the lower boundary (" << lb << ")" << ends; + CCTK_WARN (0, buf.str().c_str()); + } + if (! all(lb%str==0 && ub%str==0)) { + CCTK_VWarn (0, __LINE__, __FILE__, CCTK_THORNSTRING, + "The refinement region boundaries for refinement level #%d are not a multiple of the stride for that level", rl); + } + assert (all(lb>=rlb && ub<=rub)); + assert (all(lb<=ub)); + assert (all(lb%str==0 && ub%str==0)); + + bbs.push_back (ibbox(lb, ub, str)); + obs.push_back (obound); + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/moving.cc b/Carpet/CarpetRegrid/src/moving.cc new file mode 100644 index 000000000..5e5287b86 --- /dev/null +++ b/Carpet/CarpetRegrid/src/moving.cc @@ -0,0 +1,84 @@ +#include <cassert> +#include <cmath> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/moving.cc,v 1.5 2004/08/02 11:42:20 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_moving_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + int Moving (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + assert (refinement_levels >= 1); + + assert (bbsss.size() >= 1); + + bbsss.resize (refinement_levels); + obss.resize (refinement_levels); + pss.resize (refinement_levels); + + bvect const symmetric (symmetry_x, symmetry_y, symmetry_z); + bbvect const ob (false); + + assert (! smart_outer_boundaries); + + for (size_t rl=1; rl<bbsss.size(); ++rl) { + + // calculate new extent + CCTK_REAL const argument = 2*M_PI * moving_circle_frequency * cctk_time; + rvect const pos + (moving_centre_x + moving_circle_radius * cos(argument), + moving_centre_y + moving_circle_radius * sin(argument), + moving_centre_z); + CCTK_REAL const radius = moving_region_radius / ipow(reffact, rl-1); + + rvect const rlb (symmetric.ifthen (rvect(0), pos - rvect(radius))); + rvect const rub (symmetric.ifthen (rvect(radius), pos + rvect(radius))); + + vector<ibbox> bbs; + gh<dim>::cbnds obs; + + ManualCoordinates_OneLevel + (cctkGH, hh, rl, refinement_levels, rlb, rub, ob, bbs, obs); + + // make multiprocessor aware + gh<dim>::cprocs ps; + SplitRegions (cctkGH, bbs, obs, ps); + + // make multigrid aware + vector<vector<ibbox> > bbss; + MakeMultigridBoxes (cctkGH, bbs, obs, bbss); + + bbsss.at(rl) = bbss; + obss.at(rl) = obs; + pss.at(rl) = ps; + + } // for rl + + return 1; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/paramcheck.cc b/Carpet/CarpetRegrid/src/paramcheck.cc new file mode 100644 index 000000000..7d85bee1e --- /dev/null +++ b/Carpet/CarpetRegrid/src/paramcheck.cc @@ -0,0 +1,47 @@ +#include <assert.h> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +#include "carpet.hh" +#include "regrid.hh" + +static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/paramcheck.cc,v 1.3 2004/08/02 11:42:36 schnetter Exp $"; + +CCTK_FILEVERSION(CarpetRegrid_paramcheck_cc) + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + int CarpetRegridParamcheck (CCTK_ARGUMENTS) + { + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + if (refinement_levels > maxreflevels) { + CCTK_PARAMWARN ("The parameter CarpetRegrid::refinement_levels is larger than Carpet::max_refinement_levels"); + } + + if (smart_outer_boundaries) { + int type; + const CCTK_INT * const domain_from_coordbase + = (const CCTK_INT *) CCTK_ParameterGet ("domain_from_coordbase", "Carpet", &type); + assert (domain_from_coordbase); + assert (type == PARAMETER_BOOLEAN); + if (! *domain_from_coordbase) { + CCTK_PARAMWARN ("The parameter CarpetRegrid::smart_outer_boundaries can only be used when Carpet::domain_from_coordbase=yes"); + } + if (CCTK_Equals(refined_regions, "manual-coordinate-list")) { + // do nothing + } else { + CCTK_PARAMWARN ("The parameter CarpetRegrid::smart_outer_boundaries can currently only be used when CarpetRegrid::refined_regions is set to \"manual-coordinate-list\""); + } + } + + return 0; + } + +} diff --git a/Carpet/CarpetRegrid/src/regrid.cc b/Carpet/CarpetRegrid/src/regrid.cc new file mode 100644 index 000000000..9ce688bdb --- /dev/null +++ b/Carpet/CarpetRegrid/src/regrid.cc @@ -0,0 +1,199 @@ +#include <assert.h> + +#include <sstream> +#include <string> + +#include "cctk.h" +#include "cctk_Parameters.h" + +#include "gh.hh" +#include "vect.hh" + +#include "carpet.hh" +#include "regrid.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.cc,v 1.48 2004/06/02 07:36:19 bzink Exp $"; + CCTK_FILEVERSION(Carpet_CarpetRegrid_regrid_cc); +} + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + CCTK_INT CarpetRegrid_Regrid (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_POINTER const bbsss_, + CCTK_POINTER const obss_, + CCTK_POINTER const pss_, + CCTK_INT force) + { + DECLARE_CCTK_PARAMETERS; + + const cGH * const cctkGH = (const cGH *) cctkGH_; + + gh<dim>::rexts & bbsss = * (gh<dim>::rexts *) bbsss_; + gh<dim>::rbnds & obss = * (gh<dim>::rbnds *) obss_; + gh<dim>::rprocs & pss = * (gh<dim>::rprocs *) pss_; + + gh<dim> const & hh = *vhh.at(Carpet::map); + + assert (is_singlemap_mode()); + + // In force mode (force == true) we do not check the + // CarpetRegrid parameters + + if (!force) { + + assert (regrid_every == -1 || regrid_every == 0 + || regrid_every % maxmglevelfact == 0); + + // Return if no regridding is desired + if (regrid_every == -1) return 0; + + // Return if we want to regrid during initial data only, and this + // is not the time for initial data + if (regrid_every == 0 && cctkGH->cctk_iteration != 0) return 0; + + // Return if we want to regrid regularly, but not at this time + if (regrid_every > 0 && cctkGH->cctk_iteration != 0 + && (cctkGH->cctk_iteration-1) % regrid_every != 0) + { + return 0; + } + + // Steer parameters + const int oldnumlevels = refinement_levels; + if (CCTK_EQUALS(activate_levels_on_regrid, "none")) { + + // do nothing + + } else if (CCTK_EQUALS(activate_levels_on_regrid, "fixed")) { + + if (cctkGH->cctk_iteration-1 >= activate_next) { + const int newnumlevels + = min(refinement_levels + num_new_levels, maxreflevels); + assert (newnumlevels>0 && newnumlevels<=maxreflevels); + + *const_cast<CCTK_INT*>(&activate_next) = cctkGH->cctk_iteration; + ostringstream next; + next << activate_next; + CCTK_ParameterSet + ("activate_next", "CarpetRegrid", next.str().c_str()); + + *const_cast<CCTK_INT*>(&refinement_levels) = newnumlevels; + ostringstream param; + param << refinement_levels; + CCTK_ParameterSet + ("refinement_levels", "CarpetRegrid", param.str().c_str()); + + if (verbose) { + ostringstream buf1, buf2; + buf1 << "Activating " << newnumlevels - oldnumlevels << " new refinement levels"; + buf2 << "There are now " << newnumlevels << " refinement levels"; + CCTK_INFO (buf1.str().c_str()); + CCTK_INFO (buf2.str().c_str()); + } + } + + } else if (CCTK_EQUALS(activate_levels_on_regrid, "function")) { + + if (! CCTK_IsFunctionAliased("RegridLevel")) { + CCTK_WARN (0, "No thorn has provided the function \"RegridLevel\""); + } + const int newnumlevels + = RegridLevel (cctkGH, refinement_levels, maxreflevels); + if (newnumlevels>0 && newnumlevels<=maxreflevels) { + + *const_cast<CCTK_INT*>(&refinement_levels) = newnumlevels; + ostringstream param; + param << refinement_levels; + CCTK_ParameterSet + ("refinement_levels", "CarpetRegrid", param.str().c_str()); + + if (verbose) { + ostringstream buf1, buf2; + buf1 << "Activating " << newnumlevels - oldnumlevels << " new refinement levels"; + buf2 << "There are now " << newnumlevels << " refinement levels"; + CCTK_INFO (buf1.str().c_str()); + CCTK_INFO (buf2.str().c_str()); + } + + } else { + CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING, + "The aliased function \"RegridLevel\" returned an illegal number of refinement levels (%d). No levels will be activated or deactivated.", newnumlevels); + } + + } else { + + assert (0); + + } + + + + // Return if this is not during initial data generation, and if no + // change in the grid structure is desired + if (cctkGH->cctk_iteration != 0) { + if (keep_same_grid_structure && refinement_levels == oldnumlevels) return 0; + } + + } else { + + // If force is active, steer activate_next to current iteration + + ostringstream next; + next << cctkGH->cctk_iteration; + CCTK_ParameterSet + ("activate_next", "CarpetRegrid", next.str().c_str()); + + } // if (!force) + + int do_recompose; + + if (CCTK_EQUALS(refined_regions, "none")) { + + do_recompose = BaseLevel (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "centre")) { + + do_recompose = Centre (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "manual-gridpoints")) { + + do_recompose + = ManualGridpoints (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "manual-coordinates")) { + + do_recompose + = ManualCoordinates (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "manual-gridpoint-list")) { + + do_recompose + = ManualGridpointList (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "manual-coordinate-list")) { + + do_recompose + = ManualCoordinateList (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "moving")) { + + do_recompose = Moving (cctkGH, hh, bbsss, obss, pss); + + } else if (CCTK_EQUALS(refined_regions, "automatic")) { + + do_recompose = Automatic (cctkGH, hh, bbsss, obss, pss); + + } else { + assert (0); + } + + return do_recompose; + } + +} // namespace CarpetRegrid diff --git a/Carpet/CarpetRegrid/src/regrid.h b/Carpet/CarpetRegrid/src/regrid.h new file mode 100644 index 000000000..a3db486f2 --- /dev/null +++ b/Carpet/CarpetRegrid/src/regrid.h @@ -0,0 +1,22 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.h,v 1.1 2002/09/01 14:52:29 schnetter Exp $ */ + +#ifndef CARPETREGRID_H +#define CARPETREGRID_H + +#include "cctk_Arguments.h" + +#ifdef __cplusplus +namespace CarpetRegrid { + extern "C" { +#endif + + /* Scheduled functions */ + int CarpetRegridStartup (); + int CarpetRegridParamcheck (CCTK_ARGUMENTS); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetRegrid */ +#endif + +#endif /* !defined(CARPETREGRID_H) */ diff --git a/Carpet/CarpetRegrid/src/regrid.hh b/Carpet/CarpetRegrid/src/regrid.hh new file mode 100644 index 000000000..62baf284a --- /dev/null +++ b/Carpet/CarpetRegrid/src/regrid.hh @@ -0,0 +1,151 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetRegrid/src/regrid.hh,v 1.14 2004/06/02 07:08:52 bzink Exp $ + +#ifndef CARPETREGRID_HH +#define CARPETREGRID_HH + +#include <list> + +#include "cctk.h" +#include "cctk_Arguments.h" + +#include "bbox.hh" +#include "gf.hh" +#include "gh.hh" +#include "vect.hh" + +#include "carpet.hh" + + + +namespace CarpetRegrid { + + using namespace std; + using namespace Carpet; + + + + extern "C" { + + /* Scheduled functions */ + int CarpetRegridParamcheck (CCTK_ARGUMENTS); + + /* Aliased functions */ +// CCTK_INT CarpetRegrid_Regrid (const cGH * const cctkGH, +// gh<dim>::rexts * bbsss, +// gh<dim>::rbnds * obss, +// gh<dim>::rprocs * pss); + CCTK_INT CarpetRegrid_Regrid (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_POINTER const bbsss_, + CCTK_POINTER const obss_, + CCTK_POINTER const pss_, + CCTK_INT force); + } + + + + int BaseLevel (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + int Centre (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + int ManualGridpoints (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + void ManualGridpoints_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const ivect ilower, + const ivect iupper, + const bbvect obound, + vector<ibbox> & bbs, + vector<bbvect> & obs); + + int ManualCoordinates (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + void ManualCoordinates_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const rvect lower, + const rvect upper, + const bbvect obound, + vector<ibbox> & bbs, + vector<bbvect> & obs); + + ivect delta2int (const cGH * const cctkGH, + const gh<dim>& hh, + const rvect & rpos, + const int rl); + ivect pos2int (const cGH* const cctkGH, + const gh<dim>& hh, + const rvect & rpos, + const int rl); + + int ManualGridpointList (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + int ManualCoordinateList (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + int Moving (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + int Automatic (cGH const * const cctkGH, + gh<dim> const & hh, + gh<dim>::rexts & bbsss, + gh<dim>::rbnds & obss, + gh<dim>::rprocs & pss); + + void Automatic_OneLevel (const cGH * const cctkGH, + const gh<dim> & hh, + const int rl, + const int numrl, + const int minwidth, + const CCTK_REAL minfraction, + const CCTK_REAL maxerror, + const gf<CCTK_REAL,dim> & errorvar, + vector<ibbox> & bbs, + vector<bbvect> & obs); + + void Automatic_Recursive (const cGH * const cctkGH, + const gh<dim> & hh, + const int minwidth, + const CCTK_REAL minfraction, + const CCTK_REAL maxerror, + const data<CCTK_REAL,dim> & errorvar, + list<ibbox> & bbl, + const ibbox & region); + + void Automatic_Recombine (list<ibbox> & bbl1, + list<ibbox> & bbl2, + list<ibbox> & bbl, + const ibbox & iface, + const int dir); + +} // namespace CarpetRegrid + +#endif // !defined(CARPETREGRID_HH) diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet.par b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet.par new file mode 100644 index 000000000..d458ffcf5 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet.par @@ -0,0 +1,67 @@ + +!DESC "1+log sliced black hole, ADM_BSSN, Iterative CN, Carpet with 2 levels" + +# Required thorns + +ActiveThorns = "CoordBase SymBase time carpet carpetlib carpetregrid carpetreduce carpetslab boundary cartgrid3d bssn_mol mol nanchecker idanalyticbh carpetioascii ioutil iobasic admcoupling admbase admmacros coordgauge spacemask staticconformal" + +# Grid + +driver::global_nx = 21 +driver::global_ny = 21 +driver::global_nz = 21 + +driver::ghost_size_x = 2 +driver::ghost_size_y = 2 +driver::ghost_size_z = 2 + +Carpet::max_refinement_levels = 3 +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 + +Carpet::init_each_timelevel = yes +Carpet::buffer_width = 1 + +CarpetRegrid::refinement_levels = 2 +CarpetRegrid::regrid_every = 0 + +grid::type = "byspacing" +grid::dxyz = 0.2 +grid::domain = "octant" + +cactus::cctk_initial_time = 0.0 +cactus::cctk_itlast = 20 + +time::dtfac = 0.25 + +# Initial data + +admbase::metric_type = "static conformal" +admbase::initial_data = "schwarzschild" + +# Evolution + +admbase::evolution_method = "adm_bssn" + +MoL::ODE_Method = "ICN" +MoL::MoL_Intermediate_Steps = 3 + +adm_bssn::bound = "flat" + +# Gauge + +admbase::lapse_evolution_method = "1+log" + +# Output + +IO::out_fileinfo="none" +IO::out_dir = $parfile + +IOBasic::outInfo_every = 1 +IOBasic::outInfo_vars = "admbase::gxx" + +IOBasic::outScalar_every = 8 +IOBasic::outScalar_vars = "adm_bssn::adm_bs_gxx adm_bssn::adm_bs_Axx adm_bssn::adm_bs_phi adm_bssn::adm_bs_k adm_bssn::adm_bs_Gx admbase::gxx admbase::kxx admbase::alp" + +################################################################## + diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_maximum.xg new file mode 100644 index 000000000..c2a4fb5ff --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0030338694509 +0.2000000000000 0.0060622352107 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_minimum.xg new file mode 100644 index 000000000..ce83b0645 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0060529928018 +0.2000000000000 -0.0121310076465 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm1.xg new file mode 100644 index 000000000..2d0fee2c6 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0009803939393 +0.2000000000000 0.0019621419182 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm2.xg new file mode 100644 index 000000000..b89fca18c --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Axx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0013481685692 +0.2000000000000 0.0026987690896 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_maximum.xg new file mode 100644 index 000000000..7b115780d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 -0.0000000000000 +0.1000000000000 0.0033315455549 +0.2000000000000 0.0133183502151 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_minimum.xg new file mode 100644 index 000000000..63a00bbe9 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 -0.0000000000000 +0.1000000000000 -0.0032152437614 +0.2000000000000 -0.0128558956690 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm1.xg new file mode 100644 index 000000000..c8b4c5097 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0001185890010 +0.2000000000000 0.0004743721288 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm2.xg new file mode 100644 index 000000000..fcdbe7cfa --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_Gx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0003240266895 +0.2000000000000 0.0012956294505 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_maximum.xg new file mode 100644 index 000000000..543140ad4 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000018310130 +0.2000000000000 0.0000153786963 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_minimum.xg new file mode 100644 index 000000000..ef54a97a0 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000243182 +0.2000000000000 0.0000002074587 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm1.xg new file mode 100644 index 000000000..148d874a0 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000003689860 +0.2000000000000 0.0000030925075 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm2.xg new file mode 100644 index 000000000..cc4076af8 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_K_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000005585168 +0.2000000000000 0.0000046841913 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_maximum.xg new file mode 100644 index 000000000..00f95a496 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0006051005074 +0.2000000000000 1.0024229394652 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_minimum.xg new file mode 100644 index 000000000..a385fa370 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9996965617401 +0.2000000000000 0.9987867828343 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm1.xg new file mode 100644 index 000000000..80ef03d6d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000196020 +0.2000000000000 1.0000003138176 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm2.xg new file mode 100644 index 000000000..22ef0940f --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_gxx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000286872 +0.2000000000000 1.0000004593159 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_maximum.xg new file mode 100644 index 000000000..aed7943b5 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0000000001213 +0.2000000000000 -0.0000000017987 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_minimum.xg new file mode 100644 index 000000000..e42573e40 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0000000091545 +0.2000000000000 -0.0000001342591 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm1.xg new file mode 100644 index 000000000..fb253f572 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000018256 +0.2000000000000 0.0000000269160 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm2.xg new file mode 100644 index 000000000..8764b5c0e --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/ADM_BS_phi_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000027762 +0.2000000000000 0.0000000408272 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_maximum.xg new file mode 100644 index 000000000..9eea94bda --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_maximum.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999992724 +0.2000000000000 0.9999999892075 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_minimum.xg new file mode 100644 index 000000000..2a5de9b88 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_minimum.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999450728 +0.2000000000000 0.9999991944452 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm1.xg new file mode 100644 index 000000000..ef617703b --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm1.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999890467 +0.2000000000000 0.9999998385042 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm2.xg new file mode 100644 index 000000000..ef617703b --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/alp_norm2.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999890467 +0.2000000000000 0.9999998385042 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_maximum.xg new file mode 100644 index 000000000..5bd7cd17c --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_maximum.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0006050644492 +0.2000000000000 1.0024224096583 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_minimum.xg new file mode 100644 index 000000000..e24d54c6e --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_minimum.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9996965251946 +0.2000000000000 0.9987862473501 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm1.xg new file mode 100644 index 000000000..64b9df55d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm1.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000122998 +0.2000000000000 1.0000002061536 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm2.xg new file mode 100644 index 000000000..66ec4ecbf --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/gxx_norm2.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000213850 +0.2000000000000 1.0000003516519 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_maximum.xg new file mode 100644 index 000000000..e02bb3010 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_maximum.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.2472763257790 +0.2000000000000 0.4943619684565 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_minimum.xg new file mode 100644 index 000000000..9de1144c6 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_minimum.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.4947361974339 +0.2000000000000 -0.9901591159322 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm1.xg new file mode 100644 index 000000000..142f838eb --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm1.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0066692216722 +0.2000000000000 0.0133472407976 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm2.xg new file mode 100644 index 000000000..688bca690 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet/kxx_norm2.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0244501122104 +0.2000000000000 0.0489269454334 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep.par b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep.par new file mode 100644 index 000000000..8fd7b38b6 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep.par @@ -0,0 +1,68 @@ + +!DESC "1+log sliced black hole, ADM_BSSN, Iterative CN, Carpet with 2 levels" + +# Required thorns + +ActiveThorns = "CoordBase SymBase time carpet carpetlib carpetregrid carpetreduce carpetslab boundary cartgrid3d bssn_mol mol nanchecker idanalyticbh carpetioascii ioutil iobasic admcoupling admbase admmacros coordgauge spacemask staticconformal" + +# Grid + +driver::global_nx = 21 +driver::global_ny = 21 +driver::global_nz = 21 + +driver::ghost_size_x = 2 +driver::ghost_size_y = 2 +driver::ghost_size_z = 2 + +Carpet::max_refinement_levels = 3 +Carpet::prolongation_order_space = 3 +Carpet::prolongation_order_time = 2 + +Carpet::init_each_timelevel = yes +Carpet::buffer_width = 1 + +CarpetRegrid::refinement_levels = 2 +CarpetRegrid::regrid_every = 0 +CarpetRegrid::keep_same_grid_structure = yes + +grid::type = "byspacing" +grid::dxyz = 0.2 +grid::domain = "octant" + +cactus::cctk_initial_time = 0.0 +cactus::cctk_itlast = 20 + +time::dtfac = 0.25 + +# Initial data + +admbase::metric_type = "static conformal" +admbase::initial_data = "schwarzschild" + +# Evolution + +admbase::evolution_method = "adm_bssn" + +MoL::ODE_Method = "ICN" +MoL::MoL_Intermediate_Steps = 3 + +adm_bssn::bound = "flat" + +# Gauge + +admbase::lapse_evolution_method = "1+log" + +# Output + +IO::out_fileinfo="none" +IO::out_dir = $parfile + +IOBasic::outInfo_every = 1 +IOBasic::outInfo_vars = "admbase::gxx" + +IOBasic::outScalar_every = 8 +IOBasic::outScalar_vars = "adm_bssn::adm_bs_gxx adm_bssn::adm_bs_Axx adm_bssn::adm_bs_phi adm_bssn::adm_bs_k adm_bssn::adm_bs_Gx admbase::gxx admbase::kxx admbase::alp" + +################################################################## + diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_maximum.xg new file mode 100644 index 000000000..c2a4fb5ff --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0030338694509 +0.2000000000000 0.0060622352107 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_minimum.xg new file mode 100644 index 000000000..ce83b0645 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0060529928018 +0.2000000000000 -0.0121310076465 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm1.xg new file mode 100644 index 000000000..2d0fee2c6 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0009803939393 +0.2000000000000 0.0019621419182 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm2.xg new file mode 100644 index 000000000..b89fca18c --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Axx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_Axx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0013481685692 +0.2000000000000 0.0026987690896 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_maximum.xg new file mode 100644 index 000000000..7b115780d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 -0.0000000000000 +0.1000000000000 0.0033315455549 +0.2000000000000 0.0133183502151 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_minimum.xg new file mode 100644 index 000000000..63a00bbe9 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 -0.0000000000000 +0.1000000000000 -0.0032152437614 +0.2000000000000 -0.0128558956690 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm1.xg new file mode 100644 index 000000000..c8b4c5097 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0001185890010 +0.2000000000000 0.0004743721288 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm2.xg new file mode 100644 index 000000000..fcdbe7cfa --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_Gx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_Gx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0003240266895 +0.2000000000000 0.0012956294505 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_maximum.xg new file mode 100644 index 000000000..543140ad4 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000018310130 +0.2000000000000 0.0000153786963 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_minimum.xg new file mode 100644 index 000000000..ef54a97a0 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000243182 +0.2000000000000 0.0000002074587 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm1.xg new file mode 100644 index 000000000..148d874a0 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000003689860 +0.2000000000000 0.0000030925075 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm2.xg new file mode 100644 index 000000000..cc4076af8 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_K_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_K v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000005585168 +0.2000000000000 0.0000046841913 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_maximum.xg new file mode 100644 index 000000000..00f95a496 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0006051005074 +0.2000000000000 1.0024229394652 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_minimum.xg new file mode 100644 index 000000000..a385fa370 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9996965617401 +0.2000000000000 0.9987867828343 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm1.xg new file mode 100644 index 000000000..80ef03d6d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000196020 +0.2000000000000 1.0000003138176 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm2.xg new file mode 100644 index 000000000..22ef0940f --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_gxx_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000286872 +0.2000000000000 1.0000004593159 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_maximum.xg new file mode 100644 index 000000000..aed7943b5 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_maximum.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0000000001213 +0.2000000000000 -0.0000000017987 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_minimum.xg new file mode 100644 index 000000000..e42573e40 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_minimum.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.0000000091545 +0.2000000000000 -0.0000001342591 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm1.xg new file mode 100644 index 000000000..fb253f572 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm1.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000018256 +0.2000000000000 0.0000000269160 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm2.xg new file mode 100644 index 000000000..8764b5c0e --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/ADM_BS_phi_norm2.xg @@ -0,0 +1,4 @@ +"ADM_BS_phi v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0000000027762 +0.2000000000000 0.0000000408272 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_maximum.xg new file mode 100644 index 000000000..9eea94bda --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_maximum.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999992724 +0.2000000000000 0.9999999892075 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_minimum.xg new file mode 100644 index 000000000..2a5de9b88 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_minimum.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999450728 +0.2000000000000 0.9999991944452 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm1.xg new file mode 100644 index 000000000..ef617703b --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm1.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999890467 +0.2000000000000 0.9999998385042 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm2.xg new file mode 100644 index 000000000..ef617703b --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/alp_norm2.xg @@ -0,0 +1,4 @@ +"alp v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9999999890467 +0.2000000000000 0.9999998385042 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_maximum.xg new file mode 100644 index 000000000..5bd7cd17c --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_maximum.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0006050644492 +0.2000000000000 1.0024224096583 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_minimum.xg new file mode 100644 index 000000000..e24d54c6e --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_minimum.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 0.9996965251946 +0.2000000000000 0.9987862473501 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm1.xg new file mode 100644 index 000000000..64b9df55d --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm1.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000122998 +0.2000000000000 1.0000002061536 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm2.xg new file mode 100644 index 000000000..66ec4ecbf --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/gxx_norm2.xg @@ -0,0 +1,4 @@ +"gxx v time +0.0000000000000 1.0000000000000 +0.1000000000000 1.0000000213850 +0.2000000000000 1.0000003516519 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_maximum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_maximum.xg new file mode 100644 index 000000000..e02bb3010 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_maximum.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.2472763257790 +0.2000000000000 0.4943619684565 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_minimum.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_minimum.xg new file mode 100644 index 000000000..9de1144c6 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_minimum.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 -0.4947361974339 +0.2000000000000 -0.9901591159322 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm1.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm1.xg new file mode 100644 index 000000000..142f838eb --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm1.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0066692216722 +0.2000000000000 0.0133472407976 diff --git a/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm2.xg b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm2.xg new file mode 100644 index 000000000..688bca690 --- /dev/null +++ b/Carpet/CarpetRegrid/test/test_BSSN_MoL_Carpet_keep/kxx_norm2.xg @@ -0,0 +1,4 @@ +"kxx v time +0.0000000000000 0.0000000000000 +0.1000000000000 0.0244501122104 +0.2000000000000 0.0489269454334 diff --git a/Carpet/CarpetSlab/COPYING b/Carpet/CarpetSlab/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetSlab/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetSlab/README b/Carpet/CarpetSlab/README new file mode 100644 index 000000000..ea6ac8893 --- /dev/null +++ b/Carpet/CarpetSlab/README @@ -0,0 +1,8 @@ +Cactus Code Thorn CarpetSlab +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/README,v 1.2 2004/01/25 14:57:30 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn provides hyperslabbing for Carpet. diff --git a/Carpet/CarpetSlab/configuration.ccl b/Carpet/CarpetSlab/configuration.ccl new file mode 100644 index 000000000..8ff27ef27 --- /dev/null +++ b/Carpet/CarpetSlab/configuration.ccl @@ -0,0 +1,6 @@ +# Configuration definitions for thorn CarpetSlab +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/configuration.ccl,v 1.5 2004/06/08 21:09:25 schnetter Exp $ + +REQUIRES Carpet CarpetLib + +REQUIRES THORNS: Carpet CarpetLib diff --git a/Carpet/CarpetSlab/interface.ccl b/Carpet/CarpetSlab/interface.ccl new file mode 100644 index 000000000..78a5743da --- /dev/null +++ b/Carpet/CarpetSlab/interface.ccl @@ -0,0 +1,97 @@ +# Interface definition for thorn CarpetSlab +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/interface.ccl,v 1.12 2004/06/08 21:09:25 schnetter Exp $ + +IMPLEMENTS: Hyperslab + +includes header: slab.h in Hyperslab.h + +uses include header: carpet.hh + +uses include header: bbox.hh +uses include header: bboxset.hh +uses include header: vect.hh + +uses include header: gdata.hh + +uses include header: dh.hh +uses include header: ggf.hh +uses include header: gh.hh + + + +CCTK_INT FUNCTION \ + Hyperslab_Get (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN mapping_handle, \ + CCTK_INT IN proc, \ + CCTK_INT IN vindex, \ + CCTK_INT IN timelevel, \ + CCTK_INT IN hdatatype, \ + CCTK_POINTER IN hdata) + +CCTK_INT FUNCTION \ + Hyperslab_GetList (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN mapping_handle, \ + CCTK_INT IN num_arrays, \ + CCTK_INT ARRAY IN procs, \ + CCTK_INT ARRAY IN vindices, \ + CCTK_INT ARRAY IN timelevels, \ + CCTK_INT ARRAY IN hdatatypes, \ + CCTK_POINTER ARRAY IN hdata, \ + CCTK_INT ARRAY OUT retvals) + +#CCTK_INT FUNCTION \ +# Hyperslab_LocalMappingByIndex (CCTK_POINTER_TO_CONST IN cctkGH, \ +# CCTK_INT IN vindex, \ +# CCTK_INT IN hdim, \ +# CCTK_INT ARRAY IN direction, \ +# CCTK_INT ARRAY IN origin, \ +# CCTK_INT ARRAY IN extent, \ +# CCTK_INT ARRAY IN downsample, \ +# CCTK_INT IN table_handle, \ +# CCTK_INT CCTK_FPOINTER IN \ +# conversion_fn (CCTK_INT IN nelems, \ +# CCTK_INT IN src_stride, \ +# CCTK_INT IN dst_stride, \ +# CCTK_INT IN src_type, \ +# CCTK_INT IN dst_type, \ +# CCTK_POINTER_TO_CONST IN from, \ +# CCTK_POINTER IN to), \ +# CCTK_INT ARRAY OUT hsize_local, \ +# CCTK_INT ARRAY OUT hsize_global, \ +# CCTK_INT ARRAY OUT hoffset_global) + +CCTK_INT FUNCTION \ + Hyperslab_GlobalMappingByIndex (CCTK_POINTER_TO_CONST IN cctkGH, \ + CCTK_INT IN vindex, \ + CCTK_INT IN hdim, \ + CCTK_INT ARRAY IN direction, \ + CCTK_INT ARRAY IN origin, \ + CCTK_INT ARRAY IN extent, \ + CCTK_INT ARRAY IN downsample, \ + CCTK_INT IN table_handle, \ + CCTK_INT CCTK_FPOINTER IN \ + conversion_fn (CCTK_INT IN nelems, \ + CCTK_INT IN src_stride, \ + CCTK_INT IN dst_stride, \ + CCTK_INT IN src_type, \ + CCTK_INT IN dst_type, \ + CCTK_POINTER_TO_CONST IN from, \ + CCTK_POINTER IN to), \ + CCTK_INT ARRAY OUT hsize) + +CCTK_INT FUNCTION Hyperslab_FreeMapping (CCTK_INT IN mapping_handle) + + + +PROVIDES FUNCTION Hyperslab_Get \ + WITH CarpetSlab_Get LANGUAGE C +PROVIDES FUNCTION Hyperslab_GetList \ + WITH CarpetSlab_GetList LANGUAGE C +PROVIDES FUNCTION Hyperslab_Get \ + WITH CarpetSlab_Fill LANGUAGE C +PROVIDES FUNCTION Hyperslab_GlobalMappingByIndex \ + WITH CarpetSlab_GlobalMappingByIndex LANGUAGE C +#PROVIDES FUNCTION Hyperslab_LocalMappingByIndex \ +# WITH CarpetSlab_LocalMappingByIndex LANGUAGE C +PROVIDES FUNCTION Hyperslab_FreeMapping \ + WITH CarpetSlab_FreeMapping LANGUAGE C diff --git a/Carpet/CarpetSlab/param.ccl b/Carpet/CarpetSlab/param.ccl new file mode 100644 index 000000000..e4ace55bb --- /dev/null +++ b/Carpet/CarpetSlab/param.ccl @@ -0,0 +1,2 @@ +# Parameter definitions for thorn CarpetSlab +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/param.ccl,v 1.1 2001/03/01 13:40:10 eschnett Exp $ diff --git a/Carpet/CarpetSlab/schedule.ccl b/Carpet/CarpetSlab/schedule.ccl new file mode 100644 index 000000000..9aeffc07f --- /dev/null +++ b/Carpet/CarpetSlab/schedule.ccl @@ -0,0 +1,2 @@ +# Schedule definitions for thorn CarpetSlab +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/schedule.ccl,v 1.2 2003/11/05 16:18:39 schnetter Exp $ diff --git a/Carpet/CarpetSlab/src/make.code.defn b/Carpet/CarpetSlab/src/make.code.defn new file mode 100644 index 000000000..880ebcffc --- /dev/null +++ b/Carpet/CarpetSlab/src/make.code.defn @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn CarpetSlab -*-Makefile-*- +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/make.code.defn,v 1.2 2002/10/24 10:53:48 schnetter Exp $ + +# Source files in this directory +SRCS = slab.cc + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetSlab/src/slab.cc b/Carpet/CarpetSlab/src/slab.cc new file mode 100644 index 000000000..f734aafb9 --- /dev/null +++ b/Carpet/CarpetSlab/src/slab.cc @@ -0,0 +1,880 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.20 2004/08/19 06:35:36 schnetter Exp $ + +#include <assert.h> +#include <stdlib.h> +#include <string.h> + +#include <vector> + +#include "cctk.h" + +#include "util_Table.h" + +#include "bbox.hh" +#include "bboxset.hh" +#include "dh.hh" +#include "gdata.hh" +#include "gh.hh" +#include "ggf.hh" +#include "vect.hh" + +#include "carpet.hh" + +#include "slab.hh" + +extern "C" { + static const char* rcsid = "$Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.cc,v 1.20 2004/08/19 06:35:36 schnetter Exp $"; + CCTK_FILEVERSION(Carpet_CarpetSlab_slab_cc); +} + + + +namespace CarpetSlab { + + using namespace Carpet; + + + + // Mapping object + // (just store the mapping) + struct mapping { + int vindex; + int hdim; + vector<int> origin; // [vdim] + vector<int> dirs; // [hdim] + vector<int> stride; // [hdim] + vector<int> length; // [hdim] + }; + + + + int + StoreMapping (mapping * const mp) + { + int const table = Util_TableCreate (UTIL_TABLE_FLAGS_DEFAULT); + assert (table>=0); + int const ierr = Util_TableSetPointer (table, mp, "mapping"); + assert (ierr>=0); + return table; + } + + mapping * + RetrieveMapping (int const table) + { + CCTK_POINTER mp; + int const ierr = Util_TableGetPointer (table, &mp, "mapping"); + assert (ierr>=0); + return (mapping *)mp; + } + + void + DeleteMapping (int const table) + { + int const ierr = Util_TableDestroy (table); + assert (ierr>=0); + } + + + + void + FillSlab (const cGH* const cgh, + const int dest_proc, + const int n, + const int ti, + const int hdim, + const int origin[/*vdim*/], + const int dirs[/*hdim*/], + const int stride[/*hdim*/], + const int length[/*hdim*/], + void* const hdata) + { + int ierr; + + // Check Cactus grid hierarchy + assert (cgh); + + // Check destination processor + assert (dest_proc>=-1 && dest_proc<CCTK_nProcs(cgh)); + + // Check variable index + assert (n>=0 && n<CCTK_NumVars()); + + // Get info about variable + const int group = CCTK_GroupIndexFromVarI(n); + assert (group>=0); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int var = n - n0; + assert (var>=0); + + // Get info about group + cGroup gp; + ierr = CCTK_GroupData (group, &gp); + assert (! ierr); + assert (gp.dim<=dim); + assert (CCTK_QueryGroupStorageI(cgh, group)); + const int typesize = CCTK_VarTypeSize(gp.vartype); + assert (typesize>0); + + if (gp.grouptype==CCTK_GF && reflevel==-1) { + CCTK_WARN (0, "It is not possible to use hyperslabbing for a grid function in meta mode or global mode (use singlemap mode instead)"); + } + const int rl = gp.grouptype==CCTK_GF ? reflevel : 0; + + if (gp.grouptype==CCTK_GF && Carpet::map==-1 && maps>1) { + CCTK_WARN (0, "It is not possible to use hyperslabbing for a grid function in level mode when there are multiple maps (use singlemap mode instead, or make sure that there is only one map)"); + } + const int m = gp.grouptype==CCTK_GF ? Carpet::map : 0; + const int oldmap = Carpet::map; + if (gp.grouptype==CCTK_GF && oldmap==-1) { + enter_singlemap_mode(const_cast<cGH*>(cgh), m); + } + + // Check dimension + assert (hdim>=0 && hdim<=gp.dim); + + // Get more info about group + cGroupDynamicData gd; + ierr = CCTK_GroupDynamicData (cgh, group, &gd); + assert (! ierr); + const vect<int,dim> sizes = vect<int,dim>::ref(gd.gsh); + for (int d=0; d<dim; ++d) { + assert (sizes[d] >= 0); + } + + // Check timelevel + const int num_tl = gp.numtimelevels; + assert (ti>=0 && ti<num_tl); + const int tl = -ti; + + // Check origin + for (int d=0; d<dim; ++d) { + assert (origin[d]>=0 && origin[d]<=sizes[d]); + } + + // Check directions + for (int dd=0; dd<hdim; ++dd) { + assert (dirs[dd]>=1 && dirs[dd]<=dim); + } + + // Check stride + for (int dd=0; dd<hdim; ++dd) { + assert (stride[dd]>0); + } + + // Check length + for (int dd=0; dd<hdim; ++dd) { + assert (length[dd]>=0); + } + + // Check extent + for (int dd=0; dd<hdim; ++dd) { + assert (origin[dirs[dd]-1] + length[dd] <= sizes[dirs[dd]]); + } + + // Get insider information about variable + const gh<dim>* myhh; + const dh<dim>* mydd; + const ggf<dim>* myff; + assert (group < (int)arrdata.size()); + myhh = arrdata.at(group).at(m).hh; + assert (myhh); + mydd = arrdata.at(group).at(m).dd; + assert (mydd); + assert (var < (int)arrdata.at(group).at(m).data.size()); + myff = arrdata.at(group).at(m).data.at(var); + assert (myff); + + // Detemine collecting processor + const int collect_proc = dest_proc<0 ? 0 : dest_proc; + + // Determine own rank + const int rank = CCTK_MyProc(cgh); + + // Calculate global size + int totalsize = 1; + for (int dd=0; dd<hdim; ++dd) { + totalsize *= length[dd]; + } + + // Allocate memory + assert (hdata); + if (dest_proc==-1 || rank==dest_proc) { + memset (hdata, 0, totalsize * typesize); + } + + // Get sample data + const gdata<dim>* mydata; + mydata = (*myff)(tl, rl, 0, 0); + + // Stride of data in memory + const vect<int,dim> str = mydata->extent().stride(); + + // Stride of collected data + vect<int,dim> hstr = str; + for (int dd=0; dd<hdim; ++dd) { + hstr[dirs[dd]-1] *= stride[dd]; + } + + // Lower bound of collected data + vect<int,dim> hlb(0); + for (int d=0; d<gp.dim; ++d) { + hlb[d] = origin[d] * str[d]; + } + + // Upper bound of collected data + vect<int,dim> hub = hlb; + for (int dd=0; dd<hdim; ++dd) { + hub[dirs[dd]-1] += (length[dd]-1) * hstr[dirs[dd]-1]; + } + + // Calculate extent to collect + const bbox<int,dim> hextent (hlb, hub, hstr); + assert (hextent.size() == totalsize); + + // Create collector data object + void* myhdata = rank==collect_proc ? hdata : 0; + gdata<dim>* const alldata = mydata->make_typed(-1); + alldata->allocate (hextent, collect_proc, myhdata); + + // Done with the temporary stuff + mydata = 0; + + for (comm_state<dim> state; !state.done(); state.step()) { + + // Loop over all components, copying data from them + BEGIN_LOCAL_COMPONENT_LOOP (cgh, gp.grouptype) { + + // Get data object + mydata = (*myff)(tl, rl, component, mglevel); + + // Calculate overlapping extents + const bboxset<int,dim> myextents + = ((mydd->boxes.at(rl).at(component).at(mglevel).sync_not + | mydd->boxes.at(rl).at(component).at(mglevel).interior) + & hextent); + + // Loop over overlapping extents + for (bboxset<int,dim>::const_iterator ext_iter = myextents.begin(); + ext_iter != myextents.end(); + ++ext_iter) { + + // Copy data + alldata->copy_from (state, mydata, *ext_iter); + + } + + } END_LOCAL_COMPONENT_LOOP; + + } // for step + + // Copy result to all processors + if (dest_proc == -1) { + vector<gdata<dim>*> tmpdata(CCTK_nProcs(cgh)); + vector<comm_state<dim> > state; + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + void* myhdata = rank==proc ? hdata : 0; + tmpdata.at(proc) = mydata->make_typed(-1); + tmpdata.at(proc)->allocate (alldata->extent(), proc, myhdata); + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + } + } + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + } + } + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + delete tmpdata.at(proc); + } + } + + } // Copy result + + if (gp.grouptype==CCTK_GF && oldmap==-1) { + leave_singlemap_mode(const_cast<cGH*>(cgh)); + } + + delete alldata; + } + + + + void * + GetSlab (const cGH* const cgh, + const int dest_proc, + const int n, + const int ti, + const int hdim, + const int origin[/*vdim*/], + const int dirs[/*hdim*/], + const int stride[/*hdim*/], + const int length[/*hdim*/]) + { + // Check Cactus grid hierarchy + assert (cgh); + + // Check destination processor + assert (dest_proc>=-1 && dest_proc<CCTK_nProcs(cgh)); + + // Check variable index + assert (n>=0 && n<CCTK_NumVars()); + + // Get info about variable + const int group = CCTK_GroupIndexFromVarI(n); + assert (group>=0); + const int n0 = CCTK_FirstVarIndexI(group); + assert (n0>=0); + const int var = n - n0; + assert (var>=0); + + // Get info about group + cGroup gp; + CCTK_GroupData (group, &gp); + assert (gp.dim<=dim); + assert (CCTK_QueryGroupStorageI(cgh, group)); + const int typesize = CCTK_VarTypeSize(gp.vartype); + assert (typesize>0); + + if (gp.grouptype==CCTK_GF && reflevel==-1) { + CCTK_WARN (0, "It is not possible to use hyperslabbing for a grid function in global mode (use singlemap mode instead)"); + } + const int rl = gp.grouptype==CCTK_GF ? reflevel : 0; + + if (gp.grouptype==CCTK_GF && Carpet::map==-1) { + CCTK_WARN (0, "It is not possible to use hyperslabbing for a grid function in level mode (use singlemap mode instead)"); + } + const int m = gp.grouptype==CCTK_GF ? Carpet::map : 0; + + // Check dimension + assert (hdim>=0 && hdim<=gp.dim); + + // Check timelevel + const int num_tl = gp.numtimelevels; + assert (ti>=0 && ti<num_tl); + const int tl = -ti; + + // Check origin +// for (int d=0; d<dim; ++d) { +// assert (origin[d]>=0 && origin[d]<=sizes[d]); +// } + + // Check directions + for (int dd=0; dd<hdim; ++dd) { + assert (dirs[dd]>=1 && dirs[dd]<=dim); + } + + // Check stride + for (int dd=0; dd<hdim; ++dd) { + assert (stride[dd]>0); + } + + // Check length + for (int dd=0; dd<hdim; ++dd) { + assert (length[dd]>=0); + } + + // Check extent +// for (int dd=0; dd<hdim; ++dd) { +// assert (origin[dirs[dd]-1] + length[dd] <= sizes[dirs[dd]]); +// } + + // Get insider information about variable + const gh<dim>* myhh; + const dh<dim>* mydd; + const ggf<dim>* myff; + assert (group < (int)arrdata.size()); + myhh = arrdata.at(group).at(m).hh; + assert (myhh); + mydd = arrdata.at(group).at(m).dd; + assert (mydd); + assert (var < (int)arrdata.at(group).at(m).data.size()); + myff = arrdata.at(group).at(m).data.at(var); + assert (myff); + + // Detemine collecting processor + const int collect_proc = dest_proc<0 ? 0 : dest_proc; + + // Determine own rank + const int rank = CCTK_MyProc(cgh); + + // Calculate global size + int totalsize = 1; + for (int dd=0; dd<hdim; ++dd) { + totalsize *= length[dd]; + } + + // Allocate memory + void* hdata = 0; + if (dest_proc==-1 || rank==dest_proc) { + assert (0); + hdata = malloc(totalsize * typesize); + assert (hdata); + memset (hdata, 0, totalsize * typesize); + } + + // Get sample data + const gdata<dim>* mydata; + mydata = (*myff)(tl, rl, 0, 0); + + // Stride of data in memory + const vect<int,dim> str = mydata->extent().stride(); + + // Stride of collected data + vect<int,dim> hstr = str; + for (int dd=0; dd<hdim; ++dd) { + hstr[dirs[dd]-1] *= stride[dd]; + } + + // Lower bound of collected data + vect<int,dim> hlb(0); + for (int d=0; d<gp.dim; ++d) { + hlb[d] = origin[d] * str[d]; + } + + // Upper bound of collected data + vect<int,dim> hub = hlb; + for (int dd=0; dd<hdim; ++dd) { + hub[dirs[dd]-1] += (length[dd]-1) * hstr[dirs[dd]-1]; + } + + // Calculate extent to collect + const bbox<int,dim> hextent (hlb, hub, hstr); + assert (hextent.size() == totalsize); + + // Create collector data object + void* myhdata = rank==collect_proc ? hdata : 0; + gdata<dim>* const alldata = mydata->make_typed(-1); + alldata->allocate (hextent, collect_proc, myhdata); + + // Done with the temporary stuff + mydata = 0; + + for (comm_state<dim> state; !state.done(); state.step()) { + + // Loop over all components, copying data from them + BEGIN_LOCAL_COMPONENT_LOOP (cgh, gp.grouptype) { + + // Get data object + mydata = (*myff)(tl, rl, component, mglevel); + + // Calculate overlapping extents + const bboxset<int,dim> myextents + = ((mydd->boxes.at(rl).at(component).at(mglevel).sync_not + | mydd->boxes.at(rl).at(component).at(mglevel).interior) + & hextent); + + // Loop over overlapping extents + for (bboxset<int,dim>::const_iterator ext_iter = myextents.begin(); + ext_iter != myextents.end(); + ++ext_iter) { + + // Copy data + alldata->copy_from (state, mydata, *ext_iter); + + } + + } END_LOCAL_COMPONENT_LOOP; + + } // for step + + // Copy result to all processors + if (dest_proc == -1) { + vector<gdata<dim>*> tmpdata(CCTK_nProcs(cgh)); + vector<comm_state<dim> > state; + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + void* myhdata = rank==proc ? hdata : 0; + tmpdata.at(proc) = mydata->make_typed(-1); + tmpdata.at(proc)->allocate (alldata->extent(), proc, myhdata); + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + } + } + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + } + } + + for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) { + if (proc != collect_proc) { + tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent()); + delete tmpdata.at(proc); + } + } + + } // Copy result + + delete alldata; + + // Success + return hdata; + } + + + + CCTK_INT + CarpetSlab_Get (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_INT const mapping_handle, + CCTK_INT const proc, + CCTK_INT const vindex, + CCTK_INT const timelevel, + CCTK_INT const hdatatype, + CCTK_POINTER const hdata) + { + cGH const * const cctkGH = (cGH const *) cctkGH_; + + // Check arguments + assert (cctkGH); + assert (mapping_handle>=0); + assert (proc==-1 || proc>=0 && proc<CCTK_nProcs(cctkGH)); + assert (vindex>=0 && vindex<CCTK_NumVars()); + assert (timelevel>=0); + assert (hdatatype>=0); + assert (hdata); + + // Get mapping + const mapping * const mp = RetrieveMapping (mapping_handle); + assert (mp); + + // Calculate total size + size_t size = 1; + for (size_t d=0; d<(size_t)mp->hdim; ++d) { + size *= mp->length[d]; + } + + // Get type size + size_t const sz = CCTK_VarTypeSize (hdatatype); + assert (sz>0); + + // Forward call + FillSlab (cctkGH, proc, vindex, timelevel, + mp->hdim, + &mp->origin[0], &mp->dirs[0], &mp->stride[0], &mp->length[0], + hdata); + + return 0; + } + + + + CCTK_INT + CarpetSlab_GetList (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_INT const mapping_handle, + CCTK_INT const num_arrays, + CCTK_INT const * const procs, + CCTK_INT const * const vindices, + CCTK_INT const * const timelevels, + CCTK_INT const * const hdatatypes, + CCTK_POINTER const * const hdata, + CCTK_INT * const retvals) + { + cGH const * const cctkGH = (cGH const *) cctkGH_; + + // Check arguments + assert (cctkGH); + assert (mapping_handle>=0); + assert (num_arrays>=0); + assert (procs); + assert (vindices); + assert (timelevels); + assert (hdatatypes); + assert (hdata); + assert (retvals); + + // Remember whether there were errors + bool everyting_okay = true; + + // Loop over all slabs + for (int n=0; n<num_arrays; ++n) { + // Forward call + retvals[n] = CarpetSlab_Get (cctkGH, mapping_handle, procs[n], + vindices[n], timelevels[n], hdatatypes[n], + hdata[n]); + everyting_okay = everyting_okay && retvals[n]; + } + + return everyting_okay ? 0 : -1; + } + + + + typedef CCTK_INT + (* conversion_fn_ptr) (CCTK_INT const nelems, + CCTK_INT const src_stride, + CCTK_INT const dst_stride, + CCTK_INT const src_type, + CCTK_INT const dst_type, + CCTK_POINTER_TO_CONST const from, + CCTK_POINTER const to); + + + + CCTK_INT + CarpetSlab_LocalMappingByIndex (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_INT const vindex, + CCTK_INT const hdim, + CCTK_INT const * const direction, + CCTK_INT const * const origin, + CCTK_INT const * const extent, + CCTK_INT const * const downsample_, + CCTK_INT const table_handle, + conversion_fn_ptr const conversion_fn, + CCTK_INT * const hsize_local, + CCTK_INT * const hsize_global, + CCTK_INT * const hoffset_global) + { + CCTK_WARN (0, "not implemented"); + return 0; + } + + + + CCTK_INT + CarpetSlab_GlobalMappingByIndex (CCTK_POINTER_TO_CONST const cctkGH_, + CCTK_INT const vindex, + CCTK_INT const hdim, + CCTK_INT const * const direction, + CCTK_INT const * const origin, + CCTK_INT const * const extent, + CCTK_INT const * const downsample_, + CCTK_INT const table_handle, + conversion_fn_ptr const conversion_fn, + CCTK_INT * const hsize) + { + cGH const * const cctkGH = (cGH const *) cctkGH_; + + // Check arguments + assert (cctkGH); + assert (vindex>=0 && vindex<CCTK_NumVars()); + assert (hdim>=0 && hdim<=dim); + assert (direction); + assert (origin); + assert (extent); + // assert (downsample); + // assert (table_handle>=0); + assert (hsize); + + // Get more information + int const vdim = CCTK_GroupDimFromVarI (vindex); + assert (vdim>=0 && vdim<=dim); + assert (hdim<=vdim); + + // Not implemented + assert (! conversion_fn); + + // Allocate memory + mapping * mp = new mapping; + + // Calculate more convenient representation of the direction + vector<int> dirs(hdim); + for (int d=0; d<hdim; ++d) { + for (int dd=0; dd<vdim; ++dd) { + if (direction[d*vdim+dd]!=0) { + dirs[d] = dd+1; + goto found; + } + } + assert (0); + found:; + for (int dd=0; dd<vdim; ++dd) { + assert ((direction[d*vdim+dd]!=0) == (dirs[d]==dd+1)); + } + for (int dd=0; dd<d; ++dd) { + assert (dirs[dd] != dirs[d]); + } + } + + // Calculate lengths + vector<CCTK_INT> downsample(hdim); + for (int dd=0; dd<hdim; ++dd) { + downsample[dd] = downsample_ ? downsample_[dd] : 1; + if (extent[dd]<0) { + int gsh[dim]; + int ierr = CCTK_GroupgshVI(cctkGH, dim, gsh, vindex); + assert (!ierr); + const int totlen = gsh[dirs[dd]-1]; + assert (totlen>=0); + // Partial argument check + assert (origin[dirs[dd]-1]>=0); + assert (origin[dirs[dd]-1]<=totlen); + assert (downsample[dd]>0); + hsize[dd] = (totlen - origin[dirs[dd]-1]) / downsample[dd]; + } else { + hsize[dd] = extent[dd]; + } + assert (hsize[dd]>=0); + } + + // Store information + mp->vindex = vindex; + mp->hdim = hdim; + mp->origin.resize(vdim); + mp->dirs .resize(hdim); + mp->stride.resize(hdim); + mp->length.resize(hdim); + for (size_t d=0; d<(size_t)vdim; ++d) { + mp->origin[d] = origin[d]; + } + for (size_t d=0; d<(size_t)hdim; ++d) { + mp->dirs[d] = dirs[d]; + mp->stride[d] = downsample[d]; + mp->length[d] = hsize[d]; + } + + return StoreMapping (mp); + } + + + + CCTK_INT + CarpetSlab_FreeMapping (CCTK_INT const mapping_handle) + { + // Check arguments + assert (mapping_handle>=0); + + // Get mapping + mapping * mp = RetrieveMapping (mapping_handle); + assert (mp); + + // Delete storage + DeleteMapping (mapping_handle); + + delete mp; + + return 0; + } + + + + int + Hyperslab_GetHyperslab (const cGH* const GH, + const int target_proc, + const int vindex, + const int vtimelvl, + const int hdim, + const int global_startpoint [/*vdim*/], + const int directions [/*vdim*/], + const int lengths [/*hdim*/], + const int downsample_ [/*hdim*/], + void** const hdata, + int hsize [/*hdim*/]) + { + const int vdim = CCTK_GroupDimFromVarI(vindex); + assert (vdim>=1 && vdim<=dim); + + // Check some arguments + assert (hdim>=0 && hdim<=dim); + + // Check output arguments + assert (hdata); + assert (hsize); + + // Calculate more convenient representation of the direction + int dirs[dim]; // should really be dirs[hdim] + // The following if statement is written according to the + // definition of "dir". + if (hdim==1) { + // 1-dimensional hyperslab + int mydir = 0; + for (int d=0; d<vdim; ++d) { + if (directions[d]!=0) { + mydir = d+1; + break; + } + } + assert (mydir>0); + for (int d=0; d<vdim; ++d) { + if (d == mydir-1) { + assert (directions[d]!=0); + } else { + assert (directions[d]==0); + } + } + dirs[0] = mydir; + } else if (hdim==vdim) { + // vdim-dimensional hyperslab + for (int d=0; d<vdim; ++d) { + dirs[d] = d+1; + } + } else if (hdim==2) { + // 2-dimensional hyperslab with vdim==3 + assert (vdim==3); + int mydir = 0; + for (int d=0; d<vdim; ++d) { + if (directions[d]==0) { + mydir = d+1; + break; + } + } + assert (mydir>0); + for (int d=0; d<vdim; ++d) { + if (d == mydir-1) { + assert (directions[d]==0); + } else { + assert (directions[d]!=0); + } + } + int dd=0; + for (int d=0; d<vdim; ++d) { + if (d != mydir-1) { + dirs[dd] = d+1; + ++dd; + } + } + assert (dd==hdim); + } else { + assert (0); + } + // Fill remaining length + for (int d=vdim; d<dim; ++d) { + dirs[d] = d+1; + } + + // Calculate lengths + vector<int> downsample(hdim); + for (int dd=0; dd<hdim; ++dd) { + if (lengths[dd]<0) { + int gsh[dim]; + int ierr = CCTK_GroupgshVI(GH, dim, gsh, vindex); + assert (!ierr); + const int totlen = gsh[dirs[dd]-1]; + assert (totlen>=0); + // Partial argument check + assert (global_startpoint[dirs[dd]-1]>=0); + assert (global_startpoint[dirs[dd]-1]<=totlen); + downsample[dd] = downsample_ ? downsample_[dd] : 1; + assert (downsample[dd]>0); + hsize[dd] = (totlen - global_startpoint[dirs[dd]-1]) / downsample[dd]; + } else { + hsize[dd] = lengths[dd]; + } + assert (hsize[dd]>=0); + } + + // Get the slab + *hdata = GetSlab (GH, + target_proc, + vindex, + vtimelvl, + hdim, + global_startpoint, + dirs, + &downsample[0], + hsize); + + // Return with success + return 1; + } + + + +} // namespace CarpetSlab diff --git a/Carpet/CarpetSlab/src/slab.h b/Carpet/CarpetSlab/src/slab.h new file mode 100644 index 000000000..6e6bc3029 --- /dev/null +++ b/Carpet/CarpetSlab/src/slab.h @@ -0,0 +1,89 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.h,v 1.4 2004/01/25 14:57:31 schnetter Exp $ */ + +#ifndef CARPETSLAB_H +#define CARPETSLAB_H + +#include "cctk.h" + +#ifdef __cplusplus +namespace CarpetSlab { + extern "C" { +#endif + + CCTK_INT CarpetSlab_Get (CCTK_POINTER_TO_CONST const cctkGH, + CCTK_INT const mapping_handle, + CCTK_INT const proc, + CCTK_INT const vindex, + CCTK_INT const timelevel, + CCTK_INT const hdatatype, + void * const hdata); + + CCTK_INT CarpetSlab_GetList (CCTK_POINTER_TO_CONST const cctkGH, + CCTK_INT const mapping_handle, + CCTK_INT const num_arrays, + CCTK_INT const * const procs, + CCTK_INT const * const vindices, + CCTK_INT const * const timelevels, + CCTK_INT const * const hdatatypes, + void * const * const hdata, + CCTK_INT * const retvals); + + CCTK_INT CarpetSlab_LocalMappingByIndex (CCTK_POINTER_TO_CONST const cctkGH, + CCTK_INT const vindex, + CCTK_INT const hdim, + CCTK_INT const * const direction, + CCTK_INT const * const origin, + CCTK_INT const * const extent, + CCTK_INT const * const downsample, + CCTK_INT const table_handle, + CCTK_INT (* const conversion_fn) (CCTK_INT const nelems, + CCTK_INT const src_stride, + CCTK_INT const dst_stride, + CCTK_INT const src_type, + CCTK_INT const dst_type, + void const * const from, + void * const to), + CCTK_INT * const hsize_local, + CCTK_INT * const hsize_global, + CCTK_INT * const hoffset_global); + + CCTK_INT CarpetSlab_GlobalMappingByIndex (CCTK_POINTER_TO_CONST const cctkGH, + CCTK_INT const vindex, + CCTK_INT const hdim, + CCTK_INT const * const direction, + CCTK_INT const * const origin, + CCTK_INT const * const extent, + CCTK_INT const * const downsample, + CCTK_INT const table_handle, + CCTK_INT (* const conversion_fn) (CCTK_INT const nelems, + CCTK_INT const src_stride, + CCTK_INT const dst_stride, + CCTK_INT const src_type, + CCTK_INT const dst_type, + void const * const from, + void * const to), + CCTK_INT * const hsize); + + CCTK_INT CarpetSlab_FreeMapping (CCTK_INT const mapping_handle); + + + + /* Old interface -- don't use */ + int Hyperslab_GetHyperslab (const cGH* const GH, + const int target_proc, + const int vindex, + const int vtimelvl, + const int hdim, + const int global_startpoint [/*vdim*/], + const int directions [/*vdim*/], + const int lengths [/*hdim*/], + const int downsample [/*hdim*/], + void** const hdata, + int hsize [/*hdim*/]); + +#ifdef __cplusplus + } /* extern "C" */ +} /* namespace CarpetSlab */ +#endif + +#endif /* !defined(CARPETSLAB_H) */ diff --git a/Carpet/CarpetSlab/src/slab.hh b/Carpet/CarpetSlab/src/slab.hh new file mode 100644 index 000000000..a6259236d --- /dev/null +++ b/Carpet/CarpetSlab/src/slab.hh @@ -0,0 +1,37 @@ +// $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetSlab/src/slab.hh,v 1.2 2003/11/05 16:18:39 schnetter Exp $ + +#ifndef CARPETSLAB_HH +#define CARPETSLAB_HH + +#include "cctk.h" + +#include "slab.h" + +namespace CarpetSlab { + + // Non-standard interface -- don't use + void FillSlab (const cGH* const cgh, + const int dest_proc, + const int n, + const int tl, + const int hdim, + const int origin[/*vdim*/], + const int dirs[/*hdim*/], + const int stride[/*hdim*/], + const int length[/*hdim*/], + void* const hdata); + + // Non-standard interface -- don't use + void* GetSlab (const cGH* const cgh, + const int dest_proc, + const int n, + const int tl, + const int hdim, + const int origin[/*vdim*/], + const int dirs[/*hdim*/], + const int stride[/*hdim*/], + const int length[/*hdim*/]); + +} // namespace CarpetSlab + +#endif // !defined(CARPETSLAB_HH) diff --git a/Carpet/CarpetTest/COPYING b/Carpet/CarpetTest/COPYING new file mode 100644 index 000000000..1942c4334 --- /dev/null +++ b/Carpet/CarpetTest/COPYING @@ -0,0 +1,341 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place - Suite 330 + Boston, MA 02111-1307, USA. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute 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 and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +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 +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the 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 a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, 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. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE 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. + + 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 +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; see the file COPYING. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Carpet/CarpetTest/README b/Carpet/CarpetTest/README new file mode 100644 index 000000000..73ee4263f --- /dev/null +++ b/Carpet/CarpetTest/README @@ -0,0 +1,9 @@ +Cactus Code Thorn CarpetTest +Authors : Erik Schnetter <schnetter@uni-tuebingen.de> +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/README,v 1.1 2001/07/04 12:29:53 schnetter Exp $ +-------------------------------------------------------------------------- + +Purpose of the thorn: + +This thorn contains a few test grid functions, grid arrays, and +scalars to test the driver. diff --git a/Carpet/CarpetTest/interface.ccl b/Carpet/CarpetTest/interface.ccl new file mode 100644 index 000000000..55cd937c5 --- /dev/null +++ b/Carpet/CarpetTest/interface.ccl @@ -0,0 +1,29 @@ +# Interface definition for thorn CarpetTest +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/interface.ccl,v 1.2 2001/07/09 09:00:26 schnetter Exp $ + +implements: CarpetTest + +CCTK_REAL gfg type=GF +{ + gf +} "grid function" + +CCTK_REAL arrg3 type=ARRAY size=i3,i4,i5 +{ + arr3 +} "3D array" + +CCTK_REAL arrg2 type=ARRAY dim=2 size=i6,i7 +{ + arr2 +} "2D array" + +CCTK_REAL arrg1 type=ARRAY dim=1 size=i8 +{ + arr1 +} "1D array" + +CCTK_REAL scg type=SCALAR +{ + sc +} "scalar" diff --git a/Carpet/CarpetTest/param.ccl b/Carpet/CarpetTest/param.ccl new file mode 100644 index 000000000..a8b831dd4 --- /dev/null +++ b/Carpet/CarpetTest/param.ccl @@ -0,0 +1,32 @@ +# Parameter definitions for thorn CarpetTest +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/param.ccl,v 1.1 2001/07/04 12:29:54 schnetter Exp $ + +CCTK_INT i3 "three" +{ + 0:* :: "should be 3" +} 3 + +CCTK_INT i4 "four" +{ + 0:* :: "should be 4" +} 4 + +CCTK_INT i5 "five" +{ + 0:* :: "should be 5" +} 5 + +CCTK_INT i6 "six" +{ + 0:* :: "should be 6" +} 6 + +CCTK_INT i7 "seven" +{ + 0:* :: "should be 7" +} 7 + +CCTK_INT i8 "eight" +{ + 0:* :: "should be 8" +} 8 diff --git a/Carpet/CarpetTest/schedule.ccl b/Carpet/CarpetTest/schedule.ccl new file mode 100644 index 000000000..1ade016b9 --- /dev/null +++ b/Carpet/CarpetTest/schedule.ccl @@ -0,0 +1,14 @@ +# Schedule definitions for thorn CarpetTest +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/schedule.ccl,v 1.3 2003/11/05 16:18:39 schnetter Exp $ + +STORAGE: gfg arrg1 arrg2 arrg3 + +schedule carpettest_check_sizes AT initial +{ + LANG: C +} "Check grid function and grid array sizes" + +schedule carpettest_check_arguments AT initial +{ + LANG: Fortran +} "Check grid function and grid array arguments" diff --git a/Carpet/CarpetTest/src/carpettest_check_arguments.F77 b/Carpet/CarpetTest/src/carpettest_check_arguments.F77 new file mode 100644 index 000000000..297e38977 --- /dev/null +++ b/Carpet/CarpetTest/src/carpettest_check_arguments.F77 @@ -0,0 +1,44 @@ +c -*-Fortran-*- +c $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/src/carpettest_check_arguments.F77,v 1.5 2004/01/25 14:57:31 schnetter Exp $ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Functions.h" +#include "cctk_Parameters.h" + + subroutine carpettest_check_arguments (CCTK_ARGUMENTS) + implicit none + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_FUNCTIONS + DECLARE_CCTK_PARAMETERS + integer i,j,k + print *, "Xgfg ", Xgfg0, Xgfg1, Xgfg2 + print *, "Xarrg3 ", Xarrg30, Xarrg31, Xarrg32 + print *, "Xarrg2 ", Xarrg20, Xarrg21 + print *, "Xarrg1 ", Xarrg10 + print *, "Xscg" + print * + do k=1,Xgfg2 + do j=1,Xgfg1 + do i=1,Xgfg0 + gf(i,j,k) = i*10000 + j*100 + k + end do + end do + end do + do k=1,Xarrg32 + do j=1,Xarrg31 + do i=1,Xarrg30 + arr3(i,j,k) = i*10000 + j*100 + k + end do + end do + end do + do j=1,Xarrg21 + do i=1,Xarrg20 + arr2(i,j) = i*100 + j + end do + end do + do i=1,Xarrg10 + arr1(i) = i + end do + sc = 42 + end diff --git a/Carpet/CarpetTest/src/carpettest_check_sizes.c b/Carpet/CarpetTest/src/carpettest_check_sizes.c new file mode 100644 index 000000000..c4e17baf7 --- /dev/null +++ b/Carpet/CarpetTest/src/carpettest_check_sizes.c @@ -0,0 +1,107 @@ +/* $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/src/carpettest_check_sizes.c,v 1.2 2001/07/09 09:00:27 schnetter Exp $ */ + +#include <assert.h> +#include <stdio.h> +#include <stdlib.h> + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +void carpettest_check_sizes (CCTK_ARGUMENTS); + +static void print_scalar (const char *name, int sc); +static void print_scalar_descr (const char *name, int sc, const char *descr); +static void print_array (const char *name, int dim, const int *arr); + +static const char *grouptype_string (int grouptype); +static const char *disttype_string (int disttype); + + + +void carpettest_check_sizes (CCTK_ARGUMENTS) +{ + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_PARAMETERS + int group; + int dim; + cGroup data; + cGroupDynamicData dyndata; + + dim = cctk_dim; + print_scalar ("cctk_dim", cctk_dim); + print_array ("cctk_gsh", dim, cctk_gsh); + print_array ("cctk_lsh", dim, cctk_lsh); + print_array ("cctk_lbnd", dim, cctk_lbnd); + print_array ("cctk_ubnd", dim, cctk_ubnd); + print_array ("cctk_bbox", 2*dim, cctk_bbox); + print_array ("cctk_nghostzones", dim, cctk_nghostzones); + printf ("\n"); + + for (group=0; group<CCTK_NumGroups(); ++group) { + CCTK_GroupData (group, &data); + CCTK_GroupDynamicData (cctkGH, group, &dyndata); + + print_scalar_descr ("group", group, CCTK_GroupName(group)); + + dim = data.dim; + print_scalar ("dim", data.dim); + print_scalar_descr ("grouptype", data.grouptype, grouptype_string(data.grouptype)); + print_scalar_descr ("vartype", data.vartype, CCTK_VarTypeName(data.vartype)); + print_scalar_descr ("disttype", data.disttype, disttype_string(data.disttype)); + print_scalar ("stagtype", data.stagtype); + print_scalar ("numvars", data.numvars); + print_scalar ("numtimelevels", data.numtimelevels); + print_array ("gsh", dim, dyndata.gsh); + print_array ("lsh", dim, dyndata.lsh); + print_array ("lbnd", dim, dyndata.lbnd); + print_array ("ubnd", dim, dyndata.ubnd); + print_array ("bbox", 2*dim, dyndata.bbox); + print_array ("nghostzones", dim, dyndata.nghostzones); + printf ("\n"); + } + +} + + + +static void print_scalar (const char *name, int sc) +{ + printf ("%-15s: %3d\n", name, sc); +} + +static void print_scalar_descr (const char *name, int sc, const char *descr) +{ + printf ("%-15s: %3d %s\n", name, sc, descr); +} + +static void print_array (const char *name, int dim, const int *arr) +{ + int d; + printf ("%-15s:", name); + for (d=0; d<dim; ++d) { + printf (" %3d", arr[d]); + } + printf ("\n"); +} + + + +static const char *grouptype_string (int grouptype) +{ + switch (grouptype) { + case CCTK_SCALAR: return "CCTK_SCALAR"; + case CCTK_GF: return "CCTK_GF"; + case CCTK_ARRAY: return "CCTK_ARRAY"; + } + return "[illegal group type]"; +} + +static const char *disttype_string (int disttype) +{ + switch (disttype) { + case CCTK_DISTRIB_CONSTANT: return "CCTK_DISTRIB_CONSTANT"; + case CCTK_DISTRIB_DEFAULT: return "CCTK_DISTRIB_DEFAULT"; + } + return "[illegal distribution type]"; +} diff --git a/Carpet/CarpetTest/src/make.code.defn b/Carpet/CarpetTest/src/make.code.defn new file mode 100644 index 000000000..cb469f0b4 --- /dev/null +++ b/Carpet/CarpetTest/src/make.code.defn @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn CarpetTest +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/src/make.code.defn,v 1.1 2001/07/04 12:29:55 schnetter Exp $ + +# Source files in this directory +SRCS = carpettest_check_sizes.c carpettest_check_arguments.F77 + +# Subdirectories containing source files +SUBDIRS = + diff --git a/Carpet/CarpetTest/test/arraysizes.par b/Carpet/CarpetTest/test/arraysizes.par new file mode 100644 index 000000000..81647fe42 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes.par @@ -0,0 +1,28 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetTest/test/arraysizes.par,v 1.5 2004/03/23 12:01:59 schnetter Exp $ + +!DESC "Check array sizes" + +ActiveThorns = "Carpet CarpetLib CarpetSlab Cart3d IOUtil CarpetIOASCII CarpetTest" + +Cactus::cctk_itlast = 0 + +IO::out_dir = "arraysizes" + +IOASCII::out1D_every = 1 +IOASCII::out2D_every = 1 +IOASCII::out3D_every = 1 + +IOASCII::out1D_xline_yi = 0 +IOASCII::out1D_xline_zi = 0 +IOASCII::out1D_yline_xi = 0 +IOASCII::out1D_yline_zi = 0 +IOASCII::out1D_zline_xi = 0 +IOASCII::out1D_zline_yi = 0 + +IOASCII::out2D_xyplane_zi = 0 +IOASCII::out2D_xzplane_yi = 0 +IOASCII::out2D_yzplane_xi = 0 + +IOASCII::out1D_vars = "CarpetTest::gfg CarpetTest::arrg3 CarpetTest::arrg2 CarpetTest::arrg1 CarpetTest::scg" +IOASCII::out2D_vars = "CarpetTest::gfg CarpetTest::arrg3 CarpetTest::arrg2 CarpetTest::arrg1 CarpetTest::scg" +IOASCII::out3D_vars = "CarpetTest::gfg CarpetTest::arrg3 CarpetTest::arrg2 CarpetTest::arrg1 CarpetTest::scg" diff --git a/Carpet/CarpetTest/test/arraysizes/arr1.xl b/Carpet/CarpetTest/test/arraysizes/arr1.xl new file mode 100644 index 000000000..dd69e4673 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr1.xl @@ -0,0 +1,15 @@ +# CARPETTEST::arr1 x (arr1) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 1 +0 0 0 0 0 1 0 0 2 +0 0 0 0 0 2 0 0 3 +0 0 0 0 0 3 0 0 4 +0 0 0 0 0 4 0 0 5 +0 0 0 0 0 5 0 0 6 +0 0 0 0 0 6 0 0 7 +0 0 0 0 0 7 0 0 8 + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr2.xl b/Carpet/CarpetTest/test/arraysizes/arr2.xl new file mode 100644 index 000000000..a67e69364 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr2.xl @@ -0,0 +1,13 @@ +# CARPETTEST::arr2 x (arr2) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 101 +0 0 0 0 0 1 0 0 201 +0 0 0 0 0 2 0 0 301 +0 0 0 0 0 3 0 0 401 +0 0 0 0 0 4 0 0 501 +0 0 0 0 0 5 0 0 601 + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr2.xyp b/Carpet/CarpetTest/test/arraysizes/arr2.xyp new file mode 100644 index 000000000..abd57c4e1 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr2.xyp @@ -0,0 +1,56 @@ +# CARPETTEST::arr2 x y (arr2) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 101 +0 0 0 0 0 1 0 0 201 +0 0 0 0 0 2 0 0 301 +0 0 0 0 0 3 0 0 401 +0 0 0 0 0 4 0 0 501 +0 0 0 0 0 5 0 0 601 + +0 0 0 0 0 0 1 0 102 +0 0 0 0 0 1 1 0 202 +0 0 0 0 0 2 1 0 302 +0 0 0 0 0 3 1 0 402 +0 0 0 0 0 4 1 0 502 +0 0 0 0 0 5 1 0 602 + +0 0 0 0 0 0 2 0 103 +0 0 0 0 0 1 2 0 203 +0 0 0 0 0 2 2 0 303 +0 0 0 0 0 3 2 0 403 +0 0 0 0 0 4 2 0 503 +0 0 0 0 0 5 2 0 603 + +0 0 0 0 0 0 3 0 104 +0 0 0 0 0 1 3 0 204 +0 0 0 0 0 2 3 0 304 +0 0 0 0 0 3 3 0 404 +0 0 0 0 0 4 3 0 504 +0 0 0 0 0 5 3 0 604 + +0 0 0 0 0 0 4 0 105 +0 0 0 0 0 1 4 0 205 +0 0 0 0 0 2 4 0 305 +0 0 0 0 0 3 4 0 405 +0 0 0 0 0 4 4 0 505 +0 0 0 0 0 5 4 0 605 + +0 0 0 0 0 0 5 0 106 +0 0 0 0 0 1 5 0 206 +0 0 0 0 0 2 5 0 306 +0 0 0 0 0 3 5 0 406 +0 0 0 0 0 4 5 0 506 +0 0 0 0 0 5 5 0 606 + +0 0 0 0 0 0 6 0 107 +0 0 0 0 0 1 6 0 207 +0 0 0 0 0 2 6 0 307 +0 0 0 0 0 3 6 0 407 +0 0 0 0 0 4 6 0 507 +0 0 0 0 0 5 6 0 607 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr2.yl b/Carpet/CarpetTest/test/arraysizes/arr2.yl new file mode 100644 index 000000000..932503906 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr2.yl @@ -0,0 +1,14 @@ +# CARPETTEST::arr2 y (arr2) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 101 +0 0 0 0 0 0 1 0 102 +0 0 0 0 0 0 2 0 103 +0 0 0 0 0 0 3 0 104 +0 0 0 0 0 0 4 0 105 +0 0 0 0 0 0 5 0 106 +0 0 0 0 0 0 6 0 107 + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.xl b/Carpet/CarpetTest/test/arraysizes/arr3.xl new file mode 100644 index 000000000..fc87a1d7e --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.xl @@ -0,0 +1,10 @@ +# CARPETTEST::arr3 x (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.xyp b/Carpet/CarpetTest/test/arraysizes/arr3.xyp new file mode 100644 index 000000000..297ee34bc --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.xyp @@ -0,0 +1,23 @@ +# CARPETTEST::arr3 x y (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 + +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 1 1 0 20201 +0 0 0 0 0 2 1 0 30201 + +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 1 2 0 20301 +0 0 0 0 0 2 2 0 30301 + +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 1 3 0 20401 +0 0 0 0 0 2 3 0 30401 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.xyzv b/Carpet/CarpetTest/test/arraysizes/arr3.xyzv new file mode 100644 index 000000000..2a1ac20f2 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.xyzv @@ -0,0 +1,92 @@ +# CARPETTEST::arr3 x y z (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 + +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 1 1 0 20201 +0 0 0 0 0 2 1 0 30201 + +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 1 2 0 20301 +0 0 0 0 0 2 2 0 30301 + +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 1 3 0 20401 +0 0 0 0 0 2 3 0 30401 + + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 1 0 1 20102 +0 0 0 0 0 2 0 1 30102 + +0 0 0 0 0 0 1 1 10202 +0 0 0 0 0 1 1 1 20202 +0 0 0 0 0 2 1 1 30202 + +0 0 0 0 0 0 2 1 10302 +0 0 0 0 0 1 2 1 20302 +0 0 0 0 0 2 2 1 30302 + +0 0 0 0 0 0 3 1 10402 +0 0 0 0 0 1 3 1 20402 +0 0 0 0 0 2 3 1 30402 + + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 1 0 2 20103 +0 0 0 0 0 2 0 2 30103 + +0 0 0 0 0 0 1 2 10203 +0 0 0 0 0 1 1 2 20203 +0 0 0 0 0 2 1 2 30203 + +0 0 0 0 0 0 2 2 10303 +0 0 0 0 0 1 2 2 20303 +0 0 0 0 0 2 2 2 30303 + +0 0 0 0 0 0 3 2 10403 +0 0 0 0 0 1 3 2 20403 +0 0 0 0 0 2 3 2 30403 + + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 1 0 3 20104 +0 0 0 0 0 2 0 3 30104 + +0 0 0 0 0 0 1 3 10204 +0 0 0 0 0 1 1 3 20204 +0 0 0 0 0 2 1 3 30204 + +0 0 0 0 0 0 2 3 10304 +0 0 0 0 0 1 2 3 20304 +0 0 0 0 0 2 2 3 30304 + +0 0 0 0 0 0 3 3 10404 +0 0 0 0 0 1 3 3 20404 +0 0 0 0 0 2 3 3 30404 + + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 1 0 4 20105 +0 0 0 0 0 2 0 4 30105 + +0 0 0 0 0 0 1 4 10205 +0 0 0 0 0 1 1 4 20205 +0 0 0 0 0 2 1 4 30205 + +0 0 0 0 0 0 2 4 10305 +0 0 0 0 0 1 2 4 20305 +0 0 0 0 0 2 2 4 30305 + +0 0 0 0 0 0 3 4 10405 +0 0 0 0 0 1 3 4 20405 +0 0 0 0 0 2 3 4 30405 + + + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.xzp b/Carpet/CarpetTest/test/arraysizes/arr3.xzp new file mode 100644 index 000000000..512c57878 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.xzp @@ -0,0 +1,27 @@ +# CARPETTEST::arr3 x z (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 1 0 1 20102 +0 0 0 0 0 2 0 1 30102 + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 1 0 2 20103 +0 0 0 0 0 2 0 2 30103 + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 1 0 3 20104 +0 0 0 0 0 2 0 3 30104 + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 1 0 4 20105 +0 0 0 0 0 2 0 4 30105 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.yl b/Carpet/CarpetTest/test/arraysizes/arr3.yl new file mode 100644 index 000000000..5be860d1c --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.yl @@ -0,0 +1,11 @@ +# CARPETTEST::arr3 y (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 0 3 0 10401 + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.yzp b/Carpet/CarpetTest/test/arraysizes/arr3.yzp new file mode 100644 index 000000000..5729a9ff9 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.yzp @@ -0,0 +1,32 @@ +# CARPETTEST::arr3 y z (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 0 3 0 10401 + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 0 1 1 10202 +0 0 0 0 0 0 2 1 10302 +0 0 0 0 0 0 3 1 10402 + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 0 1 2 10203 +0 0 0 0 0 0 2 2 10303 +0 0 0 0 0 0 3 2 10403 + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 0 1 3 10204 +0 0 0 0 0 0 2 3 10304 +0 0 0 0 0 0 3 3 10404 + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 0 1 4 10205 +0 0 0 0 0 0 2 4 10305 +0 0 0 0 0 0 3 4 10405 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/arr3.zl b/Carpet/CarpetTest/test/arraysizes/arr3.zl new file mode 100644 index 000000000..7e9b12ae5 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/arr3.zl @@ -0,0 +1,12 @@ +# CARPETTEST::arr3 z (arr3) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 0 0 4 10105 + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.xl b/Carpet/CarpetTest/test/arraysizes/gf.xl new file mode 100644 index 000000000..158d50c67 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.xl @@ -0,0 +1,17 @@ +# CARPETTEST::gf x (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 +0 0 0 0 0 3 0 0 40101 +0 0 0 0 0 4 0 0 50101 +0 0 0 0 0 5 0 0 60101 +0 0 0 0 0 6 0 0 70101 +0 0 0 0 0 7 0 0 80101 +0 0 0 0 0 8 0 0 90101 +0 0 0 0 0 9 0 0 100101 + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.xyp b/Carpet/CarpetTest/test/arraysizes/gf.xyp new file mode 100644 index 000000000..0597a4bb3 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.xyp @@ -0,0 +1,117 @@ +# CARPETTEST::gf x y (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 +0 0 0 0 0 3 0 0 40101 +0 0 0 0 0 4 0 0 50101 +0 0 0 0 0 5 0 0 60101 +0 0 0 0 0 6 0 0 70101 +0 0 0 0 0 7 0 0 80101 +0 0 0 0 0 8 0 0 90101 +0 0 0 0 0 9 0 0 100101 + +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 1 1 0 20201 +0 0 0 0 0 2 1 0 30201 +0 0 0 0 0 3 1 0 40201 +0 0 0 0 0 4 1 0 50201 +0 0 0 0 0 5 1 0 60201 +0 0 0 0 0 6 1 0 70201 +0 0 0 0 0 7 1 0 80201 +0 0 0 0 0 8 1 0 90201 +0 0 0 0 0 9 1 0 100201 + +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 1 2 0 20301 +0 0 0 0 0 2 2 0 30301 +0 0 0 0 0 3 2 0 40301 +0 0 0 0 0 4 2 0 50301 +0 0 0 0 0 5 2 0 60301 +0 0 0 0 0 6 2 0 70301 +0 0 0 0 0 7 2 0 80301 +0 0 0 0 0 8 2 0 90301 +0 0 0 0 0 9 2 0 100301 + +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 1 3 0 20401 +0 0 0 0 0 2 3 0 30401 +0 0 0 0 0 3 3 0 40401 +0 0 0 0 0 4 3 0 50401 +0 0 0 0 0 5 3 0 60401 +0 0 0 0 0 6 3 0 70401 +0 0 0 0 0 7 3 0 80401 +0 0 0 0 0 8 3 0 90401 +0 0 0 0 0 9 3 0 100401 + +0 0 0 0 0 0 4 0 10501 +0 0 0 0 0 1 4 0 20501 +0 0 0 0 0 2 4 0 30501 +0 0 0 0 0 3 4 0 40501 +0 0 0 0 0 4 4 0 50501 +0 0 0 0 0 5 4 0 60501 +0 0 0 0 0 6 4 0 70501 +0 0 0 0 0 7 4 0 80501 +0 0 0 0 0 8 4 0 90501 +0 0 0 0 0 9 4 0 100501 + +0 0 0 0 0 0 5 0 10601 +0 0 0 0 0 1 5 0 20601 +0 0 0 0 0 2 5 0 30601 +0 0 0 0 0 3 5 0 40601 +0 0 0 0 0 4 5 0 50601 +0 0 0 0 0 5 5 0 60601 +0 0 0 0 0 6 5 0 70601 +0 0 0 0 0 7 5 0 80601 +0 0 0 0 0 8 5 0 90601 +0 0 0 0 0 9 5 0 100601 + +0 0 0 0 0 0 6 0 10701 +0 0 0 0 0 1 6 0 20701 +0 0 0 0 0 2 6 0 30701 +0 0 0 0 0 3 6 0 40701 +0 0 0 0 0 4 6 0 50701 +0 0 0 0 0 5 6 0 60701 +0 0 0 0 0 6 6 0 70701 +0 0 0 0 0 7 6 0 80701 +0 0 0 0 0 8 6 0 90701 +0 0 0 0 0 9 6 0 100701 + +0 0 0 0 0 0 7 0 10801 +0 0 0 0 0 1 7 0 20801 +0 0 0 0 0 2 7 0 30801 +0 0 0 0 0 3 7 0 40801 +0 0 0 0 0 4 7 0 50801 +0 0 0 0 0 5 7 0 60801 +0 0 0 0 0 6 7 0 70801 +0 0 0 0 0 7 7 0 80801 +0 0 0 0 0 8 7 0 90801 +0 0 0 0 0 9 7 0 100801 + +0 0 0 0 0 0 8 0 10901 +0 0 0 0 0 1 8 0 20901 +0 0 0 0 0 2 8 0 30901 +0 0 0 0 0 3 8 0 40901 +0 0 0 0 0 4 8 0 50901 +0 0 0 0 0 5 8 0 60901 +0 0 0 0 0 6 8 0 70901 +0 0 0 0 0 7 8 0 80901 +0 0 0 0 0 8 8 0 90901 +0 0 0 0 0 9 8 0 100901 + +0 0 0 0 0 0 9 0 11001 +0 0 0 0 0 1 9 0 21001 +0 0 0 0 0 2 9 0 31001 +0 0 0 0 0 3 9 0 41001 +0 0 0 0 0 4 9 0 51001 +0 0 0 0 0 5 9 0 61001 +0 0 0 0 0 6 9 0 71001 +0 0 0 0 0 7 9 0 81001 +0 0 0 0 0 8 9 0 91001 +0 0 0 0 0 9 9 0 101001 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.xyzv b/Carpet/CarpetTest/test/arraysizes/gf.xyzv new file mode 100644 index 000000000..b69cd8b78 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.xyzv @@ -0,0 +1,1117 @@ +# CARPETTEST::gf x y z (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 +0 0 0 0 0 3 0 0 40101 +0 0 0 0 0 4 0 0 50101 +0 0 0 0 0 5 0 0 60101 +0 0 0 0 0 6 0 0 70101 +0 0 0 0 0 7 0 0 80101 +0 0 0 0 0 8 0 0 90101 +0 0 0 0 0 9 0 0 100101 + +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 1 1 0 20201 +0 0 0 0 0 2 1 0 30201 +0 0 0 0 0 3 1 0 40201 +0 0 0 0 0 4 1 0 50201 +0 0 0 0 0 5 1 0 60201 +0 0 0 0 0 6 1 0 70201 +0 0 0 0 0 7 1 0 80201 +0 0 0 0 0 8 1 0 90201 +0 0 0 0 0 9 1 0 100201 + +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 1 2 0 20301 +0 0 0 0 0 2 2 0 30301 +0 0 0 0 0 3 2 0 40301 +0 0 0 0 0 4 2 0 50301 +0 0 0 0 0 5 2 0 60301 +0 0 0 0 0 6 2 0 70301 +0 0 0 0 0 7 2 0 80301 +0 0 0 0 0 8 2 0 90301 +0 0 0 0 0 9 2 0 100301 + +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 1 3 0 20401 +0 0 0 0 0 2 3 0 30401 +0 0 0 0 0 3 3 0 40401 +0 0 0 0 0 4 3 0 50401 +0 0 0 0 0 5 3 0 60401 +0 0 0 0 0 6 3 0 70401 +0 0 0 0 0 7 3 0 80401 +0 0 0 0 0 8 3 0 90401 +0 0 0 0 0 9 3 0 100401 + +0 0 0 0 0 0 4 0 10501 +0 0 0 0 0 1 4 0 20501 +0 0 0 0 0 2 4 0 30501 +0 0 0 0 0 3 4 0 40501 +0 0 0 0 0 4 4 0 50501 +0 0 0 0 0 5 4 0 60501 +0 0 0 0 0 6 4 0 70501 +0 0 0 0 0 7 4 0 80501 +0 0 0 0 0 8 4 0 90501 +0 0 0 0 0 9 4 0 100501 + +0 0 0 0 0 0 5 0 10601 +0 0 0 0 0 1 5 0 20601 +0 0 0 0 0 2 5 0 30601 +0 0 0 0 0 3 5 0 40601 +0 0 0 0 0 4 5 0 50601 +0 0 0 0 0 5 5 0 60601 +0 0 0 0 0 6 5 0 70601 +0 0 0 0 0 7 5 0 80601 +0 0 0 0 0 8 5 0 90601 +0 0 0 0 0 9 5 0 100601 + +0 0 0 0 0 0 6 0 10701 +0 0 0 0 0 1 6 0 20701 +0 0 0 0 0 2 6 0 30701 +0 0 0 0 0 3 6 0 40701 +0 0 0 0 0 4 6 0 50701 +0 0 0 0 0 5 6 0 60701 +0 0 0 0 0 6 6 0 70701 +0 0 0 0 0 7 6 0 80701 +0 0 0 0 0 8 6 0 90701 +0 0 0 0 0 9 6 0 100701 + +0 0 0 0 0 0 7 0 10801 +0 0 0 0 0 1 7 0 20801 +0 0 0 0 0 2 7 0 30801 +0 0 0 0 0 3 7 0 40801 +0 0 0 0 0 4 7 0 50801 +0 0 0 0 0 5 7 0 60801 +0 0 0 0 0 6 7 0 70801 +0 0 0 0 0 7 7 0 80801 +0 0 0 0 0 8 7 0 90801 +0 0 0 0 0 9 7 0 100801 + +0 0 0 0 0 0 8 0 10901 +0 0 0 0 0 1 8 0 20901 +0 0 0 0 0 2 8 0 30901 +0 0 0 0 0 3 8 0 40901 +0 0 0 0 0 4 8 0 50901 +0 0 0 0 0 5 8 0 60901 +0 0 0 0 0 6 8 0 70901 +0 0 0 0 0 7 8 0 80901 +0 0 0 0 0 8 8 0 90901 +0 0 0 0 0 9 8 0 100901 + +0 0 0 0 0 0 9 0 11001 +0 0 0 0 0 1 9 0 21001 +0 0 0 0 0 2 9 0 31001 +0 0 0 0 0 3 9 0 41001 +0 0 0 0 0 4 9 0 51001 +0 0 0 0 0 5 9 0 61001 +0 0 0 0 0 6 9 0 71001 +0 0 0 0 0 7 9 0 81001 +0 0 0 0 0 8 9 0 91001 +0 0 0 0 0 9 9 0 101001 + + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 1 0 1 20102 +0 0 0 0 0 2 0 1 30102 +0 0 0 0 0 3 0 1 40102 +0 0 0 0 0 4 0 1 50102 +0 0 0 0 0 5 0 1 60102 +0 0 0 0 0 6 0 1 70102 +0 0 0 0 0 7 0 1 80102 +0 0 0 0 0 8 0 1 90102 +0 0 0 0 0 9 0 1 100102 + +0 0 0 0 0 0 1 1 10202 +0 0 0 0 0 1 1 1 20202 +0 0 0 0 0 2 1 1 30202 +0 0 0 0 0 3 1 1 40202 +0 0 0 0 0 4 1 1 50202 +0 0 0 0 0 5 1 1 60202 +0 0 0 0 0 6 1 1 70202 +0 0 0 0 0 7 1 1 80202 +0 0 0 0 0 8 1 1 90202 +0 0 0 0 0 9 1 1 100202 + +0 0 0 0 0 0 2 1 10302 +0 0 0 0 0 1 2 1 20302 +0 0 0 0 0 2 2 1 30302 +0 0 0 0 0 3 2 1 40302 +0 0 0 0 0 4 2 1 50302 +0 0 0 0 0 5 2 1 60302 +0 0 0 0 0 6 2 1 70302 +0 0 0 0 0 7 2 1 80302 +0 0 0 0 0 8 2 1 90302 +0 0 0 0 0 9 2 1 100302 + +0 0 0 0 0 0 3 1 10402 +0 0 0 0 0 1 3 1 20402 +0 0 0 0 0 2 3 1 30402 +0 0 0 0 0 3 3 1 40402 +0 0 0 0 0 4 3 1 50402 +0 0 0 0 0 5 3 1 60402 +0 0 0 0 0 6 3 1 70402 +0 0 0 0 0 7 3 1 80402 +0 0 0 0 0 8 3 1 90402 +0 0 0 0 0 9 3 1 100402 + +0 0 0 0 0 0 4 1 10502 +0 0 0 0 0 1 4 1 20502 +0 0 0 0 0 2 4 1 30502 +0 0 0 0 0 3 4 1 40502 +0 0 0 0 0 4 4 1 50502 +0 0 0 0 0 5 4 1 60502 +0 0 0 0 0 6 4 1 70502 +0 0 0 0 0 7 4 1 80502 +0 0 0 0 0 8 4 1 90502 +0 0 0 0 0 9 4 1 100502 + +0 0 0 0 0 0 5 1 10602 +0 0 0 0 0 1 5 1 20602 +0 0 0 0 0 2 5 1 30602 +0 0 0 0 0 3 5 1 40602 +0 0 0 0 0 4 5 1 50602 +0 0 0 0 0 5 5 1 60602 +0 0 0 0 0 6 5 1 70602 +0 0 0 0 0 7 5 1 80602 +0 0 0 0 0 8 5 1 90602 +0 0 0 0 0 9 5 1 100602 + +0 0 0 0 0 0 6 1 10702 +0 0 0 0 0 1 6 1 20702 +0 0 0 0 0 2 6 1 30702 +0 0 0 0 0 3 6 1 40702 +0 0 0 0 0 4 6 1 50702 +0 0 0 0 0 5 6 1 60702 +0 0 0 0 0 6 6 1 70702 +0 0 0 0 0 7 6 1 80702 +0 0 0 0 0 8 6 1 90702 +0 0 0 0 0 9 6 1 100702 + +0 0 0 0 0 0 7 1 10802 +0 0 0 0 0 1 7 1 20802 +0 0 0 0 0 2 7 1 30802 +0 0 0 0 0 3 7 1 40802 +0 0 0 0 0 4 7 1 50802 +0 0 0 0 0 5 7 1 60802 +0 0 0 0 0 6 7 1 70802 +0 0 0 0 0 7 7 1 80802 +0 0 0 0 0 8 7 1 90802 +0 0 0 0 0 9 7 1 100802 + +0 0 0 0 0 0 8 1 10902 +0 0 0 0 0 1 8 1 20902 +0 0 0 0 0 2 8 1 30902 +0 0 0 0 0 3 8 1 40902 +0 0 0 0 0 4 8 1 50902 +0 0 0 0 0 5 8 1 60902 +0 0 0 0 0 6 8 1 70902 +0 0 0 0 0 7 8 1 80902 +0 0 0 0 0 8 8 1 90902 +0 0 0 0 0 9 8 1 100902 + +0 0 0 0 0 0 9 1 11002 +0 0 0 0 0 1 9 1 21002 +0 0 0 0 0 2 9 1 31002 +0 0 0 0 0 3 9 1 41002 +0 0 0 0 0 4 9 1 51002 +0 0 0 0 0 5 9 1 61002 +0 0 0 0 0 6 9 1 71002 +0 0 0 0 0 7 9 1 81002 +0 0 0 0 0 8 9 1 91002 +0 0 0 0 0 9 9 1 101002 + + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 1 0 2 20103 +0 0 0 0 0 2 0 2 30103 +0 0 0 0 0 3 0 2 40103 +0 0 0 0 0 4 0 2 50103 +0 0 0 0 0 5 0 2 60103 +0 0 0 0 0 6 0 2 70103 +0 0 0 0 0 7 0 2 80103 +0 0 0 0 0 8 0 2 90103 +0 0 0 0 0 9 0 2 100103 + +0 0 0 0 0 0 1 2 10203 +0 0 0 0 0 1 1 2 20203 +0 0 0 0 0 2 1 2 30203 +0 0 0 0 0 3 1 2 40203 +0 0 0 0 0 4 1 2 50203 +0 0 0 0 0 5 1 2 60203 +0 0 0 0 0 6 1 2 70203 +0 0 0 0 0 7 1 2 80203 +0 0 0 0 0 8 1 2 90203 +0 0 0 0 0 9 1 2 100203 + +0 0 0 0 0 0 2 2 10303 +0 0 0 0 0 1 2 2 20303 +0 0 0 0 0 2 2 2 30303 +0 0 0 0 0 3 2 2 40303 +0 0 0 0 0 4 2 2 50303 +0 0 0 0 0 5 2 2 60303 +0 0 0 0 0 6 2 2 70303 +0 0 0 0 0 7 2 2 80303 +0 0 0 0 0 8 2 2 90303 +0 0 0 0 0 9 2 2 100303 + +0 0 0 0 0 0 3 2 10403 +0 0 0 0 0 1 3 2 20403 +0 0 0 0 0 2 3 2 30403 +0 0 0 0 0 3 3 2 40403 +0 0 0 0 0 4 3 2 50403 +0 0 0 0 0 5 3 2 60403 +0 0 0 0 0 6 3 2 70403 +0 0 0 0 0 7 3 2 80403 +0 0 0 0 0 8 3 2 90403 +0 0 0 0 0 9 3 2 100403 + +0 0 0 0 0 0 4 2 10503 +0 0 0 0 0 1 4 2 20503 +0 0 0 0 0 2 4 2 30503 +0 0 0 0 0 3 4 2 40503 +0 0 0 0 0 4 4 2 50503 +0 0 0 0 0 5 4 2 60503 +0 0 0 0 0 6 4 2 70503 +0 0 0 0 0 7 4 2 80503 +0 0 0 0 0 8 4 2 90503 +0 0 0 0 0 9 4 2 100503 + +0 0 0 0 0 0 5 2 10603 +0 0 0 0 0 1 5 2 20603 +0 0 0 0 0 2 5 2 30603 +0 0 0 0 0 3 5 2 40603 +0 0 0 0 0 4 5 2 50603 +0 0 0 0 0 5 5 2 60603 +0 0 0 0 0 6 5 2 70603 +0 0 0 0 0 7 5 2 80603 +0 0 0 0 0 8 5 2 90603 +0 0 0 0 0 9 5 2 100603 + +0 0 0 0 0 0 6 2 10703 +0 0 0 0 0 1 6 2 20703 +0 0 0 0 0 2 6 2 30703 +0 0 0 0 0 3 6 2 40703 +0 0 0 0 0 4 6 2 50703 +0 0 0 0 0 5 6 2 60703 +0 0 0 0 0 6 6 2 70703 +0 0 0 0 0 7 6 2 80703 +0 0 0 0 0 8 6 2 90703 +0 0 0 0 0 9 6 2 100703 + +0 0 0 0 0 0 7 2 10803 +0 0 0 0 0 1 7 2 20803 +0 0 0 0 0 2 7 2 30803 +0 0 0 0 0 3 7 2 40803 +0 0 0 0 0 4 7 2 50803 +0 0 0 0 0 5 7 2 60803 +0 0 0 0 0 6 7 2 70803 +0 0 0 0 0 7 7 2 80803 +0 0 0 0 0 8 7 2 90803 +0 0 0 0 0 9 7 2 100803 + +0 0 0 0 0 0 8 2 10903 +0 0 0 0 0 1 8 2 20903 +0 0 0 0 0 2 8 2 30903 +0 0 0 0 0 3 8 2 40903 +0 0 0 0 0 4 8 2 50903 +0 0 0 0 0 5 8 2 60903 +0 0 0 0 0 6 8 2 70903 +0 0 0 0 0 7 8 2 80903 +0 0 0 0 0 8 8 2 90903 +0 0 0 0 0 9 8 2 100903 + +0 0 0 0 0 0 9 2 11003 +0 0 0 0 0 1 9 2 21003 +0 0 0 0 0 2 9 2 31003 +0 0 0 0 0 3 9 2 41003 +0 0 0 0 0 4 9 2 51003 +0 0 0 0 0 5 9 2 61003 +0 0 0 0 0 6 9 2 71003 +0 0 0 0 0 7 9 2 81003 +0 0 0 0 0 8 9 2 91003 +0 0 0 0 0 9 9 2 101003 + + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 1 0 3 20104 +0 0 0 0 0 2 0 3 30104 +0 0 0 0 0 3 0 3 40104 +0 0 0 0 0 4 0 3 50104 +0 0 0 0 0 5 0 3 60104 +0 0 0 0 0 6 0 3 70104 +0 0 0 0 0 7 0 3 80104 +0 0 0 0 0 8 0 3 90104 +0 0 0 0 0 9 0 3 100104 + +0 0 0 0 0 0 1 3 10204 +0 0 0 0 0 1 1 3 20204 +0 0 0 0 0 2 1 3 30204 +0 0 0 0 0 3 1 3 40204 +0 0 0 0 0 4 1 3 50204 +0 0 0 0 0 5 1 3 60204 +0 0 0 0 0 6 1 3 70204 +0 0 0 0 0 7 1 3 80204 +0 0 0 0 0 8 1 3 90204 +0 0 0 0 0 9 1 3 100204 + +0 0 0 0 0 0 2 3 10304 +0 0 0 0 0 1 2 3 20304 +0 0 0 0 0 2 2 3 30304 +0 0 0 0 0 3 2 3 40304 +0 0 0 0 0 4 2 3 50304 +0 0 0 0 0 5 2 3 60304 +0 0 0 0 0 6 2 3 70304 +0 0 0 0 0 7 2 3 80304 +0 0 0 0 0 8 2 3 90304 +0 0 0 0 0 9 2 3 100304 + +0 0 0 0 0 0 3 3 10404 +0 0 0 0 0 1 3 3 20404 +0 0 0 0 0 2 3 3 30404 +0 0 0 0 0 3 3 3 40404 +0 0 0 0 0 4 3 3 50404 +0 0 0 0 0 5 3 3 60404 +0 0 0 0 0 6 3 3 70404 +0 0 0 0 0 7 3 3 80404 +0 0 0 0 0 8 3 3 90404 +0 0 0 0 0 9 3 3 100404 + +0 0 0 0 0 0 4 3 10504 +0 0 0 0 0 1 4 3 20504 +0 0 0 0 0 2 4 3 30504 +0 0 0 0 0 3 4 3 40504 +0 0 0 0 0 4 4 3 50504 +0 0 0 0 0 5 4 3 60504 +0 0 0 0 0 6 4 3 70504 +0 0 0 0 0 7 4 3 80504 +0 0 0 0 0 8 4 3 90504 +0 0 0 0 0 9 4 3 100504 + +0 0 0 0 0 0 5 3 10604 +0 0 0 0 0 1 5 3 20604 +0 0 0 0 0 2 5 3 30604 +0 0 0 0 0 3 5 3 40604 +0 0 0 0 0 4 5 3 50604 +0 0 0 0 0 5 5 3 60604 +0 0 0 0 0 6 5 3 70604 +0 0 0 0 0 7 5 3 80604 +0 0 0 0 0 8 5 3 90604 +0 0 0 0 0 9 5 3 100604 + +0 0 0 0 0 0 6 3 10704 +0 0 0 0 0 1 6 3 20704 +0 0 0 0 0 2 6 3 30704 +0 0 0 0 0 3 6 3 40704 +0 0 0 0 0 4 6 3 50704 +0 0 0 0 0 5 6 3 60704 +0 0 0 0 0 6 6 3 70704 +0 0 0 0 0 7 6 3 80704 +0 0 0 0 0 8 6 3 90704 +0 0 0 0 0 9 6 3 100704 + +0 0 0 0 0 0 7 3 10804 +0 0 0 0 0 1 7 3 20804 +0 0 0 0 0 2 7 3 30804 +0 0 0 0 0 3 7 3 40804 +0 0 0 0 0 4 7 3 50804 +0 0 0 0 0 5 7 3 60804 +0 0 0 0 0 6 7 3 70804 +0 0 0 0 0 7 7 3 80804 +0 0 0 0 0 8 7 3 90804 +0 0 0 0 0 9 7 3 100804 + +0 0 0 0 0 0 8 3 10904 +0 0 0 0 0 1 8 3 20904 +0 0 0 0 0 2 8 3 30904 +0 0 0 0 0 3 8 3 40904 +0 0 0 0 0 4 8 3 50904 +0 0 0 0 0 5 8 3 60904 +0 0 0 0 0 6 8 3 70904 +0 0 0 0 0 7 8 3 80904 +0 0 0 0 0 8 8 3 90904 +0 0 0 0 0 9 8 3 100904 + +0 0 0 0 0 0 9 3 11004 +0 0 0 0 0 1 9 3 21004 +0 0 0 0 0 2 9 3 31004 +0 0 0 0 0 3 9 3 41004 +0 0 0 0 0 4 9 3 51004 +0 0 0 0 0 5 9 3 61004 +0 0 0 0 0 6 9 3 71004 +0 0 0 0 0 7 9 3 81004 +0 0 0 0 0 8 9 3 91004 +0 0 0 0 0 9 9 3 101004 + + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 1 0 4 20105 +0 0 0 0 0 2 0 4 30105 +0 0 0 0 0 3 0 4 40105 +0 0 0 0 0 4 0 4 50105 +0 0 0 0 0 5 0 4 60105 +0 0 0 0 0 6 0 4 70105 +0 0 0 0 0 7 0 4 80105 +0 0 0 0 0 8 0 4 90105 +0 0 0 0 0 9 0 4 100105 + +0 0 0 0 0 0 1 4 10205 +0 0 0 0 0 1 1 4 20205 +0 0 0 0 0 2 1 4 30205 +0 0 0 0 0 3 1 4 40205 +0 0 0 0 0 4 1 4 50205 +0 0 0 0 0 5 1 4 60205 +0 0 0 0 0 6 1 4 70205 +0 0 0 0 0 7 1 4 80205 +0 0 0 0 0 8 1 4 90205 +0 0 0 0 0 9 1 4 100205 + +0 0 0 0 0 0 2 4 10305 +0 0 0 0 0 1 2 4 20305 +0 0 0 0 0 2 2 4 30305 +0 0 0 0 0 3 2 4 40305 +0 0 0 0 0 4 2 4 50305 +0 0 0 0 0 5 2 4 60305 +0 0 0 0 0 6 2 4 70305 +0 0 0 0 0 7 2 4 80305 +0 0 0 0 0 8 2 4 90305 +0 0 0 0 0 9 2 4 100305 + +0 0 0 0 0 0 3 4 10405 +0 0 0 0 0 1 3 4 20405 +0 0 0 0 0 2 3 4 30405 +0 0 0 0 0 3 3 4 40405 +0 0 0 0 0 4 3 4 50405 +0 0 0 0 0 5 3 4 60405 +0 0 0 0 0 6 3 4 70405 +0 0 0 0 0 7 3 4 80405 +0 0 0 0 0 8 3 4 90405 +0 0 0 0 0 9 3 4 100405 + +0 0 0 0 0 0 4 4 10505 +0 0 0 0 0 1 4 4 20505 +0 0 0 0 0 2 4 4 30505 +0 0 0 0 0 3 4 4 40505 +0 0 0 0 0 4 4 4 50505 +0 0 0 0 0 5 4 4 60505 +0 0 0 0 0 6 4 4 70505 +0 0 0 0 0 7 4 4 80505 +0 0 0 0 0 8 4 4 90505 +0 0 0 0 0 9 4 4 100505 + +0 0 0 0 0 0 5 4 10605 +0 0 0 0 0 1 5 4 20605 +0 0 0 0 0 2 5 4 30605 +0 0 0 0 0 3 5 4 40605 +0 0 0 0 0 4 5 4 50605 +0 0 0 0 0 5 5 4 60605 +0 0 0 0 0 6 5 4 70605 +0 0 0 0 0 7 5 4 80605 +0 0 0 0 0 8 5 4 90605 +0 0 0 0 0 9 5 4 100605 + +0 0 0 0 0 0 6 4 10705 +0 0 0 0 0 1 6 4 20705 +0 0 0 0 0 2 6 4 30705 +0 0 0 0 0 3 6 4 40705 +0 0 0 0 0 4 6 4 50705 +0 0 0 0 0 5 6 4 60705 +0 0 0 0 0 6 6 4 70705 +0 0 0 0 0 7 6 4 80705 +0 0 0 0 0 8 6 4 90705 +0 0 0 0 0 9 6 4 100705 + +0 0 0 0 0 0 7 4 10805 +0 0 0 0 0 1 7 4 20805 +0 0 0 0 0 2 7 4 30805 +0 0 0 0 0 3 7 4 40805 +0 0 0 0 0 4 7 4 50805 +0 0 0 0 0 5 7 4 60805 +0 0 0 0 0 6 7 4 70805 +0 0 0 0 0 7 7 4 80805 +0 0 0 0 0 8 7 4 90805 +0 0 0 0 0 9 7 4 100805 + +0 0 0 0 0 0 8 4 10905 +0 0 0 0 0 1 8 4 20905 +0 0 0 0 0 2 8 4 30905 +0 0 0 0 0 3 8 4 40905 +0 0 0 0 0 4 8 4 50905 +0 0 0 0 0 5 8 4 60905 +0 0 0 0 0 6 8 4 70905 +0 0 0 0 0 7 8 4 80905 +0 0 0 0 0 8 8 4 90905 +0 0 0 0 0 9 8 4 100905 + +0 0 0 0 0 0 9 4 11005 +0 0 0 0 0 1 9 4 21005 +0 0 0 0 0 2 9 4 31005 +0 0 0 0 0 3 9 4 41005 +0 0 0 0 0 4 9 4 51005 +0 0 0 0 0 5 9 4 61005 +0 0 0 0 0 6 9 4 71005 +0 0 0 0 0 7 9 4 81005 +0 0 0 0 0 8 9 4 91005 +0 0 0 0 0 9 9 4 101005 + + +0 0 0 0 0 0 0 5 10106 +0 0 0 0 0 1 0 5 20106 +0 0 0 0 0 2 0 5 30106 +0 0 0 0 0 3 0 5 40106 +0 0 0 0 0 4 0 5 50106 +0 0 0 0 0 5 0 5 60106 +0 0 0 0 0 6 0 5 70106 +0 0 0 0 0 7 0 5 80106 +0 0 0 0 0 8 0 5 90106 +0 0 0 0 0 9 0 5 100106 + +0 0 0 0 0 0 1 5 10206 +0 0 0 0 0 1 1 5 20206 +0 0 0 0 0 2 1 5 30206 +0 0 0 0 0 3 1 5 40206 +0 0 0 0 0 4 1 5 50206 +0 0 0 0 0 5 1 5 60206 +0 0 0 0 0 6 1 5 70206 +0 0 0 0 0 7 1 5 80206 +0 0 0 0 0 8 1 5 90206 +0 0 0 0 0 9 1 5 100206 + +0 0 0 0 0 0 2 5 10306 +0 0 0 0 0 1 2 5 20306 +0 0 0 0 0 2 2 5 30306 +0 0 0 0 0 3 2 5 40306 +0 0 0 0 0 4 2 5 50306 +0 0 0 0 0 5 2 5 60306 +0 0 0 0 0 6 2 5 70306 +0 0 0 0 0 7 2 5 80306 +0 0 0 0 0 8 2 5 90306 +0 0 0 0 0 9 2 5 100306 + +0 0 0 0 0 0 3 5 10406 +0 0 0 0 0 1 3 5 20406 +0 0 0 0 0 2 3 5 30406 +0 0 0 0 0 3 3 5 40406 +0 0 0 0 0 4 3 5 50406 +0 0 0 0 0 5 3 5 60406 +0 0 0 0 0 6 3 5 70406 +0 0 0 0 0 7 3 5 80406 +0 0 0 0 0 8 3 5 90406 +0 0 0 0 0 9 3 5 100406 + +0 0 0 0 0 0 4 5 10506 +0 0 0 0 0 1 4 5 20506 +0 0 0 0 0 2 4 5 30506 +0 0 0 0 0 3 4 5 40506 +0 0 0 0 0 4 4 5 50506 +0 0 0 0 0 5 4 5 60506 +0 0 0 0 0 6 4 5 70506 +0 0 0 0 0 7 4 5 80506 +0 0 0 0 0 8 4 5 90506 +0 0 0 0 0 9 4 5 100506 + +0 0 0 0 0 0 5 5 10606 +0 0 0 0 0 1 5 5 20606 +0 0 0 0 0 2 5 5 30606 +0 0 0 0 0 3 5 5 40606 +0 0 0 0 0 4 5 5 50606 +0 0 0 0 0 5 5 5 60606 +0 0 0 0 0 6 5 5 70606 +0 0 0 0 0 7 5 5 80606 +0 0 0 0 0 8 5 5 90606 +0 0 0 0 0 9 5 5 100606 + +0 0 0 0 0 0 6 5 10706 +0 0 0 0 0 1 6 5 20706 +0 0 0 0 0 2 6 5 30706 +0 0 0 0 0 3 6 5 40706 +0 0 0 0 0 4 6 5 50706 +0 0 0 0 0 5 6 5 60706 +0 0 0 0 0 6 6 5 70706 +0 0 0 0 0 7 6 5 80706 +0 0 0 0 0 8 6 5 90706 +0 0 0 0 0 9 6 5 100706 + +0 0 0 0 0 0 7 5 10806 +0 0 0 0 0 1 7 5 20806 +0 0 0 0 0 2 7 5 30806 +0 0 0 0 0 3 7 5 40806 +0 0 0 0 0 4 7 5 50806 +0 0 0 0 0 5 7 5 60806 +0 0 0 0 0 6 7 5 70806 +0 0 0 0 0 7 7 5 80806 +0 0 0 0 0 8 7 5 90806 +0 0 0 0 0 9 7 5 100806 + +0 0 0 0 0 0 8 5 10906 +0 0 0 0 0 1 8 5 20906 +0 0 0 0 0 2 8 5 30906 +0 0 0 0 0 3 8 5 40906 +0 0 0 0 0 4 8 5 50906 +0 0 0 0 0 5 8 5 60906 +0 0 0 0 0 6 8 5 70906 +0 0 0 0 0 7 8 5 80906 +0 0 0 0 0 8 8 5 90906 +0 0 0 0 0 9 8 5 100906 + +0 0 0 0 0 0 9 5 11006 +0 0 0 0 0 1 9 5 21006 +0 0 0 0 0 2 9 5 31006 +0 0 0 0 0 3 9 5 41006 +0 0 0 0 0 4 9 5 51006 +0 0 0 0 0 5 9 5 61006 +0 0 0 0 0 6 9 5 71006 +0 0 0 0 0 7 9 5 81006 +0 0 0 0 0 8 9 5 91006 +0 0 0 0 0 9 9 5 101006 + + +0 0 0 0 0 0 0 6 10107 +0 0 0 0 0 1 0 6 20107 +0 0 0 0 0 2 0 6 30107 +0 0 0 0 0 3 0 6 40107 +0 0 0 0 0 4 0 6 50107 +0 0 0 0 0 5 0 6 60107 +0 0 0 0 0 6 0 6 70107 +0 0 0 0 0 7 0 6 80107 +0 0 0 0 0 8 0 6 90107 +0 0 0 0 0 9 0 6 100107 + +0 0 0 0 0 0 1 6 10207 +0 0 0 0 0 1 1 6 20207 +0 0 0 0 0 2 1 6 30207 +0 0 0 0 0 3 1 6 40207 +0 0 0 0 0 4 1 6 50207 +0 0 0 0 0 5 1 6 60207 +0 0 0 0 0 6 1 6 70207 +0 0 0 0 0 7 1 6 80207 +0 0 0 0 0 8 1 6 90207 +0 0 0 0 0 9 1 6 100207 + +0 0 0 0 0 0 2 6 10307 +0 0 0 0 0 1 2 6 20307 +0 0 0 0 0 2 2 6 30307 +0 0 0 0 0 3 2 6 40307 +0 0 0 0 0 4 2 6 50307 +0 0 0 0 0 5 2 6 60307 +0 0 0 0 0 6 2 6 70307 +0 0 0 0 0 7 2 6 80307 +0 0 0 0 0 8 2 6 90307 +0 0 0 0 0 9 2 6 100307 + +0 0 0 0 0 0 3 6 10407 +0 0 0 0 0 1 3 6 20407 +0 0 0 0 0 2 3 6 30407 +0 0 0 0 0 3 3 6 40407 +0 0 0 0 0 4 3 6 50407 +0 0 0 0 0 5 3 6 60407 +0 0 0 0 0 6 3 6 70407 +0 0 0 0 0 7 3 6 80407 +0 0 0 0 0 8 3 6 90407 +0 0 0 0 0 9 3 6 100407 + +0 0 0 0 0 0 4 6 10507 +0 0 0 0 0 1 4 6 20507 +0 0 0 0 0 2 4 6 30507 +0 0 0 0 0 3 4 6 40507 +0 0 0 0 0 4 4 6 50507 +0 0 0 0 0 5 4 6 60507 +0 0 0 0 0 6 4 6 70507 +0 0 0 0 0 7 4 6 80507 +0 0 0 0 0 8 4 6 90507 +0 0 0 0 0 9 4 6 100507 + +0 0 0 0 0 0 5 6 10607 +0 0 0 0 0 1 5 6 20607 +0 0 0 0 0 2 5 6 30607 +0 0 0 0 0 3 5 6 40607 +0 0 0 0 0 4 5 6 50607 +0 0 0 0 0 5 5 6 60607 +0 0 0 0 0 6 5 6 70607 +0 0 0 0 0 7 5 6 80607 +0 0 0 0 0 8 5 6 90607 +0 0 0 0 0 9 5 6 100607 + +0 0 0 0 0 0 6 6 10707 +0 0 0 0 0 1 6 6 20707 +0 0 0 0 0 2 6 6 30707 +0 0 0 0 0 3 6 6 40707 +0 0 0 0 0 4 6 6 50707 +0 0 0 0 0 5 6 6 60707 +0 0 0 0 0 6 6 6 70707 +0 0 0 0 0 7 6 6 80707 +0 0 0 0 0 8 6 6 90707 +0 0 0 0 0 9 6 6 100707 + +0 0 0 0 0 0 7 6 10807 +0 0 0 0 0 1 7 6 20807 +0 0 0 0 0 2 7 6 30807 +0 0 0 0 0 3 7 6 40807 +0 0 0 0 0 4 7 6 50807 +0 0 0 0 0 5 7 6 60807 +0 0 0 0 0 6 7 6 70807 +0 0 0 0 0 7 7 6 80807 +0 0 0 0 0 8 7 6 90807 +0 0 0 0 0 9 7 6 100807 + +0 0 0 0 0 0 8 6 10907 +0 0 0 0 0 1 8 6 20907 +0 0 0 0 0 2 8 6 30907 +0 0 0 0 0 3 8 6 40907 +0 0 0 0 0 4 8 6 50907 +0 0 0 0 0 5 8 6 60907 +0 0 0 0 0 6 8 6 70907 +0 0 0 0 0 7 8 6 80907 +0 0 0 0 0 8 8 6 90907 +0 0 0 0 0 9 8 6 100907 + +0 0 0 0 0 0 9 6 11007 +0 0 0 0 0 1 9 6 21007 +0 0 0 0 0 2 9 6 31007 +0 0 0 0 0 3 9 6 41007 +0 0 0 0 0 4 9 6 51007 +0 0 0 0 0 5 9 6 61007 +0 0 0 0 0 6 9 6 71007 +0 0 0 0 0 7 9 6 81007 +0 0 0 0 0 8 9 6 91007 +0 0 0 0 0 9 9 6 101007 + + +0 0 0 0 0 0 0 7 10108 +0 0 0 0 0 1 0 7 20108 +0 0 0 0 0 2 0 7 30108 +0 0 0 0 0 3 0 7 40108 +0 0 0 0 0 4 0 7 50108 +0 0 0 0 0 5 0 7 60108 +0 0 0 0 0 6 0 7 70108 +0 0 0 0 0 7 0 7 80108 +0 0 0 0 0 8 0 7 90108 +0 0 0 0 0 9 0 7 100108 + +0 0 0 0 0 0 1 7 10208 +0 0 0 0 0 1 1 7 20208 +0 0 0 0 0 2 1 7 30208 +0 0 0 0 0 3 1 7 40208 +0 0 0 0 0 4 1 7 50208 +0 0 0 0 0 5 1 7 60208 +0 0 0 0 0 6 1 7 70208 +0 0 0 0 0 7 1 7 80208 +0 0 0 0 0 8 1 7 90208 +0 0 0 0 0 9 1 7 100208 + +0 0 0 0 0 0 2 7 10308 +0 0 0 0 0 1 2 7 20308 +0 0 0 0 0 2 2 7 30308 +0 0 0 0 0 3 2 7 40308 +0 0 0 0 0 4 2 7 50308 +0 0 0 0 0 5 2 7 60308 +0 0 0 0 0 6 2 7 70308 +0 0 0 0 0 7 2 7 80308 +0 0 0 0 0 8 2 7 90308 +0 0 0 0 0 9 2 7 100308 + +0 0 0 0 0 0 3 7 10408 +0 0 0 0 0 1 3 7 20408 +0 0 0 0 0 2 3 7 30408 +0 0 0 0 0 3 3 7 40408 +0 0 0 0 0 4 3 7 50408 +0 0 0 0 0 5 3 7 60408 +0 0 0 0 0 6 3 7 70408 +0 0 0 0 0 7 3 7 80408 +0 0 0 0 0 8 3 7 90408 +0 0 0 0 0 9 3 7 100408 + +0 0 0 0 0 0 4 7 10508 +0 0 0 0 0 1 4 7 20508 +0 0 0 0 0 2 4 7 30508 +0 0 0 0 0 3 4 7 40508 +0 0 0 0 0 4 4 7 50508 +0 0 0 0 0 5 4 7 60508 +0 0 0 0 0 6 4 7 70508 +0 0 0 0 0 7 4 7 80508 +0 0 0 0 0 8 4 7 90508 +0 0 0 0 0 9 4 7 100508 + +0 0 0 0 0 0 5 7 10608 +0 0 0 0 0 1 5 7 20608 +0 0 0 0 0 2 5 7 30608 +0 0 0 0 0 3 5 7 40608 +0 0 0 0 0 4 5 7 50608 +0 0 0 0 0 5 5 7 60608 +0 0 0 0 0 6 5 7 70608 +0 0 0 0 0 7 5 7 80608 +0 0 0 0 0 8 5 7 90608 +0 0 0 0 0 9 5 7 100608 + +0 0 0 0 0 0 6 7 10708 +0 0 0 0 0 1 6 7 20708 +0 0 0 0 0 2 6 7 30708 +0 0 0 0 0 3 6 7 40708 +0 0 0 0 0 4 6 7 50708 +0 0 0 0 0 5 6 7 60708 +0 0 0 0 0 6 6 7 70708 +0 0 0 0 0 7 6 7 80708 +0 0 0 0 0 8 6 7 90708 +0 0 0 0 0 9 6 7 100708 + +0 0 0 0 0 0 7 7 10808 +0 0 0 0 0 1 7 7 20808 +0 0 0 0 0 2 7 7 30808 +0 0 0 0 0 3 7 7 40808 +0 0 0 0 0 4 7 7 50808 +0 0 0 0 0 5 7 7 60808 +0 0 0 0 0 6 7 7 70808 +0 0 0 0 0 7 7 7 80808 +0 0 0 0 0 8 7 7 90808 +0 0 0 0 0 9 7 7 100808 + +0 0 0 0 0 0 8 7 10908 +0 0 0 0 0 1 8 7 20908 +0 0 0 0 0 2 8 7 30908 +0 0 0 0 0 3 8 7 40908 +0 0 0 0 0 4 8 7 50908 +0 0 0 0 0 5 8 7 60908 +0 0 0 0 0 6 8 7 70908 +0 0 0 0 0 7 8 7 80908 +0 0 0 0 0 8 8 7 90908 +0 0 0 0 0 9 8 7 100908 + +0 0 0 0 0 0 9 7 11008 +0 0 0 0 0 1 9 7 21008 +0 0 0 0 0 2 9 7 31008 +0 0 0 0 0 3 9 7 41008 +0 0 0 0 0 4 9 7 51008 +0 0 0 0 0 5 9 7 61008 +0 0 0 0 0 6 9 7 71008 +0 0 0 0 0 7 9 7 81008 +0 0 0 0 0 8 9 7 91008 +0 0 0 0 0 9 9 7 101008 + + +0 0 0 0 0 0 0 8 10109 +0 0 0 0 0 1 0 8 20109 +0 0 0 0 0 2 0 8 30109 +0 0 0 0 0 3 0 8 40109 +0 0 0 0 0 4 0 8 50109 +0 0 0 0 0 5 0 8 60109 +0 0 0 0 0 6 0 8 70109 +0 0 0 0 0 7 0 8 80109 +0 0 0 0 0 8 0 8 90109 +0 0 0 0 0 9 0 8 100109 + +0 0 0 0 0 0 1 8 10209 +0 0 0 0 0 1 1 8 20209 +0 0 0 0 0 2 1 8 30209 +0 0 0 0 0 3 1 8 40209 +0 0 0 0 0 4 1 8 50209 +0 0 0 0 0 5 1 8 60209 +0 0 0 0 0 6 1 8 70209 +0 0 0 0 0 7 1 8 80209 +0 0 0 0 0 8 1 8 90209 +0 0 0 0 0 9 1 8 100209 + +0 0 0 0 0 0 2 8 10309 +0 0 0 0 0 1 2 8 20309 +0 0 0 0 0 2 2 8 30309 +0 0 0 0 0 3 2 8 40309 +0 0 0 0 0 4 2 8 50309 +0 0 0 0 0 5 2 8 60309 +0 0 0 0 0 6 2 8 70309 +0 0 0 0 0 7 2 8 80309 +0 0 0 0 0 8 2 8 90309 +0 0 0 0 0 9 2 8 100309 + +0 0 0 0 0 0 3 8 10409 +0 0 0 0 0 1 3 8 20409 +0 0 0 0 0 2 3 8 30409 +0 0 0 0 0 3 3 8 40409 +0 0 0 0 0 4 3 8 50409 +0 0 0 0 0 5 3 8 60409 +0 0 0 0 0 6 3 8 70409 +0 0 0 0 0 7 3 8 80409 +0 0 0 0 0 8 3 8 90409 +0 0 0 0 0 9 3 8 100409 + +0 0 0 0 0 0 4 8 10509 +0 0 0 0 0 1 4 8 20509 +0 0 0 0 0 2 4 8 30509 +0 0 0 0 0 3 4 8 40509 +0 0 0 0 0 4 4 8 50509 +0 0 0 0 0 5 4 8 60509 +0 0 0 0 0 6 4 8 70509 +0 0 0 0 0 7 4 8 80509 +0 0 0 0 0 8 4 8 90509 +0 0 0 0 0 9 4 8 100509 + +0 0 0 0 0 0 5 8 10609 +0 0 0 0 0 1 5 8 20609 +0 0 0 0 0 2 5 8 30609 +0 0 0 0 0 3 5 8 40609 +0 0 0 0 0 4 5 8 50609 +0 0 0 0 0 5 5 8 60609 +0 0 0 0 0 6 5 8 70609 +0 0 0 0 0 7 5 8 80609 +0 0 0 0 0 8 5 8 90609 +0 0 0 0 0 9 5 8 100609 + +0 0 0 0 0 0 6 8 10709 +0 0 0 0 0 1 6 8 20709 +0 0 0 0 0 2 6 8 30709 +0 0 0 0 0 3 6 8 40709 +0 0 0 0 0 4 6 8 50709 +0 0 0 0 0 5 6 8 60709 +0 0 0 0 0 6 6 8 70709 +0 0 0 0 0 7 6 8 80709 +0 0 0 0 0 8 6 8 90709 +0 0 0 0 0 9 6 8 100709 + +0 0 0 0 0 0 7 8 10809 +0 0 0 0 0 1 7 8 20809 +0 0 0 0 0 2 7 8 30809 +0 0 0 0 0 3 7 8 40809 +0 0 0 0 0 4 7 8 50809 +0 0 0 0 0 5 7 8 60809 +0 0 0 0 0 6 7 8 70809 +0 0 0 0 0 7 7 8 80809 +0 0 0 0 0 8 7 8 90809 +0 0 0 0 0 9 7 8 100809 + +0 0 0 0 0 0 8 8 10909 +0 0 0 0 0 1 8 8 20909 +0 0 0 0 0 2 8 8 30909 +0 0 0 0 0 3 8 8 40909 +0 0 0 0 0 4 8 8 50909 +0 0 0 0 0 5 8 8 60909 +0 0 0 0 0 6 8 8 70909 +0 0 0 0 0 7 8 8 80909 +0 0 0 0 0 8 8 8 90909 +0 0 0 0 0 9 8 8 100909 + +0 0 0 0 0 0 9 8 11009 +0 0 0 0 0 1 9 8 21009 +0 0 0 0 0 2 9 8 31009 +0 0 0 0 0 3 9 8 41009 +0 0 0 0 0 4 9 8 51009 +0 0 0 0 0 5 9 8 61009 +0 0 0 0 0 6 9 8 71009 +0 0 0 0 0 7 9 8 81009 +0 0 0 0 0 8 9 8 91009 +0 0 0 0 0 9 9 8 101009 + + +0 0 0 0 0 0 0 9 10110 +0 0 0 0 0 1 0 9 20110 +0 0 0 0 0 2 0 9 30110 +0 0 0 0 0 3 0 9 40110 +0 0 0 0 0 4 0 9 50110 +0 0 0 0 0 5 0 9 60110 +0 0 0 0 0 6 0 9 70110 +0 0 0 0 0 7 0 9 80110 +0 0 0 0 0 8 0 9 90110 +0 0 0 0 0 9 0 9 100110 + +0 0 0 0 0 0 1 9 10210 +0 0 0 0 0 1 1 9 20210 +0 0 0 0 0 2 1 9 30210 +0 0 0 0 0 3 1 9 40210 +0 0 0 0 0 4 1 9 50210 +0 0 0 0 0 5 1 9 60210 +0 0 0 0 0 6 1 9 70210 +0 0 0 0 0 7 1 9 80210 +0 0 0 0 0 8 1 9 90210 +0 0 0 0 0 9 1 9 100210 + +0 0 0 0 0 0 2 9 10310 +0 0 0 0 0 1 2 9 20310 +0 0 0 0 0 2 2 9 30310 +0 0 0 0 0 3 2 9 40310 +0 0 0 0 0 4 2 9 50310 +0 0 0 0 0 5 2 9 60310 +0 0 0 0 0 6 2 9 70310 +0 0 0 0 0 7 2 9 80310 +0 0 0 0 0 8 2 9 90310 +0 0 0 0 0 9 2 9 100310 + +0 0 0 0 0 0 3 9 10410 +0 0 0 0 0 1 3 9 20410 +0 0 0 0 0 2 3 9 30410 +0 0 0 0 0 3 3 9 40410 +0 0 0 0 0 4 3 9 50410 +0 0 0 0 0 5 3 9 60410 +0 0 0 0 0 6 3 9 70410 +0 0 0 0 0 7 3 9 80410 +0 0 0 0 0 8 3 9 90410 +0 0 0 0 0 9 3 9 100410 + +0 0 0 0 0 0 4 9 10510 +0 0 0 0 0 1 4 9 20510 +0 0 0 0 0 2 4 9 30510 +0 0 0 0 0 3 4 9 40510 +0 0 0 0 0 4 4 9 50510 +0 0 0 0 0 5 4 9 60510 +0 0 0 0 0 6 4 9 70510 +0 0 0 0 0 7 4 9 80510 +0 0 0 0 0 8 4 9 90510 +0 0 0 0 0 9 4 9 100510 + +0 0 0 0 0 0 5 9 10610 +0 0 0 0 0 1 5 9 20610 +0 0 0 0 0 2 5 9 30610 +0 0 0 0 0 3 5 9 40610 +0 0 0 0 0 4 5 9 50610 +0 0 0 0 0 5 5 9 60610 +0 0 0 0 0 6 5 9 70610 +0 0 0 0 0 7 5 9 80610 +0 0 0 0 0 8 5 9 90610 +0 0 0 0 0 9 5 9 100610 + +0 0 0 0 0 0 6 9 10710 +0 0 0 0 0 1 6 9 20710 +0 0 0 0 0 2 6 9 30710 +0 0 0 0 0 3 6 9 40710 +0 0 0 0 0 4 6 9 50710 +0 0 0 0 0 5 6 9 60710 +0 0 0 0 0 6 6 9 70710 +0 0 0 0 0 7 6 9 80710 +0 0 0 0 0 8 6 9 90710 +0 0 0 0 0 9 6 9 100710 + +0 0 0 0 0 0 7 9 10810 +0 0 0 0 0 1 7 9 20810 +0 0 0 0 0 2 7 9 30810 +0 0 0 0 0 3 7 9 40810 +0 0 0 0 0 4 7 9 50810 +0 0 0 0 0 5 7 9 60810 +0 0 0 0 0 6 7 9 70810 +0 0 0 0 0 7 7 9 80810 +0 0 0 0 0 8 7 9 90810 +0 0 0 0 0 9 7 9 100810 + +0 0 0 0 0 0 8 9 10910 +0 0 0 0 0 1 8 9 20910 +0 0 0 0 0 2 8 9 30910 +0 0 0 0 0 3 8 9 40910 +0 0 0 0 0 4 8 9 50910 +0 0 0 0 0 5 8 9 60910 +0 0 0 0 0 6 8 9 70910 +0 0 0 0 0 7 8 9 80910 +0 0 0 0 0 8 8 9 90910 +0 0 0 0 0 9 8 9 100910 + +0 0 0 0 0 0 9 9 11010 +0 0 0 0 0 1 9 9 21010 +0 0 0 0 0 2 9 9 31010 +0 0 0 0 0 3 9 9 41010 +0 0 0 0 0 4 9 9 51010 +0 0 0 0 0 5 9 9 61010 +0 0 0 0 0 6 9 9 71010 +0 0 0 0 0 7 9 9 81010 +0 0 0 0 0 8 9 9 91010 +0 0 0 0 0 9 9 9 101010 + + + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.xzp b/Carpet/CarpetTest/test/arraysizes/gf.xzp new file mode 100644 index 000000000..d1389962b --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.xzp @@ -0,0 +1,117 @@ +# CARPETTEST::gf x z (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 1 0 0 20101 +0 0 0 0 0 2 0 0 30101 +0 0 0 0 0 3 0 0 40101 +0 0 0 0 0 4 0 0 50101 +0 0 0 0 0 5 0 0 60101 +0 0 0 0 0 6 0 0 70101 +0 0 0 0 0 7 0 0 80101 +0 0 0 0 0 8 0 0 90101 +0 0 0 0 0 9 0 0 100101 + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 1 0 1 20102 +0 0 0 0 0 2 0 1 30102 +0 0 0 0 0 3 0 1 40102 +0 0 0 0 0 4 0 1 50102 +0 0 0 0 0 5 0 1 60102 +0 0 0 0 0 6 0 1 70102 +0 0 0 0 0 7 0 1 80102 +0 0 0 0 0 8 0 1 90102 +0 0 0 0 0 9 0 1 100102 + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 1 0 2 20103 +0 0 0 0 0 2 0 2 30103 +0 0 0 0 0 3 0 2 40103 +0 0 0 0 0 4 0 2 50103 +0 0 0 0 0 5 0 2 60103 +0 0 0 0 0 6 0 2 70103 +0 0 0 0 0 7 0 2 80103 +0 0 0 0 0 8 0 2 90103 +0 0 0 0 0 9 0 2 100103 + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 1 0 3 20104 +0 0 0 0 0 2 0 3 30104 +0 0 0 0 0 3 0 3 40104 +0 0 0 0 0 4 0 3 50104 +0 0 0 0 0 5 0 3 60104 +0 0 0 0 0 6 0 3 70104 +0 0 0 0 0 7 0 3 80104 +0 0 0 0 0 8 0 3 90104 +0 0 0 0 0 9 0 3 100104 + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 1 0 4 20105 +0 0 0 0 0 2 0 4 30105 +0 0 0 0 0 3 0 4 40105 +0 0 0 0 0 4 0 4 50105 +0 0 0 0 0 5 0 4 60105 +0 0 0 0 0 6 0 4 70105 +0 0 0 0 0 7 0 4 80105 +0 0 0 0 0 8 0 4 90105 +0 0 0 0 0 9 0 4 100105 + +0 0 0 0 0 0 0 5 10106 +0 0 0 0 0 1 0 5 20106 +0 0 0 0 0 2 0 5 30106 +0 0 0 0 0 3 0 5 40106 +0 0 0 0 0 4 0 5 50106 +0 0 0 0 0 5 0 5 60106 +0 0 0 0 0 6 0 5 70106 +0 0 0 0 0 7 0 5 80106 +0 0 0 0 0 8 0 5 90106 +0 0 0 0 0 9 0 5 100106 + +0 0 0 0 0 0 0 6 10107 +0 0 0 0 0 1 0 6 20107 +0 0 0 0 0 2 0 6 30107 +0 0 0 0 0 3 0 6 40107 +0 0 0 0 0 4 0 6 50107 +0 0 0 0 0 5 0 6 60107 +0 0 0 0 0 6 0 6 70107 +0 0 0 0 0 7 0 6 80107 +0 0 0 0 0 8 0 6 90107 +0 0 0 0 0 9 0 6 100107 + +0 0 0 0 0 0 0 7 10108 +0 0 0 0 0 1 0 7 20108 +0 0 0 0 0 2 0 7 30108 +0 0 0 0 0 3 0 7 40108 +0 0 0 0 0 4 0 7 50108 +0 0 0 0 0 5 0 7 60108 +0 0 0 0 0 6 0 7 70108 +0 0 0 0 0 7 0 7 80108 +0 0 0 0 0 8 0 7 90108 +0 0 0 0 0 9 0 7 100108 + +0 0 0 0 0 0 0 8 10109 +0 0 0 0 0 1 0 8 20109 +0 0 0 0 0 2 0 8 30109 +0 0 0 0 0 3 0 8 40109 +0 0 0 0 0 4 0 8 50109 +0 0 0 0 0 5 0 8 60109 +0 0 0 0 0 6 0 8 70109 +0 0 0 0 0 7 0 8 80109 +0 0 0 0 0 8 0 8 90109 +0 0 0 0 0 9 0 8 100109 + +0 0 0 0 0 0 0 9 10110 +0 0 0 0 0 1 0 9 20110 +0 0 0 0 0 2 0 9 30110 +0 0 0 0 0 3 0 9 40110 +0 0 0 0 0 4 0 9 50110 +0 0 0 0 0 5 0 9 60110 +0 0 0 0 0 6 0 9 70110 +0 0 0 0 0 7 0 9 80110 +0 0 0 0 0 8 0 9 90110 +0 0 0 0 0 9 0 9 100110 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.yl b/Carpet/CarpetTest/test/arraysizes/gf.yl new file mode 100644 index 000000000..4a6518845 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.yl @@ -0,0 +1,17 @@ +# CARPETTEST::gf y (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 0 4 0 10501 +0 0 0 0 0 0 5 0 10601 +0 0 0 0 0 0 6 0 10701 +0 0 0 0 0 0 7 0 10801 +0 0 0 0 0 0 8 0 10901 +0 0 0 0 0 0 9 0 11001 + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.yzp b/Carpet/CarpetTest/test/arraysizes/gf.yzp new file mode 100644 index 000000000..0ae900432 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.yzp @@ -0,0 +1,117 @@ +# CARPETTEST::gf y z (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 1 0 10201 +0 0 0 0 0 0 2 0 10301 +0 0 0 0 0 0 3 0 10401 +0 0 0 0 0 0 4 0 10501 +0 0 0 0 0 0 5 0 10601 +0 0 0 0 0 0 6 0 10701 +0 0 0 0 0 0 7 0 10801 +0 0 0 0 0 0 8 0 10901 +0 0 0 0 0 0 9 0 11001 + +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 0 1 1 10202 +0 0 0 0 0 0 2 1 10302 +0 0 0 0 0 0 3 1 10402 +0 0 0 0 0 0 4 1 10502 +0 0 0 0 0 0 5 1 10602 +0 0 0 0 0 0 6 1 10702 +0 0 0 0 0 0 7 1 10802 +0 0 0 0 0 0 8 1 10902 +0 0 0 0 0 0 9 1 11002 + +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 0 1 2 10203 +0 0 0 0 0 0 2 2 10303 +0 0 0 0 0 0 3 2 10403 +0 0 0 0 0 0 4 2 10503 +0 0 0 0 0 0 5 2 10603 +0 0 0 0 0 0 6 2 10703 +0 0 0 0 0 0 7 2 10803 +0 0 0 0 0 0 8 2 10903 +0 0 0 0 0 0 9 2 11003 + +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 0 1 3 10204 +0 0 0 0 0 0 2 3 10304 +0 0 0 0 0 0 3 3 10404 +0 0 0 0 0 0 4 3 10504 +0 0 0 0 0 0 5 3 10604 +0 0 0 0 0 0 6 3 10704 +0 0 0 0 0 0 7 3 10804 +0 0 0 0 0 0 8 3 10904 +0 0 0 0 0 0 9 3 11004 + +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 0 1 4 10205 +0 0 0 0 0 0 2 4 10305 +0 0 0 0 0 0 3 4 10405 +0 0 0 0 0 0 4 4 10505 +0 0 0 0 0 0 5 4 10605 +0 0 0 0 0 0 6 4 10705 +0 0 0 0 0 0 7 4 10805 +0 0 0 0 0 0 8 4 10905 +0 0 0 0 0 0 9 4 11005 + +0 0 0 0 0 0 0 5 10106 +0 0 0 0 0 0 1 5 10206 +0 0 0 0 0 0 2 5 10306 +0 0 0 0 0 0 3 5 10406 +0 0 0 0 0 0 4 5 10506 +0 0 0 0 0 0 5 5 10606 +0 0 0 0 0 0 6 5 10706 +0 0 0 0 0 0 7 5 10806 +0 0 0 0 0 0 8 5 10906 +0 0 0 0 0 0 9 5 11006 + +0 0 0 0 0 0 0 6 10107 +0 0 0 0 0 0 1 6 10207 +0 0 0 0 0 0 2 6 10307 +0 0 0 0 0 0 3 6 10407 +0 0 0 0 0 0 4 6 10507 +0 0 0 0 0 0 5 6 10607 +0 0 0 0 0 0 6 6 10707 +0 0 0 0 0 0 7 6 10807 +0 0 0 0 0 0 8 6 10907 +0 0 0 0 0 0 9 6 11007 + +0 0 0 0 0 0 0 7 10108 +0 0 0 0 0 0 1 7 10208 +0 0 0 0 0 0 2 7 10308 +0 0 0 0 0 0 3 7 10408 +0 0 0 0 0 0 4 7 10508 +0 0 0 0 0 0 5 7 10608 +0 0 0 0 0 0 6 7 10708 +0 0 0 0 0 0 7 7 10808 +0 0 0 0 0 0 8 7 10908 +0 0 0 0 0 0 9 7 11008 + +0 0 0 0 0 0 0 8 10109 +0 0 0 0 0 0 1 8 10209 +0 0 0 0 0 0 2 8 10309 +0 0 0 0 0 0 3 8 10409 +0 0 0 0 0 0 4 8 10509 +0 0 0 0 0 0 5 8 10609 +0 0 0 0 0 0 6 8 10709 +0 0 0 0 0 0 7 8 10809 +0 0 0 0 0 0 8 8 10909 +0 0 0 0 0 0 9 8 11009 + +0 0 0 0 0 0 0 9 10110 +0 0 0 0 0 0 1 9 10210 +0 0 0 0 0 0 2 9 10310 +0 0 0 0 0 0 3 9 10410 +0 0 0 0 0 0 4 9 10510 +0 0 0 0 0 0 5 9 10610 +0 0 0 0 0 0 6 9 10710 +0 0 0 0 0 0 7 9 10810 +0 0 0 0 0 0 8 9 10910 +0 0 0 0 0 0 9 9 11010 + + + diff --git a/Carpet/CarpetTest/test/arraysizes/gf.zl b/Carpet/CarpetTest/test/arraysizes/gf.zl new file mode 100644 index 000000000..9c2434cc5 --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/gf.zl @@ -0,0 +1,17 @@ +# CARPETTEST::gf z (gf) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 10101 +0 0 0 0 0 0 0 1 10102 +0 0 0 0 0 0 0 2 10103 +0 0 0 0 0 0 0 3 10104 +0 0 0 0 0 0 0 4 10105 +0 0 0 0 0 0 0 5 10106 +0 0 0 0 0 0 0 6 10107 +0 0 0 0 0 0 0 7 10108 +0 0 0 0 0 0 0 8 10109 +0 0 0 0 0 0 0 9 10110 + + diff --git a/Carpet/CarpetTest/test/arraysizes/sc.xl b/Carpet/CarpetTest/test/arraysizes/sc.xl new file mode 100644 index 000000000..1cdac03cf --- /dev/null +++ b/Carpet/CarpetTest/test/arraysizes/sc.xl @@ -0,0 +1,8 @@ +# CARPETTEST::sc x (sc) +# +# iteration 0 +# time level 0 refinement level 0 component 0 multigrid level 0 +# column format: it tl rl c ml x y z data +0 0 0 0 0 0 0 0 42 + + diff --git a/Carpet/CarpetWeb/CarpetMonth/index.html b/Carpet/CarpetWeb/CarpetMonth/index.html new file mode 100644 index 000000000..b967aacfb --- /dev/null +++ b/Carpet/CarpetWeb/CarpetMonth/index.html @@ -0,0 +1,340 @@ +<?xml version="1.0" encoding="ISO-8859-15"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> + <title>Carpet Month</title> + </head> + + <body> + <h1>Carpet Month</h1> + + <hr /> + + + +<h2>Items on the agenda during Carpet Month</h2> + +<h3>Physics done</h3> + +<ol> + <li>Periodic boundaries</li> + <li>Robust stability</li> + <li>Coordinates and symmetry conditions</li> + <li>Vector grid functions (worked all the time)</li> + <li>"Universal" mode (now called "global mode" and "level mode")</li> +</ol> + + + +<h3>Physics in the works</h3> + +<ol> + <li><b>Documentation</b></li> + <li>Gauge wave (travelling)</li> + <li>Binary black holes</li> + <li>Convergence tests in GR</li> + <li>Scalar fields (with Francisco)</li> + <li>Interpolator</li> + <li>Checkpoint / restart</li> + <li>Excision</li> +</ol> + + + +<h3>Physics to be done</h3> + +<ol> + <li>Compile and run on + <ul> + <li>Platinum</li> + <li>Titan</li> + <li>Peyote</li> + <li>Lemieux</li> + <li>Loslobos</li> + <li>Seaborg</li> + <li>psi</li> + <li>Hitachi</li> + <li>OSX Darwin 6.5</li> + </ul></li> + <li>Parallel performance</li> + <li>Testsuites</li> +</ol> + + + +<h3>Physics to dream about</h3> + +<ol> + <li>Other gauge waves</li> + <li>Brill waves (requires elliptic solver)</li> + <li>Basic hydro (requires prolongation operators)</li> + <li>Output formats</li> + <li>FlexIO</li> + <li>Viz methods</li> + <li>Elliptic solvers</li> + <li>Cell centering</li> + <li>Reduction operators</li> + <li>Prolongation operators</li> + <li>Progressive FMR</li> + <li>AMR</li> + <li>Automatic convergence testing</li> + <li>User friendliness</li> + <li>Compile Carpet + AHFinderDirect + Lorene together.</li> + <li>Custom refinement</li> + <li>Callbacks + <ul> + <li>when creating a new grid</li> + <li>after SYNCing</li> + </ul></li> +</ol> + + + +<h3>People to work on this</h3> + +<ul> + <li>Erik Schnetter</li> + <li>Jonathan Thornburg</li> + <li>Ian Hawke</li> + <li>Thomas Radke</li> + <li>Scott Hawley <b>(away)</b></li> + <li>Christian Ott <b>(away)</b></li> + <li>Werner Benger</li> + <li>Ralf Kähler</li> +</ul> + + + +<h3>Tentative schedule with people (outdated):</h3> + +<table> + + <tr> + <td> + <b>Priority</b> (1-3) + </td> + <td> + <b>Topic</b> + </td> + <td> + <b>When</b> (Start, duration) + </td> + <td> + <b>Who</b> + </td> + </tr> + + <tr> + <td> + <b>1</b> + + </td> + <td> + Documentation + </td> + <td> + Ongoing, from the beginning + </td> + <td> + ES, IH, JT + </td> + </tr> + + <tr> + <td> + 2 + </td> + <td> + Interpolator + </td> + <td> + Simple version: from start, 2 weeks. + </td> + <td> + ES, JT, TR + </td> + </tr> + + <tr> + <td> + 2 + </td> + <td> + Compile on various platforms + </td> + <td> + From 1 week ongoing + </td> + <td> + ES, IH, SH, CO, PD, JT, ... + </td> + </tr> + + <tr> + <td> + 2 + </td> + <td> + Testsuites + </td> + <td> + From 2 weeks + </td> + <td> + Everybody + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Checkpoint / restart + </td> + <td> + Simple version: from start, 2 weeks (max). + </td> + <td> + ES, TR, IH + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + + </td> + <td> + Parallel version: from 2 weeks, ongoing. + </td> + <td> + ES, TR, JS?, WB?, RK? + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + FlexIO / output / Viz + </td> + <td> + From 1 week ongoing + </td> + <td> + ES, TR, JS, WB, RK, ... + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Elliptic solvers + </td> + <td> + Ongoing + </td> + <td> + ES, JT, SH, PD, DP, IH, ... + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Parallel performance + </td> + <td> + From 2 weeks, ongoing + </td> + <td> + ES, SH, IH, TR, ...? + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Prolongation operators + </td> + <td> + Ongoing (shouldn't take long) + </td> + <td> + ES, IH, ... + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Remove no-op warnings (e.g., prolongation of INT GF's) + </td> + <td> + Ongoing + </td> + <td> + ES, ... + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Vector grid functions + </td> + <td> + From 1 week (shouldn't take long) + </td> + <td> + ES, IH, ... + </td> + </tr> + + <tr> + <td> + 3 + </td> + <td> + Excision + </td> + <td> + From 2 weeks (shouldn't take long) + </td> + <td> + ES, IH, DP, JT, ... + </td> + </tr> + +</table> + + + + <hr /> + <a href="http://www.carpetcode.org/">[Go to carpetcode.org]</a> + <address><a href="mailto:schnetter@uni-tuebingen.de">Erik Schnetter</a></address> +<p> +<!-- Created: Wed Sep 6 20:44:31 EDT 2000 --> +<!-- hhmts start --> +Last modified: Tue Aug 12 22:31:42 CEST 2003 +<!-- hhmts end --> +</p> + </body> +</html> diff --git a/Carpet/CarpetWeb/Makefile b/Carpet/CarpetWeb/Makefile new file mode 100644 index 000000000..fbbe2dcaf --- /dev/null +++ b/Carpet/CarpetWeb/Makefile @@ -0,0 +1,6 @@ +all: + +sync: + rsync -a -v -z --exclude "*~" --exclude doxygen --delete -e ssh ./ carpet@www.carpetcode.org:www.carpetcode.org/htdocs + +.PSEUDO: all sync diff --git a/Carpet/CarpetWeb/bugs.html b/Carpet/CarpetWeb/bugs.html new file mode 100644 index 000000000..f0eeb609a --- /dev/null +++ b/Carpet/CarpetWeb/bugs.html @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="ISO-8859-15"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> + <title>Bugs in the Carpet</title> + </head> + + <body> + <h1>Bugs in the Carpet</h1> + + <p>As Carpet is being looked at (and used?) by more and more + people, they find more and more things that don't work as + expected, or are plain broken. We want to correct these. Here is + a list of the currently known problems.</p> + + <ul> + <li>Vector grid functions are not contiguous in memory</li> + </ul> + + <hr /> + + <p> + <a href="http://www.xemacs.org/About/created.html"><img + src="cbxSmall.jpg" alt="Created with XEmacs!" height="36" + width="100" /></a> + + <a href="http://www.anybrowser.org/campaign/"><img + src="logoab8.png" alt="Best Viewed With Any Browser" height="31" + width="88" /></a> + + <a href="http://validator.w3.org/check/referer"><img + src="valid-xhtml10.png" alt="Valid XHTML 1.0!" height="31" + width="88" /></a> + </p> + + <address><a href="mailto:schnetter@uni-tuebingen.de">Erik Schnetter</a></address> +<p> +<!-- Created: Thu Aug 14 20:16:15 CEST 2003 --> +<!-- hhmts start --> +Last modified: Thu Aug 14 20:38:08 CEST 2003 +<!-- hhmts end --> +</p> + </body> +</html> diff --git a/Carpet/CarpetWeb/cbxSmall.jpg b/Carpet/CarpetWeb/cbxSmall.jpg Binary files differnew file mode 100644 index 000000000..d7291c3fb --- /dev/null +++ b/Carpet/CarpetWeb/cbxSmall.jpg diff --git a/Carpet/CarpetWeb/doc/documentation.ps b/Carpet/CarpetWeb/doc/documentation.ps new file mode 100644 index 000000000..4eb199555 --- /dev/null +++ b/Carpet/CarpetWeb/doc/documentation.ps @@ -0,0 +1,5526 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: documentation.dvi +%%Pages: 10 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: CMR17 CMR12 CMMI12 CMBX9 CMR9 CMBX12 CMR10 CMTI10 +%%+ CMCSC10 CMTT10 CMITT10 CMMI10 CMMI7 CMSY7 CMR7 CMSY10 CMBX10 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips documentation.dvi -o documentation.ps +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2003.05.03:1520 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen +/period /slash /zero /one /two /three /four /five /six /seven /eight +/nine /colon /semicolon /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: aae443f0.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 +% +/TeXaae443f0Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa +/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi +/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf +/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft +/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle +/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle +/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash +/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow +/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p +/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector +/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta +/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon +/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 0ef0afca.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmr5 +% +/TeX0ef0afcaEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi +/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls +/ae /oe /oslash /AE /OE /Oslash /suppress /exclam /quotedblright +/numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon +/less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /quotedblleft +/bracketright /circumflex /dotaccent /quoteleft /a /b /c /d /e /f /g /h +/i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /endash /emdash +/hungarumlaut /tilde /dieresis /suppress /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda +/Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup +/arrowdown /quotesingle /exclamdown /questiondown /dotlessi /dotlessj +/grave /acute /caron /breve /macron /ring /cedilla /germandbls /ae /oe +/oslash /AE /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam +/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: b6a4d7c7.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmitt10 +% +/TeXb6a4d7c7Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/arrowup /arrowdown /quotesingle /exclamdown /questiondown /dotlessi +/dotlessj /grave /acute /caron /breve /macron /ring /cedilla /germandbls +/ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam /quotedbl +/numbersign /sterling /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginProcSet: special.pro +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def +@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll +newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto +closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N +/@beginspecial{SDict begin/SpecialSave save N gsave normalscale +currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} +N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs +neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate +rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse +scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg +lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx +ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N +/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ +pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave +restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B +/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 +setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY +moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix +matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc +savematrix setmatrix}N end + +%%EndProcSet +TeXDict begin @defspecial + + /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div +Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff +pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def +/H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF +/pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 +sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint +HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { +H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt +sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub +/pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch +pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict +/pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} +if + +@fedspecial end +%%BeginFont: CMBX10 +%!PS-AdobeFont-1.1: CMBX10 1.00B +%%CreationDate: 1992 Feb 19 19:54:06 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-301 -250 1164 946}readonly def +/UniqueID 5000768 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 +7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 +77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 +2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 +FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F +DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 +7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 +9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 +CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D +6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 +E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E +8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E +3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 +EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 +0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 +4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF +1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 +757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E +0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 +6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED +E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B +61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 +92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C +EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F +43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 +FCD9A4F194FA648F9FC0971734BB69CB75348A88CC361FF06E984C86AF0EA429 +DAA5808CCE3583664AEFE0C59EDA04A147FB51227A5AB0C13942323E9B3733DD +3EE7DF7F774DE5D0D0980DA8C0192983F1E3EF18481EAF1EFEDA0068BCBDB28A +7FC7D9191EFFC574588DEC1E180341DC959F8EF56ED5B19F50AA82A4653649B7 +CDCA11A1FF27AFA7FF189A7E8A7C0E94AEEC901DDEB541604DEC0FE90FA0685A +FDEADEC90DFCF25D074ECABBEF0F518FF620E5DC46EEFB4EFF37B0A862754A46 +567F057C58A40714D712EA5A6F783D9A1C7AECD26458D64C2C203CBD059208D6 +F0AC8240A745488259475394331C07AE954D0E9CA3C467D52C6CE4D2A88834CE +A8080C90A3D588D03885566B2E3741E7102381706FAF2CF674AD2CF636B21F3A +4AFCA5BE7EF0EF0AFF8D3E86184D202DB2A604EF829AB3A8CE59C3435203B9B1 +DF6D4D9072461F746B195404E168882E7A8D19838D3B0D2E3FE7A0A34BEE528C +AAC354769FDED60D2579D19856BE19DDFCDEBABDD9819120AD8F1C30036A9650 +1525A1F34CF876D717F5BB665C5C28DB9369F7CF4AABA63E272C9C2E794C9A47 +907DD0D581FC2918B682FADA1E3A01E3196B921FF78C085F63A338201F0FB1F8 +BBBFE9606A51416D767D1F6F8B0638F5FBE8DA00619EAC1B3A7A4376135FB148 +F506D88E3259D9E4B6BC9F7C427969A05C4724F440CA075123BA15AA1280188F +9969CE4D13F0E26A3ED368659B937BE4A9DC752D7690056ABC5A22F60A668D5F +39C9BF9D2881DEA6255133A272E9E782C3DB39C2721920D20C636A3AAAEA3274 +474DD92A522C41BCC160FB1D79C130216C2D17C277A517A84CB49C6E7631B841 +CDB145AABA5A831F26C7FC9A8B19B3999A6697A845AF1FA486A2B36900589DDD +D56FEED8DB7CA8856A41A32B27AA81A345831F935A958CC2D7AA320A195B7AF1 +CCE46D69A9E54CE3315A4EA1B609F6C6C8F2636FB548CEBA7F1BEFDABC0A80B5 +695B5B5E96EF4904DB23B6D652E67D3145999D392516F22F6BD199FD55D10933 +4CFE595E725B35956A059EAF34A2C3A26B82630B5B4572E504B4F843F7EB000C +BD14DD5D5F5C097192DC61B521AA66724290030EF8C70AE1C5704D6A8F1EC61E +3F527BB0E6260943DFB1B2883387C75713423EABA1BA4C17D10D1A0C6A012990 +358F44DDF1E5C907D581D1064484FB77439F81E85C0185C573CC4F460A4041DC +738D8ED174889BC04EF654D148866E6B7B899AB09074BC0EA9EA18E8229CCF1B +3ADBB3D49F4C8D7D3C6855585C9A8D2AC5F3CA9CFE4C28F7A07AF0E575487EF5 +C3E300C93B8F8F5A263E4218C4A7304209FBF563E7AFC317F021CAF7E5BEDDB3 +B20DCA3070D31347A0CEFDA2007435CB5A407BCA937386F47755EB9DB0D003AB +9F82E7D0865AAAE900ABEE5B6E444E809E4B10C8302CDCFF8538EF680A7D8B96 +C2C0B6C1E20E33F540765DEFEECA4BE6A406E48F6325A82BCEF6BFF60AB28BE3 +DFE4C7DF111620E99613FA68BD62DF083F42E19E0FC1DAAD39CF5B39C9D15AEA +AAFFE14F11F4442F93DB1A44AA320506C916AAA01B573CDEC700B0EDB158F7AD +75C8EACB329FE17A40CD9B0ED657EEB701F895A8C973B34BBFB8BBC9ECEB00E6 +8D48D725AB630CA43581DE8C919CF17FD8E50E3CBFE786AA2DBDF2522E316232 +91072570B045C5FE4BF4B2DA252B4BCF571C4796C50EA6C1170937A35576DEA8 +3693721550547BEFCB7281B656F7ECECE01BE35972FDC0963533BE4E6218BF8D +74D6F164158DE6F9FDC890AB1F2DE46F05FC2F7201E9E3F8D7B6EED156D4D7D0 +76CA56CC27972B4BB5D844F0715A8F315DA1627C6E1EAAB6A2FC1B2539DF9F2D +32546FE8CE9E58AC4BFC530EB634249EC290F1BF1029E7EEC0F29D35E992A2E2 +ABE54B3B9A85CD0092AB16A27340E6236BA97A53B42F237F70934F64D3354C3F +AFABCD1A1D429435EFCA638135319725B4CCA3CB8AB5B1FDBFDDC58681FB1675 +6474875AA44B1C287F08C35CBD3193AF1C40AC9CB1325E3733695E41AED75418 +F89AB5418855F7F888900DA23D1F5E4C3AE5222C9DDB1F07D39C7AABE563A8E0 +E7CB906DEDF6527DC38DCF8B3C28D5B612583FE4D1AC51653D251A1613544A95 +E6555BEDFED94FC6ECD635731BD0C33CB9BC98FBDD794C47A756565018FB7CA6 +4CC29FA3B6D015062AEDDBD74BBE440729CAC222282C230466E1565ED16F80E3 +D245729F3908E82DAA12C738328F24911F4B37FC3B73922DAB646F504E864901 +7FC6D2F306654148AC50A566CF49A2D3C47F40D7E74A518C740D4E209C5EB594 +B1B5B0B132DA87EF82D88D1C8DC6F93F2B4BA854756FF6CA5E272F15C3793597 +CEA3A0B6B893B356E15A4C5F2A97D3390BE0C1EF2F342062BE3FA17447139089 +73BBD2AA76EE380481F3A918BC690D2B081CA89F36D8EC7049F1B5476FC1F122 +7C26F64E4A44B936479F77B1987D858F05238F53DA8D0665F81B154839A6667C +7F50972594E5A3537AFEA8E93B7AEFBD3AA596332A25176264B0128B10477EAB +E6EFB5C250C48DA04CA9E6B1392B45C8BABC0D4DCDC5873391C5B5886AE40200 +E84AF8CC19AC4D3F56343710F6244BB63555FD433354F5E9FBB671F2B94DAE4D +2BFCA17CF39E2AFC2F2C23B978480CF0EF866A87AD69B22CDA98845CFAA1F509 +3045C65036CBAD06C4AC62FA63B7CF4500BE98A7A282A38A0F47E4F8E97354B8 +838445943847E70998133269B6675B90F334D3712536EAE5500C35BC1B624DA7 +EA4F08EA931E52A71C3401728919CE45F7A0778B4A9090EB9C90441CEA964EB5 +6BBD611E254EA159DAD28F63280FE10B4310535DCEFB254F1BB5DC96E149D828 +012C009FDFAAC8DCB4FC6D05C32AAEF9CD62E09ECAC010DD118CDE2636F2EFD7 +E06EDCDBD1708F299D8E63708055A9EE406D4EB1AEE53BAC799179B5D3B7DFC5 +B277DCC04117624C1244DFB181106982F576085BB00769503880AEF390B15A57 +EA942861205FE331E06B5D3E5BC56B19F13022EF7C24339C17E82B02AAF4E4F8 +6C619F0C7685409AD850F947D10A6D3C0A1E87C18D08C301224AE2997FB20246 +BA24A2A2E2C9D71B5B4993E1465007707788BB549C1618D3DEA99298C7F56E32 +0C03731D75275DD56CB0EBFA2DC055CFFCEB0237DCBFFED8657C1D995DD165BF +3E4AC14C81EEF4843DF1BCA520DF14A45BF26681CBC21A291E0819BC5D279B58 +C82EA479A411633508B7B4EB002CCF7B6F37662F3B25C1568D54E0E1AA56CCBF +A54237C74D8822E011047738868095CC99A8C08AE6F36E854B4C5857ACC8811D +2FBB0E444340A61FEEEAABAF88AC68645829CB5B6947F1BC72009704E484211D +E40C7CCFFF4DBBDA8DED3E0F858AB20F85D52FC9E0DD0336B239C55C654B86EB +02E3259772F81F0C146F66E66C49E42108E6F7C5236DBA6FCC620C8CA0FD2CC5 +E989B406B7A0F96FA1FA8BF9B263D2448209497303D370A8361CF870EA8C91F7 +7E35FA41A7E2D6C26BE24C9341160B875A3042DEDC1F3D027880E2E74E2301A2 +6101EFA7B8EB1CAB4286B77F73BB93719A22BFD57609251A0247D80C117F05C4 +B3DC2CD2FC713704934BFFCBF0625882D0015F9B07A01AC68A7F30E59667667B +F47D5FF94350BE67698844E8EDEEA4E69F2BF44547AE459B53969F544D53461F +1AABD70D531C6A9E8013B24FF34C86381E123296119799D45C3F675BF67676CB +F0191994DDAC75F7EFDA7B1BDF952E5F6BFBEE4885C7675CC50B22CAEFE8BECD +0D286A72727B018861805E5D51DCF0E9076B3C66D35A22609E8A20861B33E429 +5AF85F6453BF23E9576104A27A1E7211696AFB0C7E542C10CE962C3FFC18DFE0 +49C737943D2484528F769C17ABFE7BAD92F5E3C323BECEF539666D575977715C +D247DEA25D4689518FB80173915421C8901F255389EBF48F190DEB4A1A915D18 +9B94FAE37AC86554CC2784AEB393C719424F1CEEB0366BBBD4C91D4578DC5C68 +787904465BE1DDB2FE3DD3897B25AA89FB4556C4C06053DDB60854A45EB4A6B4 +047460880237B773E044B6DA6970DE6B2EC776472E955FA85CEB99F30B97C210 +E685C30FAFE08A34DEA9517975148BA776C2FA66EAAAE6E85604D97ED64953C8 +402518CD8AACDDDEAC9DBE5BB343254E1C5509DC1BE406AECE5ABD1D79C75C6C +BC89953606E25AB6DF7A311B4A53EFCB7918467CAA0FCFC1DC02F28064F10FF9 +20816E0635F4D66D234F499C009A95E6A24FC623067010D7E6D5F959332248D6 +5FB884389007569CABD15D09330B9FC0E939B2684F3FD092B5CC2AD023A75028 +7D0E6DC5FC7969B3F809362B5201CF82DEA32154F76B4184F8D0857D97384480 +59DA5290E6BAB3446941F7C4ED741349B409E3A8181F398D8C227C1E62856AB1 +722982C7A8CE3406768796AFC50097EDA703ABD0A1E3A7D836D080A8E4E2EFBB +9F03B4935048AD73A5FE68E9EA63CFF232323F8DD229FB5DD7336BD33272834D +6B292F98DD362BD2B43E379AD0F5B8079720BCB8C23FE3E795858E00B02DCBF4 +244F917F6BD04BB9ADF003D2375B0DFC2C77D217BDBE4A16E28A83FFC98AE13F +6F62EC8B905089AD8869683858F95A8BDCC304F6E198A4D3ABC1080AF2DBDFEC +1630351D742E58A27C2159DE1FE572BCCF3A057C5CC0439DF3602F3CF53E7BAD +28CC355E117EA3F165E82DBB139170356DC8D19DD572725FD9D251E05B4397B1 +5D8275BD2F46F224B5E6A3098FF2F3CF23C03FE974AAB16DD591D324E13350C1 +783C47A54DDA92E41223339FD885E24741018301FB9401520DCA09BCA6D57681 +1075100804990EB6B4A75BAC2BA6F58D5CDCA604B7C7792771CA6D5C113557F9 +AD54BD1E2BF734152FBB6E4EFE43D596149EC4A3C0598F86453BFD65475C49CA +9BD8769474A33C127984D7B3AF8480B52025F816AA8A8FE7AD9BC8253BA36674 +F9F2F46F8737B93D65C838A7EDF6B054397E8B1CA665EF4D93098AD128CF8537 +B3E068BC55104759BE8097C9725430C220E53BB3F4A03DD9AAADAD7ACBE4FCD1 +F73C403B484BE8318D40CDDC1F978BA7FF55FBA5AB4AE07B783E4EF1F0F84D67 +B6BDF65B2C23F63F6A9F571E9D3A0693387820C4BC4E9164637A3023C65E34E3 +315A930B54D90388F98CBBE8DFD05EAFDFD47E943C21B5F8024D12129B5EEB45 +6B64E197B3B7E4454F699DF2E8FAF0B8187DA20C70F6F207C8C8F609667DE1D9 +5390477A6875526E28270D1E63EBCD6227A378CEA032064F960FE596AD9AB4B5 +A6BD2D9098B1D73A801D0A401A1F5D5BC7EC33F6851C123FA2A43C6F159DDBDD +B12EE2A4FEEB571EB1F2B48EF4540E01545AAB9915FF45B5E9589613BAC37E35 +D3DDE8DBDFD5D87AB7198A81C3EC6BB4CE6D67526BC5B34991ABACB004D91007 +B74B7EDD3E868FFA9FE4D2BF3565546E6CD60DF0F844E28D183844C314EB8876 +9DA8B658D84A8AEC8FC43694B3C7D05A5292C7DA7E1B90D8923A0EC0980516C4 +84A1892E106B206CFCD5C4C8290E784BEC3D79762E24A7F2B7782E12D1CCB888 +EAEE0064364BD688455979DE47F23B684BA02E52C1CFAD3A8A22C2039F8F12E1 +CCEF4D53E838496508080B6AAD0C613EEAA22A7A294E44297A51E21A259B4CBD +01742C691D898DFE48FEE0392E7FFF5257A513B9EB8ED4D235A7C4746C87060F +94F2CFECA76E02B52FDA8945763A1F52CC0BA2985B41B6E3CD8DCCF03393190A +51AE0B2E348C6D4F97223BE957E67BD06E2E49EF2B9419C660FBF341526A34C1 +3E3AF14FE76771DB8767C4035AF12A090D9703257AE61DDFC2653E650BD34981 +02FDDEFC30DD74805C2BC8D196366874956584F8CBA0364FF14BE992F355CB7A +50034FA335C1BD0A76CB970ABA59D7DA07C16DA3F6EA51E98BE5D6F9E5DB0567 +2A533B320B0A65CDD21FDE37840B43350EE2AB507DDFA2BD68EAF787D69C383B +7210BF5BEBF05343171CE9B153B41C7EAF71FC0BF1BCE71C6E22F8A81C7F93C9 +7DB6B26F6D6019BF0087A2EB2BF2A51482DEEAA3A4380FE757D6CC3E2B719262 +0C7B4720CD3E076ABFC7354F200576A1731790C9F606D69A1D5FD2329074F59A +D01807BB552B3B9504D4C0B0E26A795E9E4C25780E75F9E9F469526B338254AB +4134D831880AD275A751568D2DE6358015D8610D3B66496A18A5AE50E3FB64DF +C2CA5497B8D2EF10AA44BA1B16588047956FEFF9CE74C8CDC8C6875BC72D6C17 +F3651D9B306EDD63EDD338B52C37E8340C672642A734A39C0C96129508AD4C3F +5970A105F254B06BFE0763304DA0A88443C881863BDFA1F5D2E5096ED7880308 +444A90885B6A2D0FA03CEE8A85BE5468293B29676272545F8E050D0A30E3BACE +9897D0A91368351B6339A334E4ED8F8F352EBE25B73A9F1232185D249B2D6302 +589B45E644329D8C5BE422037D4F1103B5353B82C932FD2874FDB16F6021901D +784F16CD71CA13E719C6F1696F7BA894BAD4A972FC51F91A1321F9A5C9AD2C0D +BCB31BFE72290DD1F2E022BFD1D1C92885F22AC5AB324D08BD46776A9F8A014A +D5205973ACD5CAF6BD01B1306004896C023E52B63FE0B7AC56AF60556053ACC5 +AEA040B4CCEC0A174E1CFED070F106B0681C1FE79478BC97F7C94F3C4381C95E +247E52F7061CB8CF96CEE2905E7E817F5DE3D717CBD0D3C448B642BD15C4FB57 +69CEE7BA1F715EDA4DAA82F6CA4CD83B28DFFA7938B165BDD95C413F2906B41E +A19A484F7F22BE67629F3BE885FCBC7FF90A23ADE8008B0226ABDB5B9B48D7F0 +709A7A554B965144C062ECF96D3A12868165659F4FFB234D54B7E994347E6F3F +F1565E2D256CF1E44FDDB9FDB88F7D2F4FDB9407000994CCA0BD704134819A45 +3D5FAD56781BA05288EA00EDB0AA71F9DA9CC705A90FD0D234DF67AD25733197 +C9676053F4ADA54E008FA6677642FCEC4133C04B5A59A752181C4A53FC06A33C +43AF44FD99C613AB1F1738E59316768369ADD00620D443841DCC2DA5608B37ED +D3DD6D5FA974294646307DCE6CFD27C80C4E77752D7534C5270D68FD3C44ADC9 +1D41E388D22D8E08D07845F90BD29EA35A68EC73339E50AE8559DFE6231CBB4E +56410B8DC285F5B9A5B2FACC1212B254CDB8A98C96EB1013AB15D907C69EA85B +0A6969C0D8672D1C69612D7763DE13FB711C38FE116EAE3F6F9AD38AA2CF409A +F08DA21DF8F41BEC25DA86F17695B9E2C710B53E20382D067BE480114739A971 +49FC35393B7B02D3C07F478F389B5CAA66BA3B72835DF14B263466CF1969851F +FA3778A6B00A0E0C4676A29D3232ABBD7E281402137EF1D38E2434DD44721E4F +04BA87E268AAE96334AC95BC1ADB8AB36571B54088C6DEC51AC90C40475F5AC6 +B5BAC9DA8CB52E2B6810100F098E528BD24F04B0EBC5F5C8700E0C4F21093405 +389E8D9EF6073BC18799A6A75F2999C4DA0B514E830370A0BA830A45090E7C6B +13B2D9229EC8A15CB9101666F03172D175F39CAFA4583CC1F6BAD5CB3C1B9456 +4276507E9DFDE0C2DA8618AF4E7A4AD50A59754F21DD5006B38CE98F304BAC57 +7586558BF06E3DF8FBBEA0BA133CA0338CC261FA587CC82BFC4BEC64E6051B3C +58D42EB54D019D6BDA2CD7F5BE0177163EA3D174B390457B4DBED31E439DAD5E +FE801A103F0C081F1D6B194A3384BED5757FDEF166E18FCA03593407E34A2469 +AD04745D435822F0BEAE52A0DC0621F8AF598CFC2AB5BCD3B6B12CC05EFD38AF +F85150DE196D073F5EA81C070EC3412BFD14ECA9D4A21EC14CF3225A2B79E717 +E29B7E036D5BCFCCFDBBD2DFC83F07B64D1489DFD91005F99F1B8E7990C38AA6 +89656F91E5A0DC6F6F5DFA16B54CB16CD5918522FA4A7969DEC60D8C467FA6C6 +CC412521012F615CAA04FC42FF9B5EDBE96E6FBB2B4F9F0C61081C67DE180CC3 +A72093C4FEC91E6E03BCAAFE7F97BD164064D570D06F232E516A8A36324DBE6C +CCC32F95BAB18A974BE4 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC570317AAEA74A842CFD26F9591866F5A0 +9B4EAD7395F5196B36997F1D59E88165C94739E74C2B40820F8C972B175ED79D +87C9E323C3CDD5C2BEE6409017767534E19F45AFCE2C6687733451AD2E75D112 +42040BADFF90F5FCF3F5308FBF66505A3059072ABA7DB259E6A8B13044045E7B +AE33DD9B09E70C6896BD1B5061109910CED683C5DAD9CB4023FD7686F53F06A1 +2F949D09F68203A5ABF98C6EE1E579F4CE20970D7B1866C9624C726C5E8F081A +1387DD4A2B6E313B12BE585019D985BF4D772F63DFE677ED6DC3ECC5AEC2BDC9 +7522D9C6B68275107873C670138A759D61257CB2235A7BFA0BDDFA54D89BDEC1 +181B04F008B02EA011E7727FB18B65955E332B3702005FC7B93063A19A7CD746 +3A8FA175030D14DC5F6C1D7486E82B456A4351444B7255851767397A37782B74 +7C7B897F47B857A4AFD2F75D097BA3943EF92C22FF1565D6E37A0EBE0EC03F1E +B58D310C1F86537C1F4B7B5C44FDD25F5478F6574CD2CAEBE0F7CB2A4505CBF2 +5CF4E8AF2F7EFC472BC630140C3D4A4B2E9947BC443A2877FBF4A4DAA26C4671 +FA1B25363EC75DACC02E065A5F0F +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR7 +%!PS-AdobeFont-1.1: CMR7 1.0 +%%CreationDate: 1991 Aug 20 16:39:21 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-27 -250 1122 750}readonly def +/UniqueID 5000790 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D +E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8 +47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C +8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4 +78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486 +1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E +01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B +C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0 +F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30 +8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF +A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7 +455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2 +9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105 +EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B +52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97 +563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F +0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB +7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1 +0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4 +1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A4CD5C7347D2E +1D0D6630F446F3708FCB29A85F40B4DAB4D60AA8F5B2DBD67F2E45D80C7A7E86 +144669F75F8FA14609F8E4246FEC475ED262E03D30393C78C7828206842B565A +DBE20EA52EE9C4C3862B2F5F12CF89D935B89B84A45CEFCEAEE8EC8806339364 +56FF1FE2E5112803E3E40162D5188D2210A54816AA9960611721C23A292AE80A +8F8C0FB114D71C111700B0FEA8804F37C5D31ECD7006603C53F4BDF7208286AF +3A25CEE58E88BF81A4800B68C2A19EBDADF9B1074702E779A7DD915EFE09D35E +BD176D7346D859D0944520171C4E97696AE0502C43C391FCE5E8FB1789065E18 +BE3AF62200D57912360411CE848B4550D1B0A3BA576F9B41CED3A23E753631A7 +25375ABE8A4B55BC65AE2EAFAE452766961965093084D218637FB447795CC991 +EB1EF26BF82B7A81FA847ABD3B559D35828AD7DDC5FC7B43C6C14E6ADEDD7663 +F272AA9A121630C5263D58773BCB1437EC2FC54C4AF90E677A8E7D1738D003D4 +18998C03CC9AE182E7758767FEB5E1B03C6CC32AD30D0ABAE6552290771E2CB1 +A23F469A8447C1868C6DEC2C3C2BCFC691867E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSY7 +%!PS-AdobeFont-1.1: CMSY7 1.0 +%%CreationDate: 1991 Aug 15 07:21:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-15 -951 1252 782}readonly def +/UniqueID 5000817 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D251491EBF65A98C9FE2B1CF8D725A70281949 +8F4AFFE638BBA6B12386C7F32BA350D62EA218D5B24EE612C2C20F43CD3BFD0D +F02B185B692D7B27BEC7290EEFDCF92F95DDEB507068DE0B0B0351E3ECB8E443 +E611BE0A41A1F8C89C3BC16B352C3443AB6F665EAC5E0CC4229DECFC58E15765 +424C919C273E7FA240BE7B2E951AB789D127625BBCB7033E005050EB2E12B1C8 +E5F3AD1F44A71957AD2CC53D917BFD09235601155886EE36D0C3DD6E7AA2EF9C +C402C77FF1549E609A711FC3C211E64E8F263D60A57E9F2B47E3480B978AAF63 +868AEA25DA3D5413467B76D2F02F8097D2841EDA6677731A6ACFEC0BABF1016A +089B2D24F47B9D66B677886B90AA787AD865B5F78EE434AA47B7B0F1244A4215 +251FDCC670FD01A92226E2C667C2344298D001575BDF782D969D836ECA11E229 +C7A17E28F70F9B17273FF243452DA885068A8BCB5165534F3996CBD8D97307DB +593D606C197AFC259E691C242F6E1E651575B6852AAD54567905E6F542DCA109 +7F6DA24DC9112FBF7CE48B387953787B2BCB841873AED2DFA83339D39E14F4DD +3A51584527AC3A93630D121E2AE0C89D9C3F2FFA767743B1276BE1E648041010 +0FD510F1A8 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI7 +%!PS-AdobeFont-1.1: CMMI7 1.100 +%%CreationDate: 1996 Jul 23 07:53:53 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI7) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI7 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{0 -250 1171 750}readonly def +/UniqueID 5087382 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D77639DF1232A4D6233A9CAF69B151DFD33F +C0962EAC6E3EBFB8AD256A3C654EAAF9A50C51BC6FA90B61B60401C235AFAB7B +B078D20B4B8A6D7F0300CF694E6956FF9C29C84FCC5C9E8890AA56B1BC60E868 +DA8488AC4435E6B5CE34EA88E904D5C978514D7E476BF8971D419363125D4811 +4D886EDDDCDDA8A6B0FDA5CF0603EA9FA5D4393BEBB26E1AB11C2D74FFA6FEE3 +FAFBC6F05B801C1C3276B11080F5023902B56593F3F6B1F37997038F36B9E3AB +76C2E97E1F492D27A8E99F3E947A47166D0D0D063E4E6A9B535DC9F1BED129C5 +123775D5D68787A58C93009FD5DA55B19511B95168C83429BD2D878207C39770 +012318EA7AA39900C97B9D3859E3D0B04750B8390BF1F1BC29DC22BCAD50ECC6 +A3C633D0937A59E859E5185AF9F56704708D5F1C50F78F43DFAC43C4E7DC9413 +44CEFE43279AFD3C167C942889A352F2FF806C2FF8B3EB4908D50778AA58CFFC +4D1B14597A06A994ED8414BBE8B26E74D49F6CF54176B7297CDA112A69518050 +01337CBA5478EB984CDD22020DAED9CA8311C33FBCC84177F5CE870E709FC608 +D28B3A7208EFF72988C136142CE79B4E9C7B3FE588E9824ABC6F04D141E589B3 +914A73A42801305439862414F893D5B6C327A7EE2730DEDE6A1597B09C258F05 +261BC634F64C9F8477CD51634BA648FC70F659C90DC042C0D6B68CD1DF36D615 +24F362B85A58D65A8E6DFD583EF9A79A428F2390A0B5398EEB78F4B5A89D9AD2 +A517E0361749554ABD6547072398FFDD863E40501C316F28FDDF8B550FF8D663 +9843D0BEA42289F85BD844891DB42EC7C51229D33EE7E83B1290404C799B8E8C +889787CDC7AA8BEF7021B3C18A0A61A68CCEA80153A2EBF193130A4DD63DCAA5 +B689119E6593852F32596F0D45B483B7FC96075C6154039D2F9E83ADECA4FBDC +A0A5E10AE08F1EE1D881CE688E1201FF4C96C4EFB50C3C6540FB74553C1857E6 +39FC3DB7E2885F413ED1DA3E61BE83F148A857A81069DEAF0716F44E9695D347 +E548E8E69E98860CD08BE06BA44EA7C49C08C80A6B79755DB7A6B6056E888D4D +9B8E0534836287CBC842375D619772DC60905044272D1023ABA45F38738BDA5A +161F26492ED84D0DD7935E0C6760809AD184EB8F51591F236BD17A6FE75B2186 +A2CFF5D4D6513BBABBC298BC83B716D87261F2F175D73663B4B8CC160B6F60CB +FF027B46F06F0F127D4A4869E5366E469CC962AA6830AB9DDA82E0ECA267A776 +3F9329AFF02A816A321D9072E38A05A8D599E727AB5746DBB88D273F9F2CC3E0 +85C87C2CE892510715A4E5D5ECC81922A7AADE1E69D5A1BF21E69471777C925E +E4F141255D439828CE23B5EF89BA9BBED4F2EF632E2BA49AEF29461B7A0F9D30 +3970358FDD2F048AE153E97947056AB384260E13510582EF0445292113BAE7AE +C920324A3FAC8948F8E5453ADF1F48D9619A6B3D8811E6E5B7B550720330CBF7 +31B7EC28C5D52BD194818A78DAAA056986BA446D108B5A9B07ACB628CA2EDBDA +33106AB016FE432C5683FB5400CE6A517CEADA0658FB0713AEDE6186EE3E44C2 +E6E1EF363D3EFBA26EBC8DB48C7B0E89FF26D2EC628C60E9C9B20706F0126CBE +ADF85094568F7429296E392FC52EF482D3EA33DB207586546E00C88E5B352048 +D487755327503593BBD872785DDE1EBC47BBF7E0D51EF3B3C912A394F577EA6C +721A0C81F5B3DB66896CDD495E04E0C16F2DCCDECB904DAF5CC87AC8B04507C3 +E14821F48E1F56ACAA2846DB99882F2C6B8051BC3FDBB13F4838E0F1FF89F15B +6379204D817DD9BAE0141CCE4BB724C4DFA2187BC4C50E90CB17E6D3B07B41F7 +C2A0ECA729FE3D5BE522B30505D06BA64B99390D0555B79E59C41DABC6FBA969 +8AE84300DE70D7E9E2249256C00569BDF0F1125E523DA84B28D87F8FB7DD6942 +DF64CA9809AFB91EF1265D50F64B1A1F5B6630003900ABB4B4F05FB2C4DCAD +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +956017667589EE6908966A17DDDE40C2FA52A4C9DA871EB00FA63CF1B8CA7EC1 +54766CA4DA3A90C2527262A754335F7F361649073540AAF85B7995FB5D2F6E00 +62D0D0805D2D5682D5AFFBC041924368601B68FE333BAC8A58A7175A052BDEE4 +186944AA16B0BE190A6155AA7E3F754B87B7268BA7DE37BB9EC4F332F315EC61 +363F8A7653391C915F916CC8207B7A7B6A0B9157EB101A04D916B37D96B9D5DF +61CB0F996EED6AFBA20C95B94ABBC54A0F7E24A6AC9C18DA3D3AB34BEE51F245 +075210C06020BEAE8F8925F80D12AEEF4BEE38A60ECCC6DD8EBE8788FE16A8FD +CC4F03C4E328421C57DE91E6DE8EF3777B1AE502DB22053B909E36C625C6685E +4A3EC4C54DFDBCF63B1E244D060B8B0FFD20296EB0E9F459C161BCBEA03CD05D +74474323D74CF724CB2A2963CFF80DBA8EEB1406196B196F87DF6A218C0155AE +387EB279B83546CEB55F809C2705218C0DF08EDE7D392FC9981D0B63BE6F2722 +4CA93A9B206760DB784F5167D9023851E167D0146576A786F3F71D9EE878708E +EDC9AD3023FA77BB446DD6E533ECEE879D8DFF7CC7C069A843A068458BF453AF +0D4D12863F97B7463B4D57E175BC02EDE74AC7B2143D7DC2CBC3A67A1D0EB3AE +3C96A18FD26524116F250457E0E4DFEC040F258E36E8841F1773247CBD4F8770 +BBE96808920AAA1112E44682788A0A511AB014DDE59A251E67C8618C68C3FE88 +F5643D845A2B2515E4168CC848B679BF676B51982C2E3863940A1DAA2EDDB162 +27ECE62B925333B37DF910A3D55496468D75B5E411E4D524B63B383B23A6DEDE +D04E876E0B7E49B271ED5922450F299EBCDF78E0A612882B7E2D8F10A6EE3918 +04A30388586071A6136A505CEF407DCB2FD02CC6318D05D4E2D23832404D0C45 +AEAF54AE4C890355C7CBEAB4BAE57FDD1289C05A47469906AC7885082EF9684E +F64220D410FEF2B755FECF25B38D3DAB61F46557DFD2D131EBE932C1669C5C3C +663CD8DC07FA01E816C43A2E306DF5F0830F828F11CCAB3AB7146BA135BCA1BD +167927265DEA80480D7ED71B1E4F2D4D83570218841B19FE332C7734FFDF2AF3 +1E04F13752DCB49CEA4288BB39BD7FE26BB36AE639D216F37DBBFF28A2EF1309 +67BED6AE2C51620892D4D6BD33EDF5799B71E3EFF6258BE95BCE6141B0743AD8 +46FA27204B9D2995B1EC4D2F315092A3A9FF3E1EE4BA8FA94484C8B88875AF02 +808F5AE57AAFF59BDBEB04C7CD75B60E7F370DF2DBC2BCB2F1A7C7617E497E03 +1C603F59390725B1BB31EDEEEFF359B172A35FD8DEE868AC1CCC609CBD565B75 +D3D5A21746D588821D5B64CD8B4CFF439FB6992AF8C88F923C3E11FE34B81C66 +34E1E9FADB43F7B17686E652931A47E54697F9075A445A235693384465EFEBE7 +720D3D81A52E3BE6B3329107CFA616853E5A88350F4C45D47CA8FB9EAA3FB84F +9B5A5EB6FA0AE65AA571CF343C21E218447904FC34AB9BF9396428E9A2FBD92A +CE5D3FA9064E39DC7A012E03AA4A53DE5C8518C8027DE015DFAF58F1392FB9AE +BFEBB69158560785FE26C5706B52D1470025A26129D9B2EF7E3573559704F053 +18C70C05287A4067EC6AE9B3D53DC98FC901F252EBA57833DDCF07DB06312E4D +DBA19B3BA0A2DE342076B4ADAAEA8BE790CB0AA58B0351C1E1E2954119105C07 +C030F25A58589DD1359595C6AE90695956E8372360E274062DCB120819860875 +DB18F191F6F23034F0CF2F66B07BFC8BB77CB22CF9A560A4BFC48F511CB719F9 +ACE28E1E3D9F8F26E4AEEC054E0936C13F5165C2A51F59F0298C5FF280B38002 +01B4BF17079D599E28FCE29AD26F5995F16B3788152B034FDB00F0977962165C +6D3BB652AA49440CD13406C91ECCB48CE91A2F767DB46826347840866A55CF06 +2BA0AC876673FC28DC7C128A54D5D4948227E1961BDE532DDD2D42C2ED447EE2 +1E069BAE97B8DC7F9C50FF4EF472EEBD838A331661E14AD977374ABBFC265D7B +87B25C9F0D0B9263620591586424E8C00BB3AC276A7A8F9FB52647EA25F1860D +F9421E7C710B4377D301E545C88106C8125BDA7EF2E490346CE8BABFE4D0DE7E +A3C5E1E487C2A827D62671A91AA1D076FF36E8D02742706298352A27B3566DF9 +4A6642753F5BE301AAE708BBFF1E49E6EF62746EF32DFA28B1B4B7E24D249B52 +04E3D6533242BE959C6F82667117A66304F952DF207E025C31E18F2964F35378 +4652A2FA807874E7B45C5993FA6A700EF7455A1DDFD2EDFEDBEE6E181C138CD6 +0787C26396FA0091B0771BBCD65BD7E27A4036659DDD80C85B938577D8EBBD59 +CCE88C5B1A7B11EDEE9BA7A62A5EA39391948BB82D3A5E9AC8F3C482E8C01412 +3851FA889624DD0C547588C4CF4383CA77B89910205B3754714ECE684374F19F +BAFAE78F9BADE4CF36C547F2B37D39FC61289A6F84384EE9CC94C89F3B77EEF5 +422161E96C3EE43B715BFEA39F0960707222A00992821939F47DE593496D032E +26AAACFB6B654BB23134FA513B071F222B46899CCDE689B21DFE1E3564B3B723 +A3FECCB4DB42B36A732309ABBBFC4162F6B4BB4D04B2E79866092196BFDF42C2 +CB432A208B3617EFD785FEEB65B86E5F72B437546123322B4ACDAA813459EDE9 +AFA77402E821FB0CFE232DF99A78146CC98978D8587BB11C41A0CEAA33DC242D +F35E2E2F3158636C7AE07846C8B8F9F50EAD2B1CB295FE99470EDF5559839F58 +AD101C1291084E19C89A26F8B5AA57263202DDEFD234D20540686EDADA9BD723 +D486660A7AE16E1A81BFEEAE526A17B7912EEC6F91566BB5C323030365735FBF +3E1FA11D9F20C0227C8480CF861F617E90EB04457725A1E0346541E1472EBAFE +4DDF11B6DAF6694090D79B47EA8106E7E8445E5BBCEC43FACD971443A14C187A +B30CE1735052EFDDE8A23A8E1B4C9263C8CC11DA4D188F8FBFA46BD401D52BC0 +43E685B581E9E10C9EBA6CFD1F37EB1B4070860C44CE83D76B44ADA06F1A1941 +649BD12436ABE450F01D4CC88A0C93B76AA72819A0A73CFBE81A1BDD13357D81 +00015CCF79954998C377332EDD62B855C59DE9A3AC4184F4C6CE5FA52E7D8CCB +0B4614BE0008FCE23E592501E4FD0B01A7F2932BBD045FE05A18A2824CEC1094 +E1E5D882F0570F02E31192614C2FE5EBAD13C3E7F33B4D3EF46E88B3FA6CD2E5 +34A9C65CBE2EC576C01C3C7E7DC89BA1C0E8779CB9C5382740A27A3FE4B10D48 +41342DA0B4A2CEF1635E3CA52CF292A9E582F4C883929C460FF0E9B3ACCB7612 +B7415FC92E7E8797051A9CB5B46A3879627B49E907D80B50CA7C6ECC1FDCC5E3 +0F5FF5140D8F1469F7505D5C21A11D5643C2B945723AE5A1CD8BE23BE7566BF1 +3022E58B36339BD8B86500D9FF843EF43D0A512EB6CED1DD3F369B37573ABFCC +382DD5740E28DE595B6C5962BB7EBC54D0536D43AA5FE4AB01F04493DA480AC8 +0FFC3352A4D1E03E3FD76596234A31CD63BDAEFCEC5E04F953E293B162EBF2F8 +6F97E1C8F6C1FE372CCE00A951D16793E865F0D24BC3471EE64FFEDA4FD723A0 +9F25D39B69862327C82C21B786DC97E4DB8F7BFA4DC9387D6BCA442530A85675 +36C8EA5EC1472281CA6297C0A27E41AD936D48FB2E7FFC3B779721AA4532B84F +2959D2246DF54087D48432D7BCBB1FD1D57C90FE107D47EB6F83D2C13986D8D0 +302064C44333F759EEEE2757B16266E3A6B986552612384838E736ABB33492EE +0CED4ED94CDDDF630BEF143560CE7FFCE1D91CD5EFC89CEB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMITT10 +%!PS-AdobeFont-1.1: CMITT10 1.0 +%%CreationDate: 1991 Aug 18 17:48:50 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMITT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch true def +end readonly def +/FontName /CMITT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{11 -233 669 696}readonly def +/UniqueID 5000779 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D004D606918A40B8D7BFA821B73E118040992A4 +E1BF99740F8FAA47E4349853C8149C0F8BE2F23C6F332BC0373C867D0715E8FA +FF163A60AFD0FED665D5829739975C5DE12EB30895604D211F645D4E13330DB7 +64B6E35463C93B752F691FDDC44595B0A0E9E57C6F649809C4DBC7DB58102A60 +46349E9A5740893A1BD4536B99ECE72B147B713619037400669C07291022F84F +4F3302F8244D2F0F1380466E81E0B5E00AF33E021A55620A7A93F3BD49C7040A +67C096167F502EF2051B526405B9391B4340A3FFEC103E317E315A88D31661E1 +7E4104A2B925D1DDA9586861904FF6FFCE6A8E808385E4C4014F5A494874E2FB +C3758D6989AB68C4CEF82F92B9439794FC404A29D086ED6B27997735BC3A24F0 +473FFD74BAECF5282E2EBFCB92D69B81C568D394055E2E30A7E3F448796E4EB8 +019AC2E075377F777183BD87FDD194E855ABFA35AFA73304DBB181C267431B16 +70456FD8470B525011891C1E140B8FF24A474B89F1CEAAB509F91FCAF512E16D +8413BAC0C664FDCD31245C5996F4883305D3EDF1C8D1E6F0B1E79A06028BBDDF +6AA5B515DF33BA8FFF2394262F3FE1DF95AD661322BFA5179E325BD1B1EECE49 +69F64789FF1BE8DE5CD7485571A07471BD6CAB4891BAB122BE4C4A1B7176F33E +A1A434F745811B71EA8AF73407F32E9F4EAAE1C1FAA979523C18A24F754C307C +CE056DCB71B20292D4FBCBF9AB9E9B81DADAB90E60BE926315049E5BF0F50315 +66D82E4963CB556F19461F43EF80302912AC1168884A1692AC59BFBC431B14AC +A5FC06C4AB595F9DF66CE5EB69568038445A9EDDE20CF92BA308A239E220C108 +B441B0CD257914F4BB909D017F84BDE7803F8C274AA842E618CE08D3BAECE39F +8D5BED9E69EE27E42206AB6612C400E86CFF5A9899D03E387D88EB6D0902FA3A +5E40FDAB80A8DA0BAF3B1E4E6A55CC7616A2F58CC7991190E95CA9AE13360AFD +57973F2D1C9197CCE7C66F8188D5A26507F69C8AAB1502C52691A60513EF2A41 +7A525786856DD77E2823F7F3E69B61D3739432E5EBB73A78ACD89F62DB04052C +7ABA54E37A555A688C91CD1A02D5B7458283054BE7865B202A1504E0CB4E6098 +6F371F76139DE72A18E7FEBE5D1A8A2123C7405E3C93830CE5F1FE4140142463 +6C978D76B21FE9148C2BEF436DF915BD56A9C74702770D39F54AF1D8E45A0BDB +13DB80345E88474C1A6FA482AD20048FF67102467E7C43DA12FDC0C195ECAC80 +F2C9F26C8DDD16A634CBF0812755ED87C3377772F9CF4681CD9EFDEBE4C37CFB +A2A5E7FA9010CC4DC059BC1247F8517DC5183D3C640C4544A32E582BAEEADE53 +648325E71402972963C37CD98A907B0758B2EF76FE338314C7CDA7A76854C59A +CCA74828C487425E9D43D4C834F25A65FED230D3D40C1DB1FCAE8A83FA7C468E +7B179B86BEB6DCEB5FB68D425B03EF8A8E995AAF4CF2666A4B42A41CB91D2789 +94A0438DC096F0E04D73F57480B343D797E87F9BB277084FD9D14E47CF95EFB6 +81B2278AAF16343A11F9DD10C8D37E1D06637769F6327268AA338A7FD65BB3DD +921B4A78F29323DC8A1B2F9359468462AF6AE4FEEB6DE189DFCC2B05F31C52EB +336D9D0D805B1047EFF5CA3E10164A5487EE87110BC9CE5EE3A0B0B3B8E64D72 +80DF8899E1837D400E8EBF6EF10CC42A80ACB3A96199690F85683B81E9C69E00 +34BDDDCDC452A9DD8EA071C214775AFA850F5679A11C3DCB5218E2DD98AA271C +B3723481A55A6F23DD6A684AA209CDB6C5098F3969B2A9CA8A02EA88F6EEA4B8 +9A49D0FC9A9607AE7F6D75584B023BEF2D0A0EF42465FC68B8D181DED304F60B +C3E5917F75D62F5863372A97920FDB944538A4B6D8ABB9D890D9B1A2D72C54E3 +9FE960BCD048518874AD0DA55D2A364365069DEC50C30CA992B156213486DB7B +91B90FC2CA4C126BB826E12F8547C566310163E9BB557E2794727EA62D650D65 +13BFFFED3ADBC75152C351175DC2ECD0AF98ACA21E004F16D14C673E4B0B3448 +68C2170A727921188E9540E2BB42EC7CC025C5AB99DFEADF3E1C7F1CB4A032F2 +971E065692EC018310C8FB8FC1909120AC46782B0E95DB77245BA6679479BAD0 +6D83CB891C84ED38536A272E7BBD17004CB539F5F80ACCBF645762AA075B8D88 +0FEE93DF27B7C5E966BCA52CF3CCB81D879F9D284EA9F9A0D257018930C8B4D4 +3643F654E57BF2D6068F2A68395AF6BE27CCB5A4651A7E5B43399D148739F9C8 +EE3CA9AA2D7BC32443E7952B5DC5E500833BDD303ACE8794FF3011EC74A968CE +7273A103B06C95CAA3B03516ECA099F6F6E114AA988B70FD0DD795A595043E40 +8ACA143F9AD65C78794C62846F73666098D839B1F3CA40A892EE12B6B0B05D4F +E3DD0AB63B73514327F056C95D7E2464C1B068153E4C17B23391C8F98326A11A +DE2DFDF51C840ADA2517E85A9BB9E1E42C3876E6765D24819A6F5CB1870120E6 +42A1264B7739F4A462942148C8A59D5ABEBF06E2FB4906D51DDDC9DC10BD8FB2 +08E00641B3982B59B28574961EAC4A284C31F86AB611E8AFD84AC06B79AFBEA8 +123EE35722A2D4D2631DFA6494A8BF3F7D3F9414A728CD31F7EAA5AB910AA6D5 +F24BD226B8DDA3C9D06AE7EDDEC51465832A77F973B8A5A91DE426E44FE6F915 +03B15EB86D0920632816BEE499A2262C9F0BF79D5AC665323B519D409E1B446D +6D41544D16AE26FC325DD0C5431EF4A38499C679351F87E8D10DBAB49561B314 +ED3EBF05CA93949F3CC893A5AB49CF2FBAC82F7B675A3E4AC18F1D0D2A7098A7 +16D0DFBC98ED8F85493226FC9A79F4099556155FF0D1C4898B221071540890C7 +B476E09083274B816EED40BC50C992268A25B81A5E77BF1B3D680307D3B91686 +63E63093267413229455F25B6ED1B19BA481418CA8B752C1482B5064A65F55E1 +FDD4 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA +726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227 +CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B +7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7 +7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9 +EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6 +DAD30E2C57D77005F194AC881C702966F7A907846744065EC951369C37D1382C +520669C312E70913B46707EBC5FF89378A24C8710AE53CF7B820037A908ABDF0 +7F0397CD075EF9CD41082CCBF63E849C48835E1054DB1E8E3B5DF7016CCDA7C3 +6A31B58E9B9A55BE350F3FE91DEC2F77B043E463BA83AB1D578004557FCEB4B6 +5EF62046F385DC3613F378022133B24D6A28B495296D6F766EFD6B0F90599C01 +A82A5E230905B36A856C799E0EF935044927D0D57939ADB4852B22FDD7C6E7D2 +3DE0BD07AF3FBFA551A68A85624CD4262561683322148856A2F385A82CA990A3 +E4A81CBB9CEF042A5F11724F6C4DEA0CD938EFB1826378937B985755706C4E12 +E6F6E56B2389AE2A6357E03826EF386C56B8981C682AAE950282A4CD40C3B8DC +A13F57B7EC9BE8C9847479061F95C96F703D78D1DCE7350A147758612AA8F479 +2F2F5F04FDB35F190FD4284E722C05642446FB4083EE8BC29FAEE90982CA3FAA +70A26757AD09278BC7CD4399F08141D7B16D6BD448C4DFAF6FE95E002D8A3F28 +238886FF0456712BAE1316CD2108563C077F7B6542BB955B51614DC140C53DD4 +77A3690DA1249F31003C093533A0FBEB51EE57334655BDFFEE5B8DCBEA4E4804 +C07814F63D4815C610E18E8565EB59A5773D2633CFEC3F10809EE9E592C4F519 +E6C56610BB422D7A2ED72A737595855C4D0D3D3E50EEE7AD2965805E7D6536A1 +2B27974AF657EB9BB624C7A7D34C29F89C28469F25FA5B2AD61570B9809C8DDA +C352D8CCA595D80662C5517F1007DFCCCD4E9D867A7520BCBA4E6F1DAF770813 +DF21395C5ADF03B4B2E4978C1291565E82505946A8A1A3CE24B99DD5F1B63817 +2E6EF93222C61C371708B208F4522750FBD3612DC8EE240D68E5E03072C214A0 +BC53C99C3C872CDBA53087939ECA67072BEBC3A21F232AB8AA6E4F3845035BB0 +79C538EE56D7E1B34D5863A006FB50DFDBEA54B89088C72E6185242A5FEC0C47 +4E1C4FE12A82748DF51A8A73E1F5C1F824C1E9C1514B5ACDE961D828B0838838 +D84915D5C5D2A56C195D53E400DC891F93C7D1378CB421EAF1AE7CEAAEF12DDF +23A813CC33139ED942C21275F9CBC6FDD139D10C86F006CB7B869C9739EDB68A +E328F1D7823DEF0CC4F57530A6A014C9B62B56CEA7730C1E0D307C8501F38436 +08B30772623A1EDC5A3ED07C0CE839B5F68CCDC433375452AA391AE6CC448D6B +6282F6AF3CF5A28EBA2D03E91A067C0C3F87EDC628E34426D2DBA00E86BF4DAA +EF233A4FC5CC892016A8E18FEF14267755B3EC5AD047933D1ED727460786AD3B +3E382624A45FE5D12E8E937CFA857901A43E6A92EE507A5657BC77515CF4E96B +F18C3EB8D9EE369AB11C1AD6D39E048CB1DCAE868CADE3E57857B2226A8019FE +05C120D2752805C245BF4197ADAE07FA75C893868AA883DDC81401BAFE207F94 +62283872FB219B7A8B69A9B6F843B98FEFBE8F21D881FB73384D5EFEA8EE65AD +0A19C3C99808BC1BD4725E0C401BB62FF6B16C8312BBDA4CEC405E90E15B4E80 +D757337698F191D31DF8546E5D15B225599CFA630C64423DD2C0436E79377517 +BEE6A70DDB07EF2B094CE8F87724071FB1EAB4D95AF0CA8A70742F9B2ED032A3 +7A46B79DBAB1EC68F8DEFF2E80A6B6DCF04BDF19D35DA47DFC25C6D8EEFC7D11 +95A3D3AE6357EF72566D6E9F083649748871A5333AB7807B4BB79D1C7EFAC203 +CFA26E939370A939A63A01CAE2925E486CD7ADF568FEDE0D6CD6360D40EAB4D0 +87EA521C1ADE95A72C7D321729CCC3B79F33AE4366256F99FA0364F7067B1E15 +E0252C72E9E241F40EECF1CD93966A37FABEA009EA33C80A316CC1FD52EBB223 +29B8B57F11EC7F1ADF681ECCDF1D222E40E41DDE6A0C163893C265D72995316D +7B2E69D84494A69196BEFBA207896B2EC68A5F60EED832D7200350463126812F +B5F961037586A19D04A7F19D753C4EC267FE4882CC9DBDF44AA52E01524A1B60 +48FF228C0D55AFA2B9644F80F069242F2AF21F1994958D60E62C1FCC5D8A556E +36888E0395B2A99A8FB15E2AEB09F9AD85DA96A2702DCB69FB8E314F77B2B0BB +0A9F48747AAD3A6E188FAD71263F272592BFF9D9D6845F00B347D837CCA3B843 +B9CBC842940C0FDCA3CF0CF063662A2B54E9B3E69C9BC7A67714081F051E680E +126EB16E7F80E5C61C9925D9B5F25FEFCEE9E399FF655BE9B43D09EAECB0B748 +2372B2A7FCD9F54A5B89CDB1BDDC6C03A0866E6BDBAAC9E83DB832E94B9226D8 +632BBC8341FB404F9669E6699F156D02CFBE26B5110CE6F48C7537F3136D584C +6F540546F93C1E75A90F011C919EB2318CA6E6712EA341C5B6D790194D26AC33 +BF868739042697236F95E2CCAA2B496C58A5578A91DD01F4E41D817F36B954B0 +1FE9AA3F0B4C513A907F13ADC1D28D770224087B74B8BE1FB39EBA6C9AD7E429 +19DE41B950BE642CEFEFC50FBCC148F132D4534515AF1C1D9417DCA4D12ACD4D +A27AB4C5DC37C26D7E1F6591FDB32469943688B5DE824A48F4C92F7A029F40C1 +0CAB294FA8FDA6354116DAD3D86683ABC290E12B15BEC6E8CC30EEA63FA29F29 +759E17F56F85504C67DB97DFAA08601EDA4EEC89B17EE043EADCA6D2E52C8101 +E9ADDC22B72401C79F9FD459A0D842FDD93C7BFD40AB18347192F395972C4049 +51A9A5DEB100F70184AF68DC0AD5AB6BF2DB707F5B8A646A97523A6668E58476 +A65A903D094E9DC397DBAE9F28189BA38834F3C7870FC8200DCB0EF4F0BBF6DF +5891AF0ACDCF98AF6F2333A62000DD57A3CB7B5B632A54D61A5992FD4C9B67A6 +2810F1E8230349B781C0FA96BF24C1D8475C2F70B9A6DF0AFC0475A4469FD8F0 +F19151AC0201BF37E367827DF5956A599104E297ED3C8051464D44288911433D +CC9C73C2ACC5DD1935E2328AE61C619EB8B4D55F449074B0E5B6A765B7BDC992 +086C4F2002A76DE7144FD9AAA48A24C38749E6C656994A1C06F897C082226FE1 +06D8625E8FFC12F38543FEE52DF4C62F2FECD94512A8DAE9CD562EDF08716E3E +EE26803FF8B92FF6B27A57BF3BF41629290EBBC3D65D2E9C84480F863BECAE2C +25376E8BA9299383387F86FA61ED99FC31E7E19BB4970FF48B7434C474B83863 +CA48F7F5655D7C4D91A9BB7CCC4CDEB0C9693F195E41E14D4BB2672ADAA40AED +158A653E8E2D1C821BBEA0F098E205EDE18E1A705C054EF7B1B25ABCF62A556C +8DE6DB89B2FD1BA70F6FFAC1462AB5E23FD95E193BDEA3C2D516B4DF079F4F42 +687226F6388C79A6B3E25E69757D2F7505A43475F428CD3C1E8DFB4BCE7CEE7D +13904295C3C0B91257E20355FA5F3ADCFC35D01BFE609C9819F7F9AA299556BF +AEF513F6CDDBCF7C56971B1408C805784DD90A5C6E25BC65691D3A2541EF652D +34C3A151AAF879093AA4A6E2C7E01CA5315491D2717C33D0BB3D5819C033D1B3 +00EB477EAFE9F4FC4917883C852E4DA27417603968F54069B903A8083F20A975 +85FD8C632C3F3134FB0444F3A4E12DE87C7FE60E87A75663EF396DBA8925D41C +4A35ADE42218B62C28997F653AC8B42EFBEDD3B1C3807AB66214CFE2F15465EF +BF481CAC58269F20B592C45A228F4DAC3C16C5896CEA64EFB0ACA09D0C77111C +A00A64544D04AA5F701B2D9D8257739C468B87AAFC14D5585282BEE94A6FC403 +BD98BBD249117B7EABD7CC9B0BBFF3D13703EE2DDDB9D9771CD8A1E955982373 +7427C3DDC752A19B23FE8BB5F6EAEFB35C60579238B7998940BC65084B5CA362 +4F5F8C13D1F2E044A3BE5C3DE3398055898DA2F6D91140A415F1DFC3C4C7B486 +98BFACEC54A918504C1D27A750DE2C7F128018D91CCC583EDADC6B3880B3E89C +AC128504E8A5D450B47C6C43F7A98264EE13FAB026929B20843EAE793E82994D +AE65B3D67316D8239805D9CFA14AC80FDFD605DEC42348BCD827DB40BE9E447D +872690A562579E8A2CEFA2AEE3991D87A65EACB9AE0B4E826D3F2EAC3DC1053C +D665B723B94C87BDC853FA2905ED91D9922BA702FB268B11B2651F340E669170 +79A14C1F0B6B2811E43AD3A0E886C27F143011F5EA7C0B04CBA5552B81B71108 +F9E3DD19F503074EC7562ECD401C8A5BE45EAF99893647763E88D187E9D52279 +6BD918D034445D8187BC8A1985BB6B7841C3543589DF478704DD45EBBA151FFC +C5742BE144CB0B411021B45086F8E1F401572F0B883D7DCEB72E158F8D959540 +14951D2B5ED9A56655753F27F37F4E506601BC72E3D8175126719EE6617AA277 +7E6A17E914A83EBA0241F25BE6D72FBA06FCA103861A396DE9D5B62E94FEF28E +49884FC961D2F99DA863799589D04080FAD209DF2CE3E89784C764A6E518695E +62D97D10FBBB37EBDBAA54EC82D8E6691185B3E85AB1EFDA43E15ED7CD54BDD3 +6997164ECC2A7925E9A7EF7FAC979375B804C8383DC4BF7A9C3D3B8079A62B38 +8D6896170CDEFD30D963554257C27BE9903836A94A991F33EF30E0B7B6E2501A +C5209F9A5211585222A291DD79AF1595F5A693658EA6221736551FD1D94AE564 +9ED960F917FE8A8F0ED6D8B31642651659DFAE7314A63C8BA287BFA13EA794AE +C539BDEC6A96585EA26A136F3B563CBBA242DF695DC0A273ABF60AFE68AEFF89 +154542F6FE3F2C2B54E842708C7AD6F23609A58203D26FB9F0FB9669E474D242 +07876186DD126F9F631F68C7E2E8943D5C3C06097B7FA362A4813A32694251A6 +7B0D3FCF1DB38C54AB30B6064FAF2F4104F3355FEFA4D9D58AE7270CDC6958F6 +602ED003FDD8CAC1A34A8C7B348AD8C6145AD39887154E8C9912438AEAA5F9CD +EE47C5FFD442025CACA47BA21914DBE707D7EBCAB91E2D6C8ECB6239F93C878B +6DDDB5269D3D28A539D4EFFD4FD18984819305F93ABB8FA1132DED9D4594F85C +755EF3EE7D2C8C3F5BCAEFC19E8CC5314C801B8B4835C896C53F8CA7C577728B +7E492BEC8B7A2B33E52E5F42F0DB1A14AB711ECDAEFF878188B57E886ECC2BE1 +4A8F789B50900C0233B7907650628D0DAC99BC020FC064F7CFED72E02549D2DF +ED11A43EB7F2EB2728EEEA60362975AE645FAC489A0B11B18C67DABA794F695F +48EE269EA0AF3792654105036E2C433D0BD6F40FB3E1CA62B6A1094ECB51C704 +D7E959BE4CC92AA485BFBAE5C4C33CA742DE01C89604F6CAB46C9905582FCEB8 +F39CF97EC4A4B3731BFF86C91FFE8BCA46C30ED63FAC1254D761C871BCAD40E3 +6591B3FD75810706003893D4E02C39A6BAA900B2D21E89070F363462BFE9431D +E3787B935C6391AD97C4B918AB48C9F3017EC93B176E40254BE456750FCDEEED +C871D0DF853A58B4259483D3A79252DD7BCE76B4FB67E5976C21179908B182A1 +F5EA373D6F575FDFAFE46BA5A13D55A0B5526B384480A1C8696177D5D9F0F109 +AEB138664D5E9D81C2EBF3868683EA2BDE0F1BBC81EE5A086F3F97E9DB82F1E7 +444126C3F51E16B561F6FA861224067745C164BFCDF5C26B213E51EC1790004C +25987AECF6C5E23889BB4A71056FB29EC241886476FDB3D23A678118A6A956B2 +5E47FB052C79C3695AAB63F8E45BDD97AD57B62C0360BBE6BBC958E29E86623B +1B3BA1E686CE1E5CF27C5FD7504A4A755CD17FD2083D7BC591FD4B5DE815A995 +BD15C51CE51392968F60F4790690DEB870B01385DAF9F1D42A0FF4F0FECCA31E +E0524C7FACC1A97557E03EF0973111AF04E4A32A70D82D22F6E9E221FC58034E +30B7B283A822646D988E3BF22AA9FCCF8424A9C21B7ACC6184FEF76FAE207B51 +37C3176F923BE40856EDDBC53C7D88F8FCC7883A3EE393AB038511BB97B0CCBA +59C165FD755BF5BEE9416DF96C796AB7DBEC2B89B4E816EE1E0230E384356313 +BA18B20D2743BF1FF57244E3A173BDE6E60146E340053F63EEB32AD5BA990D60 +52D097C80A61E6ABBD8D3D95F4292FCAF6920D2F7EF1812D81165922397DFA52 +6BD40F44A4E7A4CEB9D421612F2A512094547C56A9570FD8231203202CA02662 +4226FF7DEA1758810A955BA8C1B53558A67F5DDC0D16CEE0F9FBEB8BA8867861 +2B179F5204AB1EA39F032A607360B80B6E4CCE6979E755EFB15CF339209F1175 +BAAD4505F602D193E618F497DA9924F11BABE792DF024532D81306EDAF35CE8A +387334F5F88F9BDD05D5CD1CFEEC76B943FAE980F29BA6A43FE1F14976DD8A4E +0B1037B12D7822EB863C804DEAB78BC9DCDA7A3FE6B4D5262629289BE9427272 +5F6709EECE18D55487857F222FE98FA1742F393FAC2EEA8E5D175327DFD6A152 +73945499D0B9C573AC4C9EB56FA303C5E1DDD9B7BFEB38A89BF9B7F6C7BD13F4 +9DFA2F3F5CE16400621ADE841E7C687605844A837F31F8977F90D754223072E9 +276DB412E1238D09C30A21EDA6421C87132B323FB743E06E4B80C6DA838AA90F +AB962E4EC7F2186421A39F7939094180A1B2C58E6F4A6DEC96E208C77CA8E21F +C16AA3DA387C2A6770560589B41E989ADAE601223D809186E41647C4D05329D9 +35310773D0FA37940A8185B48B77715A1979C8C60406A9937B86AACC2AB0B81B +E76E744159A1FFDEBB197A6061A46B7A7D88E2EFCDD048B3ECF8BB523D77CD81 +135EDC9694A9D542445B1969C4880A26DB5A47D305844CE534EAAFAD06E3FD0C +CFED0DEC3F890E44BB54B45D24E7669EEDD8646FEBD5E9652371C7C11F79FCDF +71A54BDC95572FD53B1F2D5DC1B0DD5FA39C45D3EF147B775DAEF3F8CCB42ECA +B0C493EC4A9C5916D821934C3179D3A474F7D462D23345033E95E74378CFCAA0 +5FA36A89423A82311202D1D62D1510825EDBF75B5D104A8CB200FE2A75AE0F2E +5093E60CB5D3FAE4C1FE11063407F1B3B68DE97670954A4F67BCFAB8C0D78187 +EFA92C6E32CEA973B2ABDD850E1BEBF8198F9EC261118AB750E246289B1B1C12 +AD4B569D189B740546F08011C98A071DEF88C5824D9AA172449C60500584306F +EE3E022F1B33151AE0C478AC5422423B185845010271772A014F008BE16E4298 +AA081E8C035D4F873B44C70B4F8892ED33EDAEE02A9C4CFFAC863FA97A531BEF +081896119050B16ADF7F42845553B59F4ECC6CAC54440F225C0079355DB34CA9 +7FADEA182156CEB95D9D313F5838FE0302DAA99927713F093D3F7436D73AB8AC +C5F724DB91134FC6E592DB7D40EF34B79DC6A816F24D29741118EAD03F128522 +C6B935F82417AA2D6F379E1A98868AFCF131DC3E2BD60B75820C55BE512580D7 +1A8DAE974C4CCBA81553CF6CF50F0682FF99C2986502E8681F9886FDF2278479 +8A619B611F25FC6CFD7EB4F316DDB9225D48B5F008FBA4E3B8EF24383A582432 +A9E06C3F8551B0A9DE2B7762BDDDB155C4514BC63BD1FB79DD66DA7A92A6429C +FA2C5C655E7DFC118A2E75409ADF5905FE9A7D63E3F8DF55FF79CCB5662F0EC9 +5768A7B494DAF0130280AA391574FC22EED219390A3152834F30926A3B999948 +5922C948B3B2E9543187066CDCF501499F4932824BBC558032BDDF75222422E8 +BF934556DAEC2ABBC1D3A96CA94B22281DE3E6460F8DD232867F080F1E2411BC +B161B6A75ABB10D5DB5A8F0684130BB138F284F5F2CB8BF0CB787629ED82DB73 +A4C6FEA7AE98E0F66E29213A97FA0C64C0C93D37D6C3541BC4232D9FC3632B3F +F77D5CDF00337F6346DFCED172E9F829BEC006425EF1BA94574352B4834DE290 +7F9E6DA02FBEC99496B1D7AE4D2D19D9D981E5A8E19AC2F76A78390EAAF05057 +0D976F6DBCF41064C3B9C55468FBF8B31468F4BEA052B1DB3096F69C653D332C +39DD4E00BD11B2A57E44DFD0CD738589B9F11ACC02DB375BA1521017BECD00C2 +60B8F5F54B21DD50853BB3BF3A31DC75C73C5A23FE71CAFF6EB5A1C063C2C252 +F9CA93E2AE6377DC57A486A3E3170E91971DE32F8C634942EBC3AB01E26ADDEB +4329BF747D9270FA94C85755A6854333AD24466CF9017962CB10BD6D105B6D22 +4DB5C394490146FE2C52590EE14EE1AAA0BB9D74AC2DC054A7417B78A0FD57EE +00182960E634FF6BFE810E8290F282B3AC10CE29E2CBD526E0B2840575771931 +0D605444E5E11886B4E2025865E335033E1D6629AC3A5C85784989BF5BEC6B53 +56430CDF1FE72436D5897CBA116B8FE40C92DC3A21AE66E81FDABD5D4BB1EDC7 +3EC0479DDE68049EF83B543989928C85E979D6A45CFE54FE2437F92658138FE8 +0AB5A774B6184868ABC0CE8CEC581E4E135B08DCDA613BAA78D2F0460AC30DB5 +E5A8FFEED0E42950FE33C85D39BF2016C4C93DE5862D714733A2C126BC897F68 +8AA5049D76F27E0EEF50B42BC47BD58A2AEAAC26FE8F40AC489B01CBD252E19C +56F51E326C08AA037ABC561AB27D45683F9355C77DCC84DF90672C6963804EBA +7F66055D6F813C4AC44FE0FF1049FB7FFC511E59869D22C4160CDAB04E30F0E7 +135D3C624791A24B4E91C506A1F1A7208EDD7E21EF5F00CDCD0087AD78B7A55E +16A2CC14899059CC5719AD2D781E53D365021A5E5B302CE1A5FC90CB16F6CD37 +C2694856325462F541ACF2C369A8283C85A67DF4DC775F81253FE6FBE1F0F6CF +EF8A1EAB8D10490F7DA590C44EB9CD01CBFB8C23F382A27A297E5FFC492E7E12 +E4519DADAF58572CE6B3F881D0BA8C81115CE25B7F34DFB7EFECA478C58BDFAB +66A972AC5FEF735634EAF2B076C765CF549CC235C02181292307642A3F07D125 +90EE544C1CF87E610A26390F50F9F858708079837C045040C60607B66DCA4BBC +2AC881C3BE244C66B41B9CDC71F7E98E81CD28DE887E38668EEAC4DB6E066EDC +E28BB1519F029983B80F309A21A8481BE42D79263EF71D9E11E512CC8B606D64 +5CB3BD0094ED9F66C2E0C3A5FA94E37F7FD3F5742FC1A8984B63E7ED6A1963BB +2B3904EAC93055A6EB66A43B7FEBCBCC5C8C7E449D40FDDDB935DC6D37B0C446 +4726FBED31F0B78062639F1968D701265DC61105E2B7D12D59FB1F4DC14D9857 +716A080D2BBA517A65F213107FA2B72E56460663A01E33E0493CCA43B927A9A9 +ABA4D6C3767E25BB7B92552B56FB4199E2668AC6D6848C233F4A749D0ABC3E14 +CC3109F0709EBCCFFDC61F69CF028761B1F2944ED82DED13A20FD23A97A42DA5 +97FC3BD1EE19ADB3CB803FD6B57703ACB6B08F9B238DA7FE7E3A89BB18F004D9 +D8736B65E9E9ACC00DC07AE5399EDFCCF1BC166BB877B60F2A88AAEA69D00907 +447312168BF7BE64D50957EACAD6F655D80BF5C0F489D0720F91C083475FA815 +245DFC142C234035A8F4C44566040E323EAEE31A283B953C51AA4CAE024486B8 +2907E5456F36ACE1E6519AEF73C094EFFF9CFCA969D1D6C682188B6DD5750D53 +7C0AF155149F978BD627DEE143EAB28A1E882BA2C53968765CA315981D8B65C2 +FAABCA9A3D7370AB11B4FF995C6D84B6286C7D6FAC7DB3FD296322BE3163E6F0 +CD7F466AF7A32DEAC1ED71C8870C614EC36D05887742B373646FE6C56D7BB575 +8CC6C5BF1297EC91FFA543DBB4BCB6D0A01DD2F249FB3B5E554AEDC28A092015 +82BA4E0EF563843D527A918A0872E981FAF30D5FB29C948BCF6DDB8EC8DE4961 +82190DCBCABBB867A12F7C7E0112429A36DFDEB656F261684F81310D7B32827A +50F995E86FFA51E4BAFEA27685B37D4D5749A7049DB00F3317D5A8DA32BD0E21 +FF816ECF0E59C9A5A3A40CD149397AB4F41AA2FF7E1BBADE676C91C00AC7CF56 +AE526C4194B534C9FB943D29BE07602FB66998FB321BC940721933CB0C81E041 +F842AE2A595183C54A52ED6DBC58E369DFFE052794A8BBDD888FEEF0720DD4FD +B9B2E3043981D5438A0341C1A097CF58C19896DE5A7143866ABC4534DE598D07 +37DD09A7EEFA52CB468973F66C9B0CDD709CA493888A795A20D5FBEA1C7CBEA3 +70EDDD3483A99BF747ADE5470CCB656E204EB82FA85B0B745A15AAEBA8362FE9 +16EAD034CECC6FFE0AC86EACB48429E3D1E497747114183077A6D256075ACB4C +2AEA605D86388F0E208F82F152D2AEE75ECA87D6FC3544144155CAB79C1A9A08 +5FD0189094217AD4E2973B3FDAB6DE3095E410EE08D9A8DFA9CFFC45EF2D3041 +1A903DAECBF3A8B3752B47B06AC006F25111E63DAE7A42541273A4EA772ACF8F +F1426CFCD25AA1581F15AFC1CFA4FF019308FB762E8568DF012C97A3AF6E0AA0 +558EB834A2A1572D5665B03DDFC868CCA96FCDFAF777AC5DCB55230FD814DCB9 +0DAE562BA54FD01DFF2546DF6E59E2776DB6C8062AF45ED56A99B34F2794C38A +2FB1E2D36BDBCFCAF50CA5F3BB2E5FAD1A31C7E71A5D97F2654685A366A2C6B5 +A90962D9142F7FA2FEE24D95E2F4E087FB20D742861602CB5547313B9F069FF3 +AE759E2D0959A4EEBFE3247D3AFD04C1F83ADFFAD2DEC7E4170905E372943A9D +4469649FA534286F97FAD71C1104C2F495B930F832EAC70749A3889F8F1308EE +2481226A3E653BECB5B98FC16216213319C3C055E7B1CC8AE431CF0C057A1A8E +BB0B1548F656E9AD865D498C6F2DE40D1DE76A2637319AE8172657AD66DEDAEB +F676935E02BC50B9DF89DE3462A9E459E9AB9BA1B1D95774732DE0383FB98DF7 +0ED926BA8FD29A8160CEFCD4E71E995870E92A697871D8A4C90EC95E83560552 +110C29D27FF31EFC3D974B551DEEEAB636A27EEBE2BABB3BB114E634FC187FDC +5DA79F0DAF13671EEC47988D183CD9A26DF8769782CA381829A7C1335D6FC351 +09AC1847D557D2E76A82B37AC35FEC78F2B686D927FA8C57AB65102C3D90DE53 +9D0FC34551B57AA9C48B08ABC163B10521D27F521C327DDA55F3D217977FB3AC +CE31FA86926DE4A80DA81FA56F781720C69A292FB91A146809A3774EA1DAA017 +B0183AEF8D77B39B1B44957B45B349412B45EFA0490047C7BB16CE5F3F5D0842 +C653875A8DDB1D2EDA87CF21FA5A4C35A5E6D798410FBE27512CAFB088BA2A05 +C730577067423D8D4FD5DBF9A602240986D1E671D6C850AF80DC5ED176675550 +51863FBA4A3F7650CFF664C2DCD7599C7C5A56D7F3EC3163F85C9F0CF0A2145C +13106D9AC46BAE3373A57E8BEEEC295C079B86CF3B2F49D8A66CF010D21769BA +6D964A102F8137520C9DF44079FBD7E76D46CE89063C1D059A41984CC1579D39 +98CC85EE377FD1B98E7EF1FB80CC550775A61D50747F317E6972545875718B4E +E52E2D97C78A25E51ABB805140A06E54F7394E1EB36D74E2D8D188ACB9DEAA85 +E378751110EA72E3FD9E274553E785B6D682B5896EB9A83B119454B8EB50D0B2 +93BCB05CD705ADCB582314856F5DB6D6EEB14B1117CC953534072E660613C1EF +46177DAA0DFA5B1FC1B9F573EC47C7C54D4299185DFEA011101DCE52E586E84E +7F549DF9270F34E45CA060CB1F40BA4470C301CD2B5B69411035CCA381BC8E30 +2424D4F5986058AAD4FFF859AD373DCD68CB4E4907B8B217C9C1C716CA7118E3 +AD469A222DD94F9A19D25D0C0E1D3AA9B24FAD74A85B304DDCF02516BAAD26C0 +AA4150AB1E5699AE1FE63AAF5E2B7D210099063C3ADCE495E700A25613A61B90 +1482DBB37A89EFBBA315F95B722F5876867414B368CFC29D02A83160ECAAD622 +B849FD04232FD2F1DEAA35BC1BE29FFC261731AE5A07C17A50437103D67BD88B +AFBC1C9DDD8E7516643C76F34ACC082D5E999CCC1CC5912BBAD01E736D8ED1D8 +2AC09479D305A9705875942426286CB7D10A305802545ACA124F96BC16C08B52 +CC74F480324F98652CBF1B5313FB68749C791ACEE702A983585978000FCF8624 +3008EE3BF8C090577CA778D1859E4C8D997E1E74FDFEBACE0BE53353E8FC5B26 +E76987DC5859B689A84B27952CFE665EC295CD5ED4D2352DFADEE1869B946967 +D30E6C142BA6830AC5179413CACF57BE0A74628151F028A58DD9769A02F1A785 +70BB5886D59E518902EF8175655CED531414F7B4BD4CC875EF4F51D64988B67F +A2A44C60187D6D7F61EB187E1315D94FFB06851E43D02E708BDA0F9206CD4D6B +BE2C38F72EAD5B8D5CFA5966616997DAC60B9429ED2CC832B900DDD150F6700D +DB923D55C0C82B7BC25D7604718F70223FFA2998C449F2B647CD3CE61978799B +1C9D1C6DFD60355F97BB11662652A26378E8E811927A7C3C8DB61AA1633A1CF7 +1F71204F661EE80022DAE06EA76393774A026B9B716023F8336E32347AA8EF91 +56F34F01C212D23502782DC1F3B4C4EC088AA25BCABD03C53F065DEEE6344E0E +CC9FABCA09069ECD310E730C8E12575854B311BD057B561101901EE66760595C +511E9F1929373B31829D7D38F9A93A05D461D09760E69AD0F182359E5287E8EC +EE690731B95E89E46C0E6055D3CB2A2F48243507BC673371CDD6E3C8AFAFEE80 +10C8492A55B515E7F753880156886B544D17FBDE655009A000022DC699A4E18C +162DFB0A3F8E44F6ECAF31BC2E766E7B598B4B3D5E9ECE9AD304700635009144 +94C3F3059F3E1DA6A849CBE49A5602A49F94AE4012A783F8E7CBF6D710B641E7 +A71EE26C8557AD5511D8BC1072CA1DCCCEAF459619F8AB434AEC4597C7D1CFB7 +3058BE49F4465F5BD1124B8E3933BE09BA989CA4993A59C30A16DB3C2B5780BA +A4BF543D07D9E6AE773C26675C0AD961317E350CA11B5DE9AFB8E409BE5D2C8F +AE5DC9F0FD473DFC18CC981A13FCA64B31B94EBCE6BE55D67539E421B60BB909 +1E8C1EE99485E083072980C851692A371C4FDFE197A607A2D6B1257295391844 +7F280F51DF6FADFE0AC539AAA83D69576B6925887EFF6FFC6C9073A9A4362F56 +5E3719F2A83951E47D92ECE8033DCAB213FC6A71857D97B0840E197B24B1942F +29B658148DFD48142639C7729BFCA54A1A4B4368DEB39666AC5F1AAA817D91FC +B8C833B96F43DA6A19F2D5D99B7BA2AAABCD8D603D5D68616546722A49152D49 +EF845383FB1DD94619EE7A317AB9606D97B9EC7F5ACE623D96EDBF4342D307E1 +20F0CE63DA347393D7B951CBC6031C1D3CE5ADB2949C59E6CACD6279CCD1A159 +5866C15BCDB938975C2C7E668C134BA27855E751DA88F5C75434DC8099D3E45B +60C362C8FEE346C9D52EE2769D9AFD4CE1E995E6D9F5963272ADFE2671E889E6 +6936064E4EE7137394AAAE8291B439CF103272A0BF86B7AB26EDA3C7F1E68174 +E3B57D3E8CE59E14C19211F64AB7C4A00BAAB61EA42F62E9EF2A1F8D168E48A5 +353B5CFF6FC094088C98713465CC80BB851127694EEDADE92F177312634ADF44 +49EAD077CF3AFE8CB8482349F36EB21B8838ABAC32B188C2F13134A2AF2C95F7 +A543C1CAC0F0B5838599DB0BC7BD5A9F228C826276B1B8C856C9F22ACA3CB106 +18B32EDFA8CBD6F93C65C06B0A61B71E1E474C61AA8CD81BD7195F83F44A2AD9 +5D52A4CDB18B182E5014F4D7896010CE646D86C3E52192D1AF62090AA8269816 +25A2FB6A5339EF866FB41DB10B8B2AE4FC6E1A48F451ADE111EF12D2A66EEE14 +C6B57342010187A6DDBD3BB7886D7401CC35EDCFCCC70B182C139CF9D651230F +69BB0B0F72ECAF1EEDE049A3E0F7574599432E8783DA487626E7FEC1945DA40D +1B81B37FA156C775E5519B7C20F175A5DABEED9625C2E6E72349B3C0E0FF2C72 +580369B5645681913AB96AE7F9FC1E1B4C3B6BE5263748F695D5EDE23D50863D +E6E602FE35FD8993EFF84EF58BFEC5BC10091C6C066C1BE307238EA2CB8B63D5 +F118FAA5ACE68CF79A17F5B56FE680B92B0B6B9FA04BBCC6FA928C08BB133E60 +4D51841DA848B5D7F69BD8C74F8325B47639DF0E7D77E979D965F6B4CE427891 +6EB149014BF3CB0ABD97C460AEC4B276D1746B62B8A89F61DE16AE3AF012B1D9 +E3C7FBDD5E4451AC3FEC65D92237B3A021CC2B23A110FA0A4669956D3830D108 +9A9CEA3DCA631317C78EE14A0022764E2D5F6CA8DDE0B381415F17979E89CCB6 +8AE4A108FE6924887EA9EFC55408D8B02365156A600162A581DDE5F720254D61 +B981FEB4D667766A030711BE460CC363DB70F6ED932F0C34D72830B7D64CAE5C +77AAF0414D987CEF5ED01C99EB65DCDFDC92CEBB4E0C6E0222E094D910CBC840 +4F2DE1790BC0CFA04C886631EFEEBA9A84B5B7404D9FEE4BF32E3D996031758D +0CA4338D57E7B99A39CA5221FDF114BDD260ED80BBCAD7CD4A763886BE665092 +E5C3835868CA5EC825A56B684CBC5AAF074E19F530CC5B1322A132ACD13F008D +AAAE26C52EC3C36E74AEE0208C7B6E1D06720AA4BE6B0D15A740E0AFB8F6BD93 +10D7002F64976BB7DA14E790B4B9C32135FC22BF0CC052C95B1B657DD2C1BB0E +14D5323870AC1492E6D7F9E0E792C06442D613B3FFD8908C638A30158C5023C4 +BDF26E9FAD6B0C891544D5B41B322CF83C811F0F7E3D857C1C955F7D43BB8CFF +3AAF42D071321AA362364957F80A493255684DD5CFD0A24C8FF7BE567E8C984A +EBB31BDD60EB4699E0BA029FFB4A0B324A6C283FB626C53112E6950A60E0B5CB +039BAD4EB23B52289717A17FB5BB62578BD5942456EB8ADBB128EABD8B0E7368 +3498E8AE1650762DE105FC7C9EA3CB4CFD9E4C24C9FF7A6F458E5B3A609A1428 +1E6B2706930D08434E4B4D52B00489C3AB4A9DAEE69D5C7D99E6614EC894D72E +91A333C5C7ACF0FBAEE0087EE7AAEDAAABF3CD8711BDEC5AA7E412E346CBE3A1 +897FF1B8C4BF513C62311D74347DD90AD7AE7C34CA7FEBF2E7A938E1C9B01713 +A29C12C6FF9E2CF4EA58F1146729B14730CB82A9A2FE62D139ECCDD2EDC1BC0A +DD61311FA876042A8E0965E289FA9CA760CBC0F205A189E77C770CFDD43D2875 +4F88945499ED7AFF05F83C5611C95F1C4ABDC2996BB085BA4F1FBEB1209E5A06 +2F489222B06D929E366180A98771ED40CC947CD39B6FF24E7EF6F0DE3B06C50B +19D01F235C2F89C4481C52EA09CF2BF724D398F1ACC037F3C8112A3F174AF508 +BF17344732D519D71B9729D0B0712C09250BFFF7A5221C4760673711398E7B51 +CBB2F1A3DF2EA083DDFE1D53A19F9674A28103E8EF156D130F72357DD020AD03 +779D685D473A005C2A6C858B54D4E50C509C190EE5CFE9B1E2EA3EE7BB6FADCC +282AD33F0D5C9BB80D378EB07799AC745979E77FB4EB9A50D4C23C5C6E3FDB1C +A2CDBB9F8B25E6D3AB941FC52404D93680C9F2F617E1BA8F6F2AA35BB0DB589E +9E114B397EE125E8312778195CE5FD2C9A0A4D4EF0DE2B7902B6AC2BD3C879CC +818C521B73E7CA1C8F5A57517EF1DD6D21C97DB04BEE6642247CC26FCAEC1E75 +009055915E85B00847C353B7A7ED0E1A2145D7E605F43198254CE938FF439E90 +7A528E54472754E7D1DEB5F1673EC25C0A90FA3934AAB835731FA78741B85C07 +E7FABD8CD7349B22338201B53CBE54415C9599C1C2920E7AE8264ECF44F2AAC9 +911355ADFBFB77C5EAF67A614FCC13C5B1D11E82C008BB8B494CBB7972900417 +40C2D6A2939E998564499097440CB9AFBE2FB0486295E4BC71931BD140FB2693 +D55A0F50F900C3E47289CCB97024D39307522CEB03391A22AEB93810AF0324BF +C1D883067ECAE7B856C1F987DBD72A71B6B495FFC0492DDD8FD64B87740E91A4 +0E237B49EBE041D13CA86A2555F00131475C565A9B203C1C55213B91DFECA2D8 +025D9556F80FCF1537E04DF26D1A81DA71559CD5F37B6ADDE61BCA730A991892 +80475D99B2B8D418314184DC368201CA65A95396CFAD656361E5A8BC6EF6C2D0 +EB4F205F44F31191B1FBC88F892018DA6E28E3BF5250640BAA6AB33B31169567 +713093A4ED0AADD10AF8C92EE1A5A3B9005527FB757A79DC2E2FEE06FB92E04D +B057171674D60778EACAC0C9BD8F7E253AAA9B3BCB173166DA149D8CB8819B7C +2FC3262BEA6029B5FC0CAFDD8107785EFF6E72BDE892E2A744936D37FE7B9978 +4C4236B618312B60FB490B6CC1EF67CE437361C72551C042A7894E513ACBD9E0 +BFE5F7161A3A8419659045B5CBDB9F23803C452ABB56D5676FD00D4B1CBF0405 +4C53DDC3B3BECD56A3F2603D04FB72B74E921C72265B6DD70B36DA79BEA00C54 +E522C1CE6E0ABE134E28AE42C57520EBCA1B29B67FAF678A66655677EB8D06CB +B0663F2E0181CA668BC133D5257F09ECEB92901FAAFB8F4B88108C7126051BFD +A5FC151BF3DA481E4DADA710A0BBEFA8D8C8E1E0DA3DE98CA4B1B0088E8CAC4E +5D6F3AA05D2228C62FF0DF3003FF97E0D936B39E0972CC543AC6DC00A23F4993 +AE844C6477EC1CD8C581B44535B5730F761F16E6E23A267C54383374A57B2994 +7155E17F76D48650BD95DCE2E0BE5DECEA3D2BB8D7AC00E0F192459AEE146E9A +5B12E4DD2AD69F33034365523FDA513F08FA29EB13F50995DE4F5757FF68C6C0 +DC83E092E5E27B9C5D8DD45105C03029D4DDC8EFFF7B7E77A7AA51D17DBE4C56 +CF50FE17092D3D96A3A16EDD2E62B7913C9FED11A61D753379D9759D707A383D +7DA686BDD6069A29B2A0FA0020AE5CF4E38292FC5BE96B9AE3E5A1E512A87A6B +47E8C6A1DDE4CFC9A8CE4085F0F75EA09921061A73C2994FDE699777FBF46B7A +6F842E4A9D80CA3E727753C99BC258840D97F24F82CCB47D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMCSC10 +%!PS-AdobeFont-1.1: CMCSC10 1.0 +%%CreationDate: 1991 Aug 18 17:46:49 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMCSC10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMCSC10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{14 -250 1077 750}readonly def +/UniqueID 5000772 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A30EB76029337 +900ECFB1390CA5C0C3A04528044F266BA17BE487C79B94FAC6D6484684C5BFEA +87BCCC77D40AD11552035E95E3007126418ED49B68468B38A14E88E68A267B98 +076F1C9769A5AFBC285E5B158EAC9F926F1D6C0B8F1D57D9C31D25AE27123518 +9D2CD92E5689E0213089BD268DA5E47525CB8EABAA4B78A15AEA34705889AB3A +FFB8953B5B3482E52BFA0940630ADF8C0AC2177D907324299EE980E850F203CD +B627962F43D5A678C44243CDE97853BDC6AB45FD5C09AD274DAF89929F583CC9 +CCC24BDFC68B92111055ABA5F26D2DC67C70906F71C2957701D65AE746A60C30 +40E6CB24B97FCDAD0487AE38A201FBF0E41BABD2181981A71940F1E707F91E5D +C8CA50CB16D8702D188E56D014D92F76CE0B52ABDB9110E32438D2BBF3E6A40B +7B005F10BB437812CAC6ED2996F7606DC962C4FDE207FF322782C343DF44CEC5 +FF06A55C630C20E9AE1B0D1C5673753C43BA0767D65D1B451CC6380D8BB3C4DC +81E8FD8AA79BE993218686F29D3CD925566DD587F541A0DA1B1CC3BCEA2E6C7D +5E1016F6917A871F1BBAD96AF9E867735017119A381FCF33EB2D3E1E7093FD90 +CDB0CED4818CFD9E201A03430CEC713620BE0D3254158931FB657C6AD4B2482A +0E7D070D7497892E9E942DF58E88CAF0C8221BF36BF7C435BF2C683A4A2EF4CB +E85820A8AD3486155A40143011BA9D76297F46DEF69ECA4596D6E4CAABF84091 +22A96A4BC78A8DD072FEB759A68A44BE1164638B6D952147EE3C628F9A022060 +1D1941E73310943FA782532ABB1116532AD67AEFE0758C051241E301C7E13A98 +6447EB0180BF6799814BEA4DC0F727D0A40B7BC3B1269CDE174453D6A3C4479C +146001CF717DE25AC1BE5AEA5F2F1C17719251C429D3AED19EF17A6A68A46008 +E2D14BDE7B192E308040892B6E2353E03BCCA072EEB185D483838D0188848F95 +30B3CDF8A092D8BEE0DED21103F8D96F558B53DFF27690C1C55B275BA5D4FB76 +E9D9B47B8282CFCAE3989A1E0E619BC924F0221AE100F1A77C011A70A9B1F553 +6BCD7FF2C1C34393D1B286ECB33E50924668D8BC8BBAC2F47537EBA2DFF172A4 +E81596A542BE634B8D2BC811364FA8C4D0EC72A9B782859FBEE9E61E8488FDF0 +5C8028648567DB54D9B1BAB4FAAD84B813879E0940CEF9B7E23230436079A72F +20BC5A7BD99BE0AC09DFB36A7004A76B3A64F6589336F521450AEED068FEEB86 +3B31DD3DDA1E6EAFEAB83C3C950AC9C353BA860F15C689A29118366667D5D3D9 +8E7EC7D858F5419EA67D26BBE8550B756A74EF623A37FA52BB371D53BE8508F5 +5268B21E77BA5F05FF93234FCECAA5993C9155C270597AA9829418E3AC0D2D15 +440857FD171B076381AF0F8CC14C2C334507E2DF9B300FDAC1CA9B0263FC3973 +B4B624801C326643B0D9BBD1132979DC553083BE29D2D36D01F30A68BD9A05A4 +351F90940213850BBF393110E3F6DE9BBA821C5B38259583C6B1A23EF460D9DD +C304C664A245F3FDF879F6C425503E8FF61D41CE7D43BDDFBF55C64C3EF065CB +64446F9F85908BBBBC20C22C188680E432D20A0BC50CF0B494FC68276C9C9605 +FFA567DC5333B88B4064849F4E63AB7E95CD92B722FD714173D3C3B51CBD90E7 +B41434F9A9538EA07204CCFB586268C75D55A66ECB5FE5E2506259D1F6EFA884 +B976C4B964F973D3515771AA43355832E3C2C2FF7707046FF63F5A5A0313389A +010E6C135DBF77202292A97CB3C71081E1263ADD50E24ECA6523A2754D8FEB3D +AC686A5E6249EFF2647F18E3AD3488486243F7A5369B07E6271D0D96A3683B3A +BFBF91D735A80875C58C5508A475A7DF6863F88F3370F571338BFDCDBCFE2BEB +8F3E29E3A18DD5B94677EC261879090C056BB343BE742C1951641A3CFF3B5A45 +B4B54CE368FE610549AC7092B16B7517D802DFFCB3CCF4FC39E0F80197942104 +493CDFB97A5C95FC12486AB34550AD6C7574374514E94EA1ECBDEE7D761F42D0 +39A526FC3182499BA9F64750050E9417428AF001221ADB4CA0328CD17FE8DD72 +F2EB64853922A1A85670DF5ED0814517930A94BE3BDE4751CFE23A8F37B84C0D +A610F2163FE4D0C5191ED6D93B24A2549E254493599B1691E834DADAB236DEA6 +519F200C7026B92A5B8957425C6656215E624755A5332E8018148462FA3F0251 +AA1B1E85844D25AA0126D98E50D1F9A783FD7FE32087EE9585E06FF06808368E +262AE001DA6BB224FF37EC6E78DF63501B3A86E55E351FBC61A7A3BD8956E6E3 +4F1494C81D8FD19CFEC510D9128C17F7C3C124B6EA286FB1160BEDCCA7D43EE3 +CCC6A4AF6FE739383665E52C5B3116C44BB0E6BF3C8CC0E0AC827CFED839B011 +6B9E3BD4832E4760A5CD8D444A6C519D5A4E695629E2BF157855F639241E2B9B +403B1639802DC19629EC2CE0EFADB578BEEC6717F9810B85613549445F8E8DE2 +9169C803A5FBBAA9EC3AAC2A8224CA360A4537211D5CFFCA208999EA59DF25AF +1D252F6C3941CE6B5D98DC64B9B6B65F1887A39387490DA4D5F696FC61E56CA2 +3119AA8978ACEDBD6C92A790F52CD4AECA8A5F0415379B104FF37C7AA67DDCF3 +6AC743639C3E30483F3E4D499A5CC0A34A302557F7423713CB +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTI10 +%!PS-AdobeFont-1.1: CMTI10 1.00B +%%CreationDate: 1992 Feb 19 19:56:16 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMTI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F +21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 +06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF +55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 +B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 +0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 +1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 +7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A +7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 +356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B +19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 +C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F +244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B +AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 +5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC +D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D +993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 +2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B +E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 +309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 +F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7 +E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66 +AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9 +17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3 +05965AA02B8A67AEB04D915DADC1B84A531A1D60569ECC2EEFB7B6B0263B8B5C +E6EE63CED9FA74FC7C03610F6394D64BAE1BF3B50FB613A39C300CA5F4F16CAE +F9B9F4DACFC69B69AF30E4FE9E41A6DB0FC987A13A3AF3F99127E5A44E7FE781 +399BF303B773BC0096427B18DFD0DEACAE196EB3927A7EEAE7434F70FEA9BF58 +81A9D616F87D300EE8D00E5133F8C8F4CC003E313EBBEB7900321482D9DDFDE7 +1208ACB39BE071CE8782DBCE969790F60A3D8D8DB321F9655DA2577C284AF543 +847780B6C8180221C63954214012810FF5587FC771E18013003CEA5BC5617BC0 +82B7738A9369335BEC45481E256325DBE2534EAD65078B702B38A4AAD3D5A918 +416A966D615A6359878FE529348904FBFBCFC583BC7C13947048E82CC9DC5AEB +C93CAAF0E4A7EE6122B1BAC7D90198095CE7E3A97C442E22C2C3F7A901A6DAF4 +1F8A5ED47EF9893FC2FCBBC751A9062C53022123D90BC0AD5B284D6EDF4A8F32 +6E81114AA6C450B76A39479DD8B9BCF8C9CE2DE50EC865A05C51248D1B673EBD +9C73FD10ADCD944C346212E59A4D600D5B2A14D37B069FD21D7D818F1A54648A +874232873ACE88BF568875202F0221345F208DDBFB813785D054B9785733939B +BA7776B4D388112431EA93230EE6D48ED168EB785DA2A30951289D3C0F3CC9FB +525555735767B7D23E09F09BAF68EBC16161AB9AA18EB402E35CD7DF3FBABAED +FFFF7FC78DB8BC9CEC143A337860AF2C05BD0FABEED88F43CC587629F89FAB58 +B677398D3FEFF710F350B6473D2E1E63AB7360C191B378EBB6E3A38FCD85D534 +67AD6A625D054FECBA0B796534FCE1786FC3F8897D66686FFB4785B002ECF126 +81D04EA847D9A2C6B86616B72DF3A3D28372EA726679800CF216C2B34D3DBF88 +22295E2E99A5CB8B26459429B0C29CFEBF1516CB05A17A6C481AA58ACB433574 +35090CFB7FEC2536E3DA126C1727A5259000C3B6E4E0F689B6BB99A4DC3AF737 +C7390B9234131FC503982FFB735A4138920623E5272B01926189E9F23BD1D263 +FB4C331448709A7BDC8047CC1AC89D940A359083D32E338E92E74118F7813825 +5FEF390A14D0497AFD059F996BE65AB6BE05D8F22FFAF76ADFB57D80243687B1 +4564D4E47831E691D5804E98D45A8607589CCCB3133DEB7A7901BAFC4E8F68EF +62F16D906853206E3941F85DA2F89113FE1CFC024F16D7AE3E15C83EC3060A20 +E16B4A6E7BD0EE68DC4C5B858493CDB14C18ACB9F4A72A0E60FBD9E6CE5E57B5 +A10D740B9CEE5AC883D967D53328C44E37BDD96AC79CC34B6B1DF66EAFD564E8 +C008B7CBDC214BA5EB193DD6EDDCB1F4038266578981A82D9EDBC85CAC0D71B2 +401D7AF66C51550441448B75FC621EC9B4154BA36DC163AE75F9B06DA3BFE396 +9839CEF25D1F6FF7A6AD79EEF1FE6C26127B1DF1908931D910E1D98A11550688 +78B3CD95BBB18D581052FFF62D1A09A4E6946B89E6E07205D9AD33C76E4A892C +7C7DAF7420E94BD6E2D94846F0D1E7476D4FD9D569A5DE0442D8F13521C5059F +6A09903180ED96EF2A969FF1C8DFE7AA209DE315AD012D396513B85962A8B5FB +56F7184D95D4E60137E7F822DCAA1C152740D9FC190396B9DF8E604B278E3226 +F205030C959CDF927D2916BA3EC21BE727DBB9C4657997B67D0EDED8F17804F1 +07A5463750FC3F1EE5A40FEA3868318004E847C7BD0358361C72B9A412993F16 +F2CEA0BABC078C57640BEB74A5A7F385972B3E4C131E479BC6FE552A0653BF66 +07F8D32A6472136ED1CA65B7488D13AA73E049DABF2E1159D284CACF536FB9A9 +BA6A66433C1B206A4DF057AD4A5B946A06CA94F9976FD9C21CD2E42DC3333EF2 +12A96EA0E2FF7C33BD41381CC6AA9EB564606C648E5401117F271DA778CFC0A8 +D4F637DF08D2679FA5CB8E3BBABF7163F8990D9A4460EB3BE8CFE5C0D9942B86 +83404878CDC3E792589DAF3309A1DF01869C89641F36E0A113D2A3F51ED1D8DC +2324011E156F4FE2BFE476333A4C9FD49EE0A11A77708B38786151226B2571FF +68A8EC713FEBB8C283E9457EBD23132E322F0FC64D78CC718D133037D32B4F10 +7D09D9F5DE7817AC6EEA754F7F47DEB5592C5AF33EA0DAB635F47D55209C7D95 +D4F50FEC1E0D651B9043FC9A45344E08D807915EBA34F2B9C66797E01021F7D1 +C38544F5AEEE14D456A31FD8B6099F87022E4D0280E4737469D1E9ED2192D239 +BE3CA5D684848E211AC878AEC5AFF9213D2D5DC6CD626B24A753145BBA10AB34 +873FAD9A701727B0A636895002F91629D6352525EB0EE90560A030C50E4CF49B +D0E166526E70033BD723FF89619234FAF7D9F448885F4CA280F3E1AA7110AED5 +A610CFC6E7B0856FCA15CD7B8588C61C31F14297622D5FACF318F87709854E9B +7B9533F8756A325DADB23D60076E372140C2CC5E313B6D0EF3F035D48CF4F5B2 +D2A8F40F47A1BDB5B48629F41899B445521217F3EAC18131DBBC19968E46DE0A +5A251517EE0E0ECB9E67BFB18DA49EA29311B970C2254FBDC8AAEED57D4290F0 +B98F9C41E6DDB7F5787B57EF7126AA0CB882A49F6E3E912115D97C3F1F2FF091 +A4B2DCDD9546E4067CA7248FA17E503AD39B6FEE9501C61FFF7AAF60F7E04E16 +51F8C789E10BC7626E5B181FFFE44197E16366513B924EC2F8C2A16692F47BAA +7F308BB9668960E7367A3CF9BE8F26C3129799A72D6EF707773A9984EF7403FB +34B7FBB37D2C262F912A7287ACEB44B2C38E37BD4407FBB9FA9278BEC067F132 +A8C5019B04A746A0E0A5DE0AC799E8E92803645D02B208A81740248C057423AD +354016DA23E06DA52360C452DA8EF0B6318B570DB0FEE846733974F1449A6E83 +689414E771A7D2E1B88202E6220A0324B01224B259F2869045275483B473873F +0936F76A09B6ADBCBA60FF974A64D9E782B664A6D61FE7F658200A61337E8037 +CCBFBDA6F8C19687C9C185DC0117B9A42347CC38D2D96479F445644BD98D78BD +D126823779A7B8DABFD98FCD628D9417B076BCE796630666A5A7F55377A0F94D +F66310035586291CD29DF969EA8E5000636D7FCFD52241BBEDA800A7EB401DC2 +BE6169D02AAFBEC9D060C731EED65759B94756A9DA79CF2978E45B495A515466 +A2716DB59E86BEC1C1F0F295DCF0F544FC3F368F2B5838F0F3A5F2FC0FA8E627 +0ECA3634DA71FE6123DF97FD8CBCCC28B80735D5E07C9FAB5CF23E772CDCE3DB +4C642F91B40E4ADF04B9135DF0293207307DD83BC6537088674A4E520A3C0328 +35D7CA16E55851337FA72249241E59EE3D7904F54FE68A41FA571146B72DD2DB +9614BD062F58BCADF082C518241309B963B1CFA997FA1CF5499DBB73D97671B6 +29707793F1195432F05B6E2F9DA079E3A05740CB23089FC8EA4EC841D871464A +BBD8727A32E56D93606624754D94AE285649740DDEA43ABC7837272A1E510D64 +00405F26EA9ED974780DDEAF358BA5A294DE83E7B457E00B61DD5946972CE08F +CA1FE9EDEE6DBD378795901FDDF71DFE2E4873206E9DEABA5EDB4083AB6D8EE0 +2DAB24F4453B14C77DD40946DC17ADCC6638B84919DFCF936ECED9B89EBB2277 +2EF60C5AD2AC6AF70C415DAB6CB5FCD605E110B31F7F7D2A65A37BDB387B182E +9F1132CD9F0A33FEEA9BAC8C0917036B53709B8E0764FF130DD04AF697B60D56 +A06AC319C30AC796E4E4DDD0DB6F752BCF314D110595B5B8E69548AD1BB7E473 +1EFA105A848A9BC8F5632BB234EE6543ECB9766B750A60C1B18DE882EA3C74B8 +6DA884FB61C677CEC00ECC662B9D2EBD0C411ED082CDED36DC4A12D91F2692EE +A08F59EB954195581D7C91917A16AB7405D2083594E29647914637DA6A7C6959 +11137E86F19857196A5837F08CEC603ECD977FFE6D2696C4BAA10DF2EE8EAB34 +CF477EC9B3599BB9F2B793D1180FAE6AA01D217D2AE7C32394BD4A47B70A2770 +95222BF74285F25049E0E4E03C7FF658CA3E70E075CF36169B86502CC615E3B2 +D29D93DE2DE2EFDD4B0BFEC97D0D6447711790BDCCD7D9C4951A42F7FC727D2C +2D5CFAFA4ED9372767E1A637FE1E11AB36891B43ECD3B81FB1D2284BAB32B4BA +21B86A1A71E19A94EB6B3F35B56E193CD78573AB2E18D0E53D348CBF05094973 +53C28D0A88808428009E8568522987831E028E10DBD043ED5375F6C16CE7A953 +57AAB2CC7D0A246701DB755B957C7DBA92B22E660C5934C4E4589519DFE2161D +2D50D599C88804F0119E6859B0DB093CFAE3DFF7412FCDBAB436D55241349A60 +ED07557F0EF3A9068461FFEAF11EEB657BB4EB8C183D62C5BACD3733472266DA +04342780234E0F5D06FEBCFA2A127747CE25F85B963B9F18A5F97D7ABCFEBA7E +405211A79540E8662D45DEAA47FA2E3924BD4E79FB5309AEA74B2CE703670CEE +C6444CBDF653EBBA3E836747B6FE59D763443F504534518221B5728AC4AFFE36 +6955C9A0FF10CD2276E9CC8D53D9E79C9780D07266AB3AB316A29553A8BB6D54 +3582492756E77D3520BC84F44E0C7CB801C082BF13081DEA8DF7030B69C422EC +CBCCF114C5F21B455753F8430397E77756ADD9E92993E2380EEC0100C97FAB77 +3C45FDCF2DF4F5729E19EBE2A5565F11D967D8821089216BBDF85D8E927C846E +D33D0A97CE991AA5095913AB57C8B24591DA0871DAA6AF8F5F52CC1C77DF1C21 +A9C9F45DB72B3F7278F42C8952CA1DB26D71572AAFA72FBF45F07EAB3A868157 +D1D75E41FCF8E23DE39ABC9193BABBAE95C14368573AA426C57ADAB4044F34AD +DFB78ABABCCC073F64AAE38F7FA74008DE75DEC22182CB2542DD23562A8FE1CC +3614748EE7A29CC425EF263EBD90456097CDD03D39DE1556C1D98D2E298A344D +0F7F0043C936FC97BBE12C8552CFC24C949F8912285D4295036A2AE054ACBCDA +6C681A930C592D7C3AF7287D95658F34F77FEF800CAC63006663DEB2595ABD7D +2FA53FC8B5AE3AB888946E232681FFFD38CF0C646BE2A95734409D62CB7DBE57 +B0DBCCC40C3C82DC965C3ED1F8401CA5B736773C974A151FE0E04F4148B78162 +9B0FBE5E97A0EFA1DF8A71E5A8404E62C4A1017C3A54C3DD39FAF8DB24D1CDAD +1C8ED40C514718D98FBD999BE50A127C45E6300A0452689BCA250F296D768A0B +0BF2DBCCDB33600A9C980DC2F0668750F652C7976A4A7C4DC95983CE2E15370D +E89B115EC133BA2B41067CD5DF0AC51816932A8EA121DE0524E1696F439E02EF +8CF213200946C501ABDC0F250C93C78D09F47A42D911983223C832DF670337D5 +BCBC22E305B6A872E21D24A74DAA5A3D7F7FB56BA9D9E0F8704AB8457662F3F8 +1EE9A63D2189857F5E6360BE45B30FFDB803F869D6E2110FD11E2BA63AAF819C +4E6EEF8084DB5682BB7F5A925A9BD1BD08A496016EE16F721A18830F1C80B9CB +5D30E0AAA64FF2EFD36D834B9AC9CD6566E9EB9C85F8DB2F358EA342B4C058F5 +D32A2F59E001F7B01EAF036AA63248FFF5C12EB6F9C85DCD4FBFE1BD240DECEC +F6B255FA3307E3826AC230F5735BB695F6DE183488E979AE70C06D832B18A137 +9C1D9268EC9FCD98F7BF4D4622622F19FDD12871DD48394ECA17E54A81F84CB9 +008B3D6BA142EE03434F244EBA932FDE2C4480F281FF579946C219693F753C70 +619278D78236B133982BD13CEB947443DA5D99BA09284FCC4EF84287C8F9BF80 +86221B71B950556E47CE506D3AE0F6894413809AFC56FF4847060E0A02FE84BC +B74F9841955F92F33E85D2AB370268596A452E296D20426BE58085FC9B099469 +9967BF81F4CD41FED39AD0784EFA3A4CAF45A7F9F65AA9B5F5A25F4F53019C37 +5721252D9C8B45DD8F673D78BC56DED6CE9042A64A3F1FF14C8C88D9D5B5349A +6F38AD60FB6169CA6BF46FE56CC8F9A2EBEE468B883CAA38542ECD22648840AE +52D4523D3B0AB2BCCFA9C47E878C64B29564BE546054E5C94ED7888001132777 +6F740D2C77AF00929D680B55664B0DF9D60A11872A4397391280817425E69DB4 +EE06081618A760894AAF5DF817563297528D651B8DA79FA1D8D4C7C008F92EBA +AB76FE5C6AE46B262E42F0B87F63614F58FBE34FBCFDA8819476AF99724A1388 +B6923AE4ACEC74620B2D609DEDFE1517C648EF6A4E7EB29CC55C3DE830CEB385 +326B37D2A049146AB23574B81B350184BACEB2638AA1D16D469A11180F338246 +F4F8409F07041DB2B0E89BD6D546C408F23E4FB38D3C6DEB55987C9CD580A9EB +444E19B3B022565549DE123FA4A399ACF8FE3ABACCD7BC87F270B5CD46BAC97C +E8C0D8922B10B016EE5B5F789C616C4065A53B881A39D854E4700ACF9B4BE4E2 +CB51F1881946259CAC963697E16F7FF98B58A6D12125C91C5724AD0C2C9EE5B9 +67E45804DADB1FB1C26B51C5EFAA5FE952D967865B960AF7CD53E953EA1C7A7D +A835717B50597C42597E90779634E092BD934CD57F03BB31AC6146C7A348D9E0 +A13D72001AB0A08D2995987E2BB3CB749982B3F1D7D64F89FA8460B310EAC993 +08C21A961AB05C252C89BB3C31B9F78DB7BF98701877F36F65EAB2391338035D +78B8DC516A9F981085CA2983E14462ADF901FFBEF17FD28D65B3054A0FF30D97 +E96CA7766FB6F6E8895434BDF46B39349C09F51AFD2EC708DD34A663106AFEF4 +BF467CB08631BE9DDC706910E05FB47A3995A0FA84E0757D1B06E8416FBE1939 +C87033DEE9B79A1153F38EE3896532BDC999E07302E8151069964AE90E5EE330 +67D385A4946B8EEA3E1A964BC32C413925868E533F482B9F246E003EF6F56256 +8DF8E279A646EFE77686B11694330CC84F866CA65A1A9951DB54A68433CB769C +B4D49F3FE04A8B716EEEE57CD70353714E541A9CECA049D855A665ECE4643240 +E6078982ADA038E50AF8DC5C34D7A8507DB808739618D85AEE1C7B18626C80AC +291ABB68F153E3A73E3054BBAC7E2F562CCC879DFF7B83FABBE64FD93556BD98 +36C8A72F27A60B7460D2DE35ED18EFAB2CF96EFD7F0E986151DDE3C76215193C +1187CED055687CD39CB65D2EFF6108EB5C2E038731C79A51202A026F2681C8A6 +7D780D60FABCF9BA28F9FBBDD97D3798647AA41A6BBFC33B94DC23F14FCBF374 +170AA553FF5B09D30F1F7A5771740AADE1B17B881223629896DBACEB6B4F864A +9B316ADFFF28FF484E79F97749393B4B3087F19864968C8EA38A8B0B7DB218D5 +30FB8BF9CFF38698447558CE7783280755D3BE24629EF26E75015492E27D82EE +14B3EDB69C2414BBBFDB5662BF59CC0D3D5FA3E09C875A7ABF1D6172BCC7CD86 +CD579FB9222606F7E96A8D4199DB65A569AD2B12DD76DB3B1B1A5DB6A6D35B73 +6C4CDB1CFD80B89908DCEBBFD560E1B512DAB5C5283D8EBB5242B36B510CFB77 +FBDA07CB9FFDECB03B320CAD8A64187D496D7DC86D7CC9A1949C2190C9B27E53 +E993ECEC353401B504EAFA850E0ED68C272216C228B3D2F4C5F8DA9FC77C19F2 +FC97CB6B70266100C5359038FF649D792E1423D6E9FA96B46F257E04E7168230 +352B81D3DC5DB365B1477331B64589778C2B5DBB6A257A37762CE3A028668A29 +938D86E6C5198F140231FB94C1502A07FDF4549039C12FE18E4D4BC4BDCB10B9 +EEFEFF193880F185BF69D65BBC65B911A4096F476F74C16515B20C1E25C85F03 +365FA9DBE88FCF29A78257589DD6F937A0849C51FF0B03F82372647FE83160A7 +ED037A3B37B7EF1F9726675D4BEC401A6BA89933905B3ED73731D7746B3561D0 +1EC8F968B53AD8BF5EDF4267BA4FAC7EA160C8FAA84E5E30EB67E79083773C2D +FD15FFF052042ED9F4FDE3BF8F47E7AE71EE118C87CD353F841AC458530128F0 +66CE8DF25E63B63DDCF55DCFB0D669D59D646401E3691FE1BD718B164E8FC9B4 +EED0F147B9AAB2B823CAF79FF1DEF3AED953CF90DF4E82224690F1FFF996912A +E0A4FF9D6410ABE55E515D06F74DDD5EE9ACCB9D130FA8A480BDEE8372028EE5 +46D08A914F14DC9AA8E2EF7495B372C1A819C2DF4E9EDF7BBA796C4F206BC254 +3E2DD44BF5A78B564F5E0C52215AB9BA512F50B427319209F3C1A517F968C5A9 +154D88252BDBB01409AB87D853CDFC7CC15E82FEA5E95D611273EA4A91903BD7 +1F549637264E363375C01584DDFE8C7D67EF0CD12E449AD9510E231A33BD8429 +EFA1CDB43A88BE39632D7BD7FE8C21CFD081A7887B05C1D36F974A3BA1040307 +47335515136F70193D151C9CB219672D02B4C3B342B2E890A2D3C9B7BF244CB9 +28C6947975642590EB58E29687D84F9E5681C3EC651BF07E9B1D21A9D45615AF +A672415609092D3A27337979E418DB38D1B4C70B7C6AFAF8D2AF6FE8CBCFC897 +BAE7A5B0163B7072892737491624D8CE33AE1F5FA4BC261B87618D9C1D8AC5E5 +558213126F5DAD1A00E6DB44D4544E7848F317208ABA64ED7C2539CA37C373BC +1CFC769DF0085E5A642611042CBFDC131A5BB131CC0BB8F8834BC68B410144B0 +C6CB5D6A9C63E149F6DF818CA87D4100DD7EED802D110975C982A552E72FCC65 +863DA091703D660F7D231907F0B1A45DC5C7E616FD4281C7FB621669D4F1DFB6 +0844BE8CAAAF0D7E95A220A4F01DF8CD810918B8CB23BF5957638DB4BBB3BB26 +7424C1CCD5869ABF2C51D9D78115A40E98EC4186E37CED646981B4D28495C91D +874D9653939282637746825F5062B691CF719DE2C204ED584F254F5445286EAA +FDD2340509E18C1F882DF26527C63DB6E219DF28862A57FE4D7317F4002D860D +F08D42ABB8B857FA1D2A9F9B437597A5A1A7169532290EFBB2907E147CB012E9 +1F0E8D2EEA8DBDE39C41FD6AE38D973DEBBE51FC678531AB7D0B36B0671E9D46 +B17E239705AC7D7538C4064F97A1FBC5C00D286763856947CD23D150CC91A8B8 +C2CCAF635E7389B7D25BD0DC2AA002A6828B73450E09C87EED0FC42E3D3B4BF6 +9132840DC4D5BBDFAF84DB9388989B3EA6B5F465C38D553071F677166294C316 +71152021AAD24E98179F9951ABA97F23186C317A5F3D579B89655BEDC917EAFC +AF2FF561D065D24F1CC3D93D83EEF4E6A44F50E5CF4238DA0460F97DD9E4DB91 +9F765B1699170C8EE07CE303A84301086E8DC1644707F3A27AF43648F6E10A99 +BD1EB8E7F2F97815D9759672B7B9CC4BA9DCAC459C48A40D52B3D62887DA1525 +2DABCEC91CDDE0E9CBA2B61DB771D049753E49F019B1810C6B1CEA13242955EA +D421FD4ADF880D3ADD6D0EE8E889845AA073B89C9CD5CA34AC0921DD38618F31 +0DC2860EF43EF952529350C6D35E8140217CC8AEBBE02C2D7434F1131DAE3EEC +5AB169CDAD64FD02803D7B527C93BB79A36E0C71587E4269373E1F7BAFDF6F3A +0EEFA4E8D7AC7B3BC95371FD3A40830B10AC4B3F035AF788AB56EA28A4572739 +D9650F676DE15E077CBE2901E211963B58C73E52BAF0F57401AE17F9F0F3B6D8 +1B6F5A77DFCE1786E031CCFC3F5D68477F00AB729707168B03E14D897984C0E5 +97D04009C5C586D822E98C193A40427E9346F9089DD43F5B3BB18A3F4DD6C839 +FE64A3D2B605685C2E64A909508E2862A233BD1F02E0AF38DEF065AF9E31F6DF +6612A5A726AD67853C590B149608C9BF4726C9A5AF14CCD77E546B97FE747E42 +4ABBF59E8952D0A9042F4B0835D9C7731F8C420F54CB415FE88057773BED8C15 +9F8C46D54CDA8B3C320A34554991E3EE50BEDCC60FBB29EF9D7CA783632D5DE4 +EB1761CCB53A5FBF0ADA10AAC10D810C16CB6FD3579FA03FFAE54CD66BC88155 +77DD7C912D2DB2D35F956866CDD20377A7DEED73C7A721AC8945A89170A6ADE2 +C4150BAE03AC7D5962891E7E321F438E5EC88207643A4389E7B578128B88A03C +FAB2274D4F68985E8A6671A16BEB2910B17DEA7FA44AEFCDC13A9A8A08EEA9E6 +704BB2D9E515A493045B9C583EC5ECCE3A27B3E2B6106E50D5D43C4D9CC99680 +11F072963C40EFE34B757A8FAA87CD0C53A11B19EB9177100FB3AF4CA3F1A406 +C86A248B038F22F7F929C5C990599367098B039970412E1C2A20300D86BC34C4 +B6A9F4E08D8BEF062CA72793B21153FBDF3C7D5CDD693D05874534BDD4810122 +DC936615B97142753DA81C48B246FE22F4E1CAF624FA7B9F6695DDDFE2580D27 +00D22735157B34F1B5FFFABE4B95D51947FD3A7A4572883EBBDFF81A5121CAFE +7845830F854106807823A0F0AE934C76A22AD0C52905C234703CC77F078B2510 +177B6451B6B0A6837AD3FECA71D12052C5A2531D2A26548107063EB251838C32 +32D07752C23AA3D208C042F688021D552532731C53D58C1A3EE12F39500855A4 +FAB9AF1EED11A22BCA4DD1A07AF91441EF2DDA1AB96DEF8F4217DE62F7D0D62C +65A39EBD1310B8C094F54905588006CF450087AEB1B6FF1CDD4E60DDB780A42F +883333F0D66DFAC0EB64C2E5C5339E9CF9C0E0110CED2E2166FE5CE3832045C0 +7200EA4E4897F9D65CAB47ABF9035505ACFA3DF0DF2D87E9A1BA09451843D24A +DA03920AD4BB9B51AF3AA7AC2F20FAF26274EC184117B71946F7B6EA0E24A39A +2E685ACEA0A7DC6CF009FC1F049506C1BD0F0B37C22AA537C881D637FE746F40 +7C23CB264A3C146392B38D7EFC889CA2A06C37B72FBF0CA8A57742EEE5390A2D +420F21691F3B23EA +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 +20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 +0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD +F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 +3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 +A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 +5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A +45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625 +0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF +F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078 +3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E +E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9 +3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64 +293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5 +9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139 +6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639 +3FB39C1F05FF8F31D2DEF37BB9B883334F51EA1243332FE1E3FC91864C8AEA79 +16A726F924AFD84F2F4215FB795FC41DCFFC835C90B9E31D291E47AA4BB8C05C +620F69DF31E91A0FBA8E217CDBFAD7C4D480EBC1EB396029CDE615C227A367AD +72834BA95539D39A38EA0CA3CF7F1123F70792CF315BAAA38BBCB6DFA80B4493 +5025F33C3696DAD6A0ADF584C71BCB1D29E523EA4B81FFCE15F3204022BBBEA0 +A9483EE8EAC07D581162672A0D66199174821ABD097561A263C0C0F24066FBE6 +0951F31FBBF2675141F3FB4457CC2A94A40191EA0AB2A606CF540BBB8887B6DE +715EDB1041EBB9D05D0F4A4672F534397B9529EF8743BE88BBA10C81E0A46259 +2F2AA7B638E20C9C8A3A827977AB58ABF7525BE15DB66CE8E9B81457552073B5 +85DF3FA70B5231C447C5724E14730B90FA35ED1B5723036F1658CA8E19EF5A6D +D333B78E91E4D7032EFBFD40A5A2269B0DFD9F7C3438DB58F94B507EB93032F9 +99E5F15D9F5D8CB031BBBFBCA8A15A617ACEDDE70DD9C2D9EE21179FB17AD913 +B4BF577A9046994689D1BC6A6985FF5F5A67D699C2FD288FD9E5BCAD5453EEC5 +68287BD7B8872726C28CD288B4DED2246B843577173450B6E5760852CF2E1727 +01FDB0FFFBE12CA13ACF6434AEF4B59EFF3E0DB1E87D35075B1D55AC12633167 +5A83A39056C077EAE6F2F7D1DDED300BA43830B8034F0A6AEC562D3023270601 +6C594D0359DF6F230F7B80B54EBAE4880AF338956B813E3B8DB8BC778BE0F612 +7D84939C2878B43EAA45BF10E257F22C28C2C148FF48843D2B52626148E3CAA7 +4527B9F246C17BDE21C6E7EAB4906BB6D9E84906CD1832C4BD9E405AFFE33AA2 +AE086C25EA26BC23D68986639366B99C87359915EBB76D7162AA667ADE4954D0 +B1E18027FAC2468CB2FEA2568E23DBC201E9B6A1151FBF21129A088D89E3E728 +28B2785C1A8B2637F368A93EAB459F80506435BE23A85396969E2AC4E0D6E4B0 +8B12EACD150049EF8942C108B96843159D4408424394B33603F565D1622FCB78 +0290F784C53309D68795E81FC040FC646FFB498B0BF0C38B9ED604F703551885 +EA5E14AC9EC356F3ECB8A8755599F616F019ED01D6A03471FF6B3CCD92B80E32 +0A6A9BB302F27BFFDE531C2C0F26F468A4E81C56E58A7A1E9092F6E71E855062 +0F052738C1AAC57D0692DCC0905BAED906D1CD74C84342DEA80974777C07B8B4 +669FE2FE12C0009C1BF52ECA36A06168E45B460ACD3CF4D0A7538940A45E7B2A +495714721BA74DB337FFDCD51DB52E698DB41907F2724CD2B8FE102BD0BA38C5 +D87B9089A3AACDA1625E91F2C396B7E55CC7962F48B8552F946404D03EB99B8E +EED8EA4CEE868AD564D2A708531B71A0D6E0232F066C79B54676FF52E9C6AAC4 +AD89618BB711AF215AE896AAB085B4B071D4112CCFBC65187CA1713C69F4A2C2 +471AF106C5DB1B42915CDD9C7DFC516E6D36FEB1CF4D3A3F65357A18F3BC3AD6 +FA983518BDB503CB002A028BB670B4EEC1104D8A2456E7B9A383EED588D17D69 +F66EA721C8473112F83F7C012767D11EDC2C3B0EC19ABADADDE49AA4DA901D81 +235D698819406A78ED07ACC8993559BC2C6B3759E485D6A100AFBA6BCE2F280F +5C909A50A8E21D928D1A990025C0A42133B1C623AD220208F656345699B8D3D7 +FCE44DD3FDED1CD32EFE1A28F6D933124AC9A6A88AF94EEC6A5B145EE48C25D2 +DBEE6334BD9A32C18784C4F39E6526059E1EBDFC98497C3B758AC6F8B6E27800 +24D19EA0C4A26C4BC38ABB1C4715F8FF9A22506D415B33D9C0FACCE78AD32F24 +1522369B4163F61C7B5982967CE9E9D501692EA82B8CD7FD50E0B96AB41D22D4 +0AC2BE7E2E8EC8A24B833D07A9370C76F7B28FC04BD4BA241CBE9DD5F05EA561 +29631C4B62B1C49E409BCFBA31A96173750E4F0533599153667F08B1A20B3923 +42F105AC9549256A4F94A2BC033721C459A4C13C0AAC79CF77F0237F76B85D1D +8688A139DEE1A7CB91447B0727B1FEF45BAEAD5549BC3DA0264E90CEDEE03944 +ACC82EDC8502C5C0AF7445CCAB80F97BC04C28348E970127EFA0B37A862EAA86 +A82FA713F042AA4899EDEA42DD4D4EB34584E43A042236CA4EEAE9CC874B0961 +5D5DCDC5CC6B1C053F7DEFCC4EBEE5B844B8CF8750F86B0B62DD57F43C6F639A +1DBF68B72CDEA4793C6985AE1F25181188E8E822C86C3E54A3C30B4E020ED83A +3660B2C9D13F91B1B7AD8A47E4C28762526045C24818C088BF533C77063D3177 +71C758D850BC0CEE2A1D94E77927E2549087AF4F51FC6CB62A5F6DABC33E6177 +8B9E320A26E8132B9590644641DFDDC0C4242C373AE036B74910297740FC1D58 +8E7F68583262EE1CC5FF36AD2355DC30BD4FB61718AC3981E3F55AE0C19DA046 +41AECCD147A7212BF768EFA88C960BA243CB487A04C04D5C17073EA8CB10584E +F447223816BDD4B401B90523ED078B8F1B381F0EA471BA5B2A253C7EDECADCDF +00F60BFA5E2EE3EEE82DB20BB8B627880899CB2337CAB801640475734B97985F +4736599C46251CA5C6AB9F9A32242B0EE7946BF8FA4489D0B9FDAEBEF5032A9C +413CEFE8334CD7DBBAFB1AAB12B853857EC49E611D471B4359A14FEABD806CF0 +80E84D83332139AACC609C18647E1DA18A0CBEF4674E9E04CAECC6DEA69707E1 +74666A3FD7DD3AD3E84F49985A1E0DBFF3476A34C3F10B0F240F143C9B55EDC7 +78E79CA834E74179A8DE230BD6D41C496F96B66A698FA16CA4252A2A331A4B86 +80E405164DDE48743DD18449D13C2B7B3BAF708F3B04CA5277295BB50567F8D7 +B4723AD4C9F567898251E9E5609C81112472AC830C04E5C5027BAB933F0DEF0E +8C259A441E32BCF605F2EFC482D0B1CCBB9BD44C9A9C5AF564E5AB0FC8622D04 +7701FAEF8590B0FF4E7A97C82E5641B2503E3E661A3CAF25DD50A9E0A9940563 +0A0944F714D3A80ABF69E6A9974BC93EA89F59D1BF0D256B0F6144C134D0F261 +BA9204C50A18513BCC83821B02AFF6CA19B880E179A941434B595355A905DDC5 +4526F6829FCDAD454D28622DB78C76F0ADB199748D4FA77DEEAF69F32F695700 +0969475888584E30D3630DFB20FE00BC8F43C87E571C92D469E16F239BF66765 +5BDD86D433CE301914A3DF3B1BD988C3FB3CB4465A4F222597490E4756F46DAD +D64EB4845AA5625968DCDB93DE4611BDD0159DC1B5AB20718B7342FDF37B9E91 +1D52806465CDFA7BCFE1B1AA7FD8D5CF94C2035F2489BE268FB7537ED8DA31CC +B9D3222AA891C8ADDFB70955E7C1C71F043BF8503A19BAFF18B5A62C7B2176CF +143CC77AB3C1C0399D7C894B8AD8E7171A23B2F8E9E78C2A22631A78D4F8DF38 +43E799557663D57F08C258B38A323622480A6C7715DC67959732DAA4D00C0DA1 +54D09F27F98D968448126D8042DA54478276731B132F501E4D3BCF9E5AA85EC6 +9B6C7BFF3E60333C77A928AA28AC1F7C2EC05102BD89A4472120A43F03F97072 +6999D44AEE5C63F41EDA189E9DA8D569DAF437059229B0275A90FBDC7AEAA05F +900D0862EAC0B5BA210B2DF8035AFC1C764E118843710645D7A443F6484DFD09 +CD966036D77E46F3B544FE262564FA374A2B1D8301C98B87F1A2C75B80C91C91 +95ECAC136266441480C23DC001E2A26E3FDCDA663FC716BBEEACBE2D1E80BBCC +5069FE7C356F46B957252B401086E6CB144C2943852C6B2CC63888A3A8EE3136 +D50E95BEFDCA9925ABE1DFAB0C65146877FCD60D35832CD963C824EDA4547A76 +64BD7C58065A674CDFB0200602DFCCFDE5105CA153AF97D989EAD1779C1BBDBF +A6DE6A71BBFEEFF43487BFD652FA80DB5F64B998D0AAD760F5E7280A3970A4BF +85AB625897B76CD6D3AD0F38A92E1108AFEB2A5FD9A3E4EE48EB75C1A9D57277 +06AE147DE39177D263628040A5F88E6AA3AA3C3E2514B4EF1604ADE9C23E9CB0 +E686BDAF27EF001A4BB607E78D118C75D79BAFF427E3495AB2E507D3F14E5D0A +4F0F2793118ABE20DF90493FCED41DC3D71A33F1C310C14DC7C2168FE760A45D +487268CF316318FD55A456B67DD97222780C151E5F02C86687C0B8E1264C3728 +EB76ECACE79673128ED06CE010CC3213B5ECB46BDBEDF203770485EAEE14687B +55B498D5AE2A65C9F6E974614C6ED462740C95B91AEBE73DED2A9E455CD066AE +75D0531E62C497CD40576F80D1959741DF3D2D9E215848F6580F04B30488A346 +2E842B09867F2CD0A009BB11B5A535C0BC7503D3172DC35A36436B81586576EF +F287AFBC3C740BDD1D01623120E34B94178644D1633B06E4C84B0646285CE644 +5955BAC4FAD013A687D4C7797505028B33DEC20DCBE7D982EC2E89E9C2FCDCBE +F0C3D84DA608A12E2220A2C6F57E2784D543BC7EEEAE597267DDED89FF0AC761 +738050229A687773F98F96F8C7925E5F8F01DE7E3F19485006AA45E6C93AD397 +B1189B212DC0C732629BC0240925CA84F61344E49EA7A1A9EED07184038406BD +B170E688776038BF3B7BC1A93939EC5D3D1539771E560DF8A77A23729AB955B5 +B721D7442363547CEDABA8A02D9D72CAFE9B2ECC9AAD41DBF03635CFA6624714 +20C6C66BB620F09AC35E4F32875C917D89E9BE6B85741A383C375EAFDB6E70E9 +DBE946445877262E7949BBCC9B0C7D10FC8CA562CBF82E000C37DC504383C461 +5A9C9C390B0D5C2C256727379DCE21BB5F45A5118FD85EF24B29B2BA388CD700 +8321EF0DCD88A3EA13B0822F56CDB9D190B7C638CC21BF551F5FE14C410235D5 +44FCB4BEF0ABADB3B7E0DAC79BFC79A20DFA810800AC086C33CE3EA222935CA1 +AE7D1FB034E87DC39551E20931E0F67DBA379CEBD2A68CF14C2B8D21F6DEFF52 +3D8AC5A2C3047BC72AD1C1724FAA11B4E29AF58F40025D338683D16584C5F10D +1416B71DAAC3284D78CD1B1100058089B90FAB5F1AB9B65DE37D999DF360D8A1 +AB0F673F17EEA3028C431ADE53C78FC8039F1ABBCB53A0A853FEBA45A6E1525E +F2ECAAA084E55D2C1331C52392D6AD8410AD78E6C470B65C5ABC6C0D842E13C8 +0939C4538432072100EB693040168BCE6F1460256B54885288E0DA834340AFEF +52CAE36A68AF16D3AD222B5B3247971877B0E16E8CF1A8614C7E2A1029FBC178 +366C2221CA8C4A218DF916F82B812177B6F3AA9D8A4B3D34D2671F428F17DC4A +2F3FB9D69FD205709571980C62F8A7E68BF13316B432340F44CA60C3B304C423 +421738601D258EB3DF40CCB8DCC512AAE85D0DE2A969CA17951FCB36EE3E7F84 +220792353A0B2F0ABB114A904C4BD0060A3EC8013B1F862B93AB339690700FB0 +058EE2E274F3CFB4EE1F63602187222279F00381F779BD89D2B12BF1154D64E6 +2136EF9ED1C9047DECA752028FEB199FC6C5410B62CF798E1B796B0A8FE8596A +B9C34C095A02C68006B9D3133E0ECE786F371F145009A6D978DB5FF89254CAF7 +0686D4952BDACF2674D68958A1AA837D565B03FE8611AF8BDE66131246DC77F6 +01EC809041B651D9A18549EE91CFD6B4AAC66269A53BC4721DE9943FC11F4B1F +FC30F7AA87BF51B9722F24D89A8C02721C3EE5569DA179B9C9AC4145A4A9DF56 +683D248F4AADD1069ABD40B563CFE294583138CF7568BD98D18046E26804CF70 +B53295BBED05FECF4A1EE8FC5D1290C060CD566FA39B1F91408F60195BDF6AEE +35C794415CB6949783EBE6F96848D2A2D1A3BD92F05039CEF27E5BC28A515D0D +090CE887E80FAFF6BF0793B41414784F268E37F1E58525695A3C8F1F0EC77472 +62D6AEAAB73E779A6115ED6275B63BBD2F95ABCEC80E2AAFE68384CE04756660 +E072A9625CB32E2C5F76EE7F4C2DE617A93912E3829A501B505F28D93A9610AA +238474EEA8E7F3844ADC8B2C72224755621F9D94335DE8E0F5A214F27170B339 +8C7238ABE579B812FA4A4B14048FD27C21735889C521FEAC24D662986787E66D +D46DEBE90703AB1BA082BFC05CB67D7A24622CEFA31314B24C9A1F2E996BCA8A +4A85858A78E6F0E893BB49342404B0B28D0F473F3B9E7C643B5BD6B3485C7DE7 +49E9C847D1619B68064BD9382ECD5CD2E75CEDF57DF4DA6F661F576525CAB80D +D95E67966E9771607314A50BB4551A6A69FE237EBB4BEAFEBE59A08B2B8E1262 +F153CBE00EDDBF3BE0053B887A1F36A95AF99AC750F6AC9B9B82F3CAD0E55FB6 +1EB6F7427880085C6204643DD765368299714EF119B7D538FB7A2A159E6E9B4A +4E556339DE089100A2A6E0FC6C234EA80E0664EE9FCCAB202FC5E0B5D0E53408 +A883A7292F287B208509860770D3394EA4D3380EF348180E02DAD7068760EECD +3153D99CC2C9355B627F5C54CBA064025DB6CDE14A2F2C77706523BB96583F50 +B110C3B7C97B0BF4FEC92C55704A72CFC81CB5857D2337F5980FAFA554A78094 +35FEDA40CB1A5460FA611FA376F9A62CA7478CBE6CF1674180E595075D354C59 +A5F9E7680C9C8E6ECD6C5E9A84B6CE8FC18BED74D76C9E3BCE09F0523939CA40 +32AA4A9A97443BC7F5C4FB522DFE420604F36D8B2D5F76E3FF36E8439A583AA5 +867CB7A3395F078341FEC0716367C00D26925DB76868C1756150F6832F0A2532 +218A36811C4E97BFE2E3F8C4961A1C230B67A9CA28A163D450C3D9AC61FEB1BE +FB668E6CA039C41CB67598FA42239E09216E66E2AB4C62B03728AAFFBFC8455D +A4CE5582215D227028E6F5A61490D984EFD0C8888F695227F5A5FE4F12CD6022 +CA30F7DFEA5D10D08263416E2A9067AB6065F3A7FBAC0A40E5DD8BC5733A02B7 +BDDDA7FF6F80F4191E3FC198A1D8CC19EC42CEA1D139D8BEDB5D7C8AC83F4B25 +D31BF181C60514262EE1993D31B494DC339882A17C1092C92A2F17BC991477C5 +756A08FD347520966DAB6D92B65D9AE47F7CC10C0F2C517AC17A23789B85A76C +82B4C1599FABC47526AD10EB17E30C8BC1CA82FBC514871A012654ADDA42FBFF +2E1C79B9A16370079E36D6512BA0F6DE79A850ACB7227A6E2E33E5A8CF7F6934 +79834C17D20A7B2873667A96527E9CCA6BBC15624D3AFF942BA3292C0EBC3E31 +12CD8755AADC301E8B595ECD27C0CE43746222E62EBFBA432C448AEC1A78456E +0BE8EDC018CC38E1C14A86D9247A4B7B042FE5E156A01A3B14D4FA8BD6861F56 +3D82484B5AA7042E3E5CF0BB8D0B9C166CD1051FCBBBB9C7B819ADB81CE5974B +E7A9740B7E6A2163145417DDBB032CF09F8C0B4873E5CA312D5FD640F454FD36 +42D190C39642B6111A3D621CC1D7E1131A85920F9FDB9E96C67D42BCEB80A48D +E597F42123507D587F98CE85BFBA27517796136B2A00FBADBDCD0AF59E9EFF6E +6E8CE558CA68BCC96845DAECB6077E72CF8121D623A5254F3A0882BE047D6441 +195254B462A76267F28786E0D6E6EBB266127F1CB81A96BA414D58D54FD1F26C +20643D26B5B9A874B902FBDC07F156A6A43D5D3D5F800957612144253575B5D8 +CF062B2A019D0F5A82A0EAF54EA661F9B26C8F9AC066D9C2CDF1A12ECDC7B225 +62143183F927893BC7C7EF78B718D0F1F1CCDE9D84FC793CC8B7F85AFE4F6E2E +2F21A2FF352714EE12EA9E725AA0A2C2F612B86EF894F96559694BEB35D52026 +7FD67531262EFCC9F4F06798870AA07EEC59A516D1CD62CD62093205068C2005 +A706C113B38D17DE1E88AEF05B653087E641B29CC7F7BC59494151A1090F3240 +260E9561D49D76D76D1D09B403522783EADDE11DB46366753DD921B965DB9C15 +3164094587C9081C4A5B7BE7ADE3CBDB160BEFFD7FB4C8D2CFBCB3585511E92B +C07943EA765BFAE12A10091563831999675F0CC57181FDC2BE1541F2FA5A9D72 +34AD5B69D1C31FD08754C93A1377F6E944017C857563CA9408AAE156583A0126 +F1B9D7380FE3C350E1594FC79252289B4A6C880B77E35CAAFF2D4937F1325F88 +284C04A615426DBAFFD541685ADF1B8E09A80CE4A43CA436A211714FB739D3FE +C5D8ACD1819EF42E62A270A3D54CA08DD380C3D5A31EEFDB4A6E78A9263B3C51 +13067E52575BD9510585A2ED9CD1304E0A79AA78089136DFC42332A98F5ADA20 +1F700F343B55C79269A3741E8B54203D0665BC3E61C1B315BDD6F86369F4E353 +D6B6D23535C979862C98773F0B91A3C202F182C474DCD1D0951AE167823D28EE +AD8E7F5397B8A7162DD0F7FFD0C06E464BBD8C7C6CD44FABAC6C3ED1D55E04E3 +01315AB50FE2FBC3D83C197457441C8167AE78BF7AEE6A742F1D4E84FB028BCD +40D645753F6EE686002E3C9EAFE404B70BA370B6BA92D8B4259AF47C132F9B52 +339B78A5EDD567E45762B3B23DEF008B955EC36EF5FDF43CE2F13F8F1629DFA9 +6EFD20E4BF7398B9365E7AA5AB93BCAAC6AAC048B26DC7CCAB8576FB5A2E48A0 +490237956D91393E35BF84D0960C0D6D4D197C1B1DEE232E7FC6042B5D9CFA83 +D518D58110BEDB56BAB674086C2ECA695CEF25832D358745E82588905BBEC2B9 +8453B5859F7B896305A235A713392544B69C38F0FB20F768AB5AF2F91FFA1A8A +AC97B0AD8F0FA466F789C9FBC26F651E567215AF09A612CF9C56B85685FFFE8F +CE20C2452B0E4165637C48D6A77965D2950BF1F3655B78E80B95D1F792772AF7 +3677291AA358943177A3DC4BD85E3A5FC30A2735ACD1ABF14DC1F53FDC75ED3A +30A85B60AB873CCC7C3BDF87E66318D3DDCD85C55B2BDC5C7E0B2C7B086FD6A3 +4BBD087558A3BCD7E6FC0EAAAB0A54DDF50B6DE1A73349F6AA349F8B57ACF52F +7FB5D338A86E87145DB5E1DA2DA338D48388082E301B00BF16D1D1D97EDDB987 +737393EBE184625713A378DF538436FF07A512826F370330EAFFCD4B63EE28D7 +3E5FC47604058ADE79497AD324573CAD9CD147DDDB85E986F2F6D624359FADAB +35BDAE9D29D9B3AE3D98848E28D4384700E7BEA1C262F3A15F449D8019DA495D +12EB6AA185812107D8797B916CA89C1E2178277D8CC6D93DB846CE65707E0E7A +9989157BAB3E835F6155756A24CFCC0CC61E17FE04B02EB43708FCA21A7E077D +DF0D4899846CC74265187D6CC764853466E36B3DA04FBCBCB1F0AEAC2726C5CC +EC0696EE09C2242A3AA5D3E6D9D237D69DC3914F2857A9AA8A4C1EB771325756 +9606128C2D929EC9F614E59B17AB90A3DA7E43DE4E89FFEE7F94BE617D2E9AE8 +F2F9F1A029C50B2DDAD89369C5640649C7EA0B3EA2D69BC5B4CE7780A07B0697 +26BB163A9A1AC1CC0640D0D414035466CB56932ED20D62A0A17E714934E1455A +3ECB406BBC320EFEF83A5E15F45FE544A1049CC0186E85B4CD648B2067C6C5DA +54E5E6295BE9B9529FBDEDE027C65E20B5E3075BD8756A51993613BCE468F435 +81ECA8D664ACCBE36E73F19DD66DD9BCEB3E18105363A4CEB258D3F413C5444E +BDFA0F8E84D3FD824497966755F70EA68EBD25533A68438AFD7121A3050001D2 +4C35CF2E767AF8B49A0F216AC26ADB4D1E34C9B2727CD54E4C39835C666FBD57 +062742C86DFC02F7B7A0607234988F33C4079BA5C6F018358C8E1EC21D808FAE +B2D5D96736C598AA40E4D81C0A3F2C7728B21109BC85614480260C68277B1062 +5A6FD884D718D67E3082BE8D65C047A57546B6AEF3F50C910952CBA770027912 +60F2AE5AF2386347D33D0AC79E414B95B4855D125A15342C64A034FBD2551C3E +D3602AF5AAAED24CB8657A843D909AB399A4778967E83A1DDE590F106DC7C386 +BE3E3B9203BBC88A15881A430838D51CFED4B6012FE749B6141554DBF4D7860E +D1196F3D19CAFA33830EDA660916AB7719D5D6174C87FA6837F3702FE74C9DE9 +91FC9518B09ECB84B65BC01E475A533E0090C0C838D3C5288532C1EAA5543181 +D3027531CD05E4A8DE4A7ABB637E40EEF067479A91C99D31D2BA78B815AF7FB5 +C4846B87CD6486AEA24F7CCB4F9A528AB3641366CA355727111ABE42AD9C5AB3 +292F1C9601D8DB4A640CA555F381459DB1836764FB1B4CF06D3C737698A71839 +517C25747F6E4638F440DFB117B76FCE927C9F4D5097B2D0A35EF318D2C5E7F8 +F8A69DB02FE61FC5841FCCD666DDA7B4493B02F1D692AD499DD07E17503FF352 +2B181F4B40F924D4D0B762485AFC30D4BB0CD929A07138C07CC12165EE82B7B8 +10E346C1335428ECE41F7987292A579E2875C61D462BE1914C961514542D8F91 +BFBEB5C4ED9DF3A16B61CD590678C3D92833383682A833BDFE2BE06A950FEE48 +666F025A2536EF97893EB4FDD9A01A570B7C4CC6700592C57C7A6015978081BE +87B5B1848390B5A1BB3B03DD3967EBF78317A5EB2DF8377A3365A6E1A501CA06 +5D9852878C98AD53FDABB234DBD8E3CD2189F925C5C04C532A0B880C1C95D242 +83869931B6080BEDB8F64974DC4AA2C6DEAFA3FB4AC3359017BE16AB6C9D614B +A16C570E325D96146CD3D448C2AA1FDF9E066BD5E2C05863F41C19A4B67A97E5 +DE8F3DE2150B50098A783090A044126A82D6E41636850669AF85435DFE77D032 +A40A007411AE1F43C329488D84735C1AA792D6C735525BE05B7D7137FE9CEA03 +342A73FB69B59659A2F3D4794ED5E1618616D3C47F1BECEC1331F3FC49573F62 +B6E11AEB2305EAE74B32161F2CDA353459B1940F5ACB372847B90A2868F80209 +7D9A2F4D7EFE09AFD8FDAA444DCBC2266192EAA5AA98BAC0B1C2DB3399CE990F +51430A426D02AA859D9455DFB0EDBF2535F52156D49110A2B0F79D59DB6A09A9 +129C6CDD18F21480327353D4B9FDF14AC51E43FC8823BAD29DED354321230135 +53DAFAD9DE6F3966006B1943471F6322618BA48B555EAB448137E7D9A8D2B2C0 +FEB2CAEA03FFA8BE7E3DCD4ED15115D13D30CDE52FA9C239241E1D069EFEB4CE +D69BD070D0DC72EDA36820616FA022E6D7B94AEE27DE38CD19B29BF0E070CAD7 +B803B59B7FC26C274132B6FF13E65BC691BAB06E58DFF4D788AAC82EF8633613 +5440302EFEDE90892FD544CF5B3C7CE263EEA7EAA86B3C4B346A654BD0C616E3 +90A3A0E597233DEFCD35DFD11C609C70DE28BACAE19A079BADDB3A731C55D76C +69FBD4EC5BFB21B8CF7B9FD12F525473F87582E2C08D568C22A985437A145481 +1BA72A09183C92005F2F9C8F08550D15B501C8468E51BAF07998E3F6CB201890 +DD0F36D29B05921F968413E44AFC37DE0D50016BDEABE2E87D28DE73097B05E2 +AC14F06499F4C47CC300A1CFCD532746BDE9AD830BDABB74E471321B5CD09D0D +3A91D39BAE84791C57039C5D7E878266BA15285B97A04ED5B3BDBB3F442C58E2 +84CF6E6E86D838ED8E9A0367D1782C6B5C21F806E0488AE173D6FA05AA5F348D +F34F425B4D786A3B3AB1B29B30843EC23A755014C5BCC1A035856BEC41815081 +CC08649E3FE729E56B5D6D36D92FC270E92B419AC3EE27442A3109214F72D229 +D8E464911A47191AE9329CDD32FF2DD2A1EAA2BA460D2ADA44A07B9D3F920614 +997F3DDFF9C987B1643B37942DB33B91AACE625F2586335AFE25BBCC7E0AAA93 +CED4ED54F42898C4A1C27F01ABA5D3DA1063CC6125DA18A58CF91DC68DE5A175 +7E8A5368C85F089FCA09222EA108A56810CC166518D4D31F1F926E578941523D +4A4516B58C7B12C047D20B4A14DCAC96B9BE1FAC3CD997399832EFD140D4E865 +037AAD2F4DD170BCA222977F38CB5023C421FD0507A943A7A0AC172DAF3672E3 +CD332711E44A9AE8DBEB439688C30DC16F36487E8EB5AA9A388C95C36690D61D +0110542BAE8D1065A2F40C0C732478D43ADAD0AB52BFAB90D0275D20BEE518F2 +679C7CB3DE9FA3916D7D28897566010C0C3D8023F7C745DC0A6E4FA2A2007E8A +E903BD73DE5383A642F51BFDC14E7CFC2C3A7D826782B321214A0681F1D481FB +A0ADB9B38A4B14D7682995F0A48D8C29CE51AEAB923F488D675C984D09D8A7DD +FDE4ECE11EE3AB2868B9B55F5B31F95606FA7003CC08B162979BA4D334545813 +487FA6236DF01C353E1DD5B5C54D7C8A0A5BADD1A8A103F7592F1A2C35B032EB +D9F41179691CDDB69F79F042AA0163B7EDB54C67156CED4B2AE78A51CB5E8C0B +2090C99BCC93F57862819CD5B4B5602843FDDA81CC2F780C44F1A10DA3EACB59 +63656C11289E2E1622C32F2CA42B9E2F0A54142A579FDBC600C8265AAE781EF2 +8CE62609A846EADEDAB6C80650367AF78A35E192F83A9FA8AD33686C18F6CD48 +D1353BED5582D886885034480939E709D72913EE77CC89182D3DC208A352DC2E +E160106813EDE45538D1E6A42B058374EFFC4CA57588D72D6D91FF4462B7997F +2074C95FFC2C1A3E2E61D51D6607592B37E7C69262C99FE651C83220B6248A53 +1A7A876DFA75BAD2B74EDBEBBF57FE3F3DDE41EC182162392D3A7A55CFAF4E45 +687EBCF348904DF69E9DBFE4C7CA8732CC14317AD05189BC7F45926EF8920D15 +D0117E5C9E4158C763CC4EA90AA3C6F5224D96D64F5D2C949B0FF6408C5D2EBF +BB413E10933751924021DEF7205E7186EEB43CBB733F571AFBAE80C9E75CED44 +4B4BBA96637F17472AEE4E88587C25FD55C05BAFB5F6C1BFE79932E4D5F0BE06 +931CFFB9DA799BB561DB4CAB5953A7396BC3824AB9E3A1E6E83F142BB6D5B169 +6E71D77C8B3A9CA3DFFCF92817B12E5CCA35B0E61DCAFEBD7D5D2373109ED6B3 +3B5DF4B1400ED5DEF119564D16832FD6342FB107C290DBCAAED574E3456CBE7B +DEAEA8D2F063762C156732D8803188589DFDE81999044428CAF7531B1938498D +D62BD8364709E318162794D3C78DBD4B385F9490E14337399C534D83500A8E01 +18720385CD80928C7B739410CA632DAD790C4D520AA87D3F995F1BE0AA5BFCAC +EDF9C32DA415028720A9D9347727586F32A838D1A41427C8C2733CCAF6780B42 +282ABFEF4C67D33F3C0D64EC67FFC314C56C2FF6991D3979CBB95FDB9552790D +6DEF38596B3B7F03046E363B783693AF4AE72E023B0B63215B65D6BA94B56A84 +E8099835F0D1E4FA0CFE5BEBB0812CC72188C706CA5EADD3D15533EFA54E0087 +F5962216710F6832ECAF1E79B2B01BDF8726BBBE22A650A4FA882690773781D5 +822BE67B2F8E944C08CBE60F7764882E1221BF1D9CF0C0BE55CDA80F966F7057 +78FFE0C328B60D02F9AF285A7C8A1BF590551622429C18C1DB51CF076882C141 +10EFCD59D8308ACFBAB91C18538AF23229AA71188858C8292261743CA5088697 +CF67A8E070C8018FAC621106AF4C702227D28C36A535A1E42FF5B07D0A5C835C +12DAE66A9DBBDA8B66C3CF9C9A01E2FBBE45468D0CC43F52065A1C9E41FA2083 +9DBBC2B58DF600AC43163C22CB3D44E83EFF2E2FFD2938C7D8C0184760ED5C89 +422F8B6EC49530EBF0FC0E9BAED65D3F3E77AE0CD84FEA18D5C94832038C16EA +E2C92B3C8310038600BB5614A8453E19CF2E3638B08A97BB88E4EAB72E372A43 +22723A41C14A58A07E2F39DFB44DCEF8E0EC08A02CEB33240E38F854A1C5F12C +7298F13D70E27FD2DC10CE4D1B3F4C3EC940C7BAB62025729B408F12B001909D +054A87B9C006B5994155F967AFC7804DFA4DAB8E69CBCA980A236BA46DB82496 +7AF668918576FED3D444797D0039261096DCA549D75ADEC62EC06F0FF99C63BC +CF9493F76BE4D6F4ADA83D31AF623518E9F6A3E9065030D4A5EC146123C2E56D +6C9AAC46CD09003995DCFFF5445FFCAFAEB794DFB21A3F57DC9FE8BBC09F9A39 +D91E42EC7EF7E045415CEBFB9EE4C055E0606001A9D9CDE0466F867815307B4C +C34434866DE68262E84F0B7B6A6882C941D943501E09772E88FF06405123F00B +B030DB4BE5A247A6794901C9065DF937B26B11A2C354315AC3DD23D50674E1D9 +42F217A002F319D2AA76600C687625AD4739AA6C75E3EFBA83C7D861C46FCE8E +4BD9A479CA938C03DA2511B9C7CEE79D0AA8603892578957DB09D7EFEA9AB8D4 +A9AB219C8B0F7D9F8AADE5A03FDAFC52733C5F86B3032363CD880D4668D9204B +1B60248A5FBCE97ADF14451CBFEE285BA1C94C55AE0F950FAA236F97392F1297 +6696A64A9565FC2EA94982BE7E0FFD3C0784659B0374C956C2679B46A8A0F5F6 +A3DC4298606334CD4976425EE31E3D48C2BA195E409C560FE09C7F5C556817DB +8FA9D689EEC1C380C5617592630C002025FAA269C41BF8EA5504923DBBF00194 +750AD95E1E46781345C2010DEA5124FD7168DB98131F050ABC289EA1F0999112 +A632ABE28D20E7A21FE4BA087437B1D69BA76EF06493D3B04B0AB6602B8264AD +32C04A3B99E790183D1B26E9D1357C66471099CF3D6E2E25B14B8F253143D080 +B7402D08022ED72C4FDDBA53D9C939C2F7982EC6B7EFEFDF32810C68AB89A390 +A4BE42723847D8ADA39A04A90F16A0144225DDEA4E00DCF444F7235422620606 +582D792C7D175DCBB91E157894439D8088F84202168EF2B6F6A2BBB74D84D2E7 +1828D293047B8F694005E644F499403F9E52FEDFC9D9D751144E115D555FEF2D +0A8729447D05387749BA9241CEFE63EB08972754874C3A95E03D7AE4B479124D +4026A964BF9460497CE0F867E0A8672FBF827806F0C5E704600607F58684F53A +80F1E72555D16EDB2044FB43E73701DEA9546861AC79209B0753354550C0FBD3 +B421E6F1450DEF1836A9CB95AAC5E02DEA6F0674216777BB6E34A897789C3FF1 +3C06E30EFC83E3A6B9A3CC9EC9BFD19368F46F5E502CF35B4DA58B8FC25139B7 +E6D38B82B0C96C8472744CE23EDCAE7360767DBDEE1DB6B9FFBF52C523343C02 +7398C68587776D8206535D07562EA5A810B708FE37E8C027CD56B9F430C1B8A6 +26AC2ABB2ACBDA66CF3071D6EAF7FC9153C6FD646C71AE8A80C0EB0B21CC8571 +6E6F7885EFFDD2D21F734C493218AAC2B2A388585391ADEC1FCC4A6327972E76 +F33B6730F6E8D4A03C6211994E3FB80600385343076A7FA18ED645E7E973E3D2 +6899DF62E594608B64DA6A31F6B67E51979366ABBA449265B8531BCE82AB4FFD +8A1623D1EA596C527E7E8DC59EA93686AAF866C6266CB4E3185C369FE1C1CC2F +37481F51D119638A15209DAE28928D7F1CEA6FA475C8E00B5A6EE66FD24E5B07 +DF25AC2C6C9DE8F4083EB14AE83A1FDDBC990B05E76D75EEC1330B07EF9F2515 +3CB3A2DECE0EA079D6266A75F3FBFB994570E09BF8C2B17BA6BA3828BF56D6CB +DFD7DADCBE27EB84D53DC0563FC2D88B81F6128F05C5C2332539B0E074C8FE62 +98B8FE245C67D79DF5A3B24EA7349965974F7037FFF9E5DF665C12E2B7D22385 +7B17D49E25A85F0951DD39EEF8E0B0924FFA1A3263064E5B73D9DA0DC00A61E5 +1C18B5D0F1CFADA56199D6FD46C4787CD23978ADEFF827EEF8E671C1C3E095F3 +32DCFD84CF8CFC8E9636F5D4B1DC98746670B2D6D6E201BAB498EBC2B5013A7D +6F41F15CF0B617B85DA4C2FA824FA3C2F6187973149F7CDD8EACEE621456EB11 +6202FA4F3980624822BDB7FCC34B72BB78234B48826869F285A6213B7BEE0DC9 +EA517FEA86931B510F814E9F3161446379EC6CD1547462E7DD2A9BDF7434C5B1 +6051A4E37BD55F8621E1AD88EC5BF0C2DF959EEBEA57D6BFA7AB1F5275EE4396 +0B7EE99EB9792CAE0CD2D0830497C1CB7F65B26977853660CB511C2CD8C6C78C +6994B1E678D74C94679C234DBC4A46D2A58F97066594AC3D8D6657160315376F +E399C9531264DF10BF198A362FE814C738AAC1FC92628610AD3EEA045284C156 +38BE96F4EDAF53400E1E9007DAD2870DF92921E9009DF9B9461277F37848D2DB +6615995E43F25526AC41B8FAFC7DD84702B8674419D8083CC6F5FB81AAEDE9CC +05CCADADDE0AFEA7195C0711E4A23AB77D104417E6E1DCA38048A503C57C8478 +2F842732FAE8CB7DF9313BB5BF9C8BD34F8FA3E60A4E383321C9CA6A45F5C303 +C1107B39BD6339788E2E9A053951CA0754FC2989072FDBDBC31F793DBEE2D241 +E508D7AA00536F8EE2317887A48BD094E5EBD87726673508A91F20B303D1097A +705FD4A05F9254F3E976887469CB60532399BAEF2D2A6A3261A580A7BBE982D3 +1C5349C6532B49C448662DE8CF77065AD53F107E518BD2BBF7598BEED804B598 +5E5A6CF4F33CEF6C753F3E39A0D9F71ABB5265FEF341EAFF6B6765DB583B7334 +71AFB58EAFC67A52AE85D25C4D23749C629063A5A30616C47554CD365A681DA4 +D800637710A09AFA352FD5A239342AF5674C1A03E789962AC52E367AA3A26DB2 +A2695F8065008FF37768F504EB4A1469709BDD677463FB56994057793A2213E0 +40A78666D20BB7F0A9FA19546D3D125FAA5830D4DDBFCB5B8385C731A01BA374 +36CE241BB0BDAC2ABDF5C6159FE9004D64FDA508148C2E52EFD8411E423C93A0 +31DC5116B13B528FA885D80912BE401490C72564C2E884CB8A876EB7C7027A09 +B4737ABD4B3DE2AAD3036E9A69BC2A8B992CF64EB084CD1217D8C2BA7F3D1AE2 +FA30C4E8AFA4DAE7710D5E42E21EB42391D9032BAE202836140B05F25BD1D39E +CBEA5E5BCAF1134957757006D7F2D911F259B146A0A50A28344496A6EEE5837F +DF12865B34FC0BC7098FC48CD6A38FF1AB13FCA38F41EACAB40AEAE48EB38622 +7C6B8AF3FCD466FF69AEAC16C92A43D6565DF5544B72370F0B9CF72ABCAB260C +4897670977E6B4548E1283F4140151A22002FDF6B1DAFEA352642FF9F5EA0CF3 +90D3ECDFE6E36670919C0A89A9774F4D4A2578DFFF6F7A19468E11110E79E3B9 +96EEFE445EA31DB9EB1AAB2898DFE59074FFE0BC5C116094F5F90DA5586CA1C9 +83187B8843EC9A67F8E0B2F8CE60F98607FA233AB58862F57815BFE9A2353C68 +5FB99917F5159AB617883A326FAEB440CE8F3D89163061B1D267720E6430D60B +17CEAA9922E78C4313F32FBD296B9780DA937E9057DB524FF32E24D9EB5BC282 +E4E95F580227DC454D90A2B9CF028ACFCBD64740112D21C87BDDA6FF63631CCE +DEEA055CB8FFBD62ADE13B70B546158CC3C0C5C4C7F528CD5A3A04976F1844CE +E06F6625EFB715A911F68F7C9EA740BF81CC81585C76EF3DBA8ABEF9C801A5AE +C2F6AB80DA3CE5EEDF7E62C2E77B6F2D39B281DABEBE484C1AF45738D03FC8EA +B19D501569D8493A821F12B2C7BBD5831A5BB2E5E1B7A20E9539B4AC027F84BD +87E4108427523AF7ADECBF27E34449BF394555FD3A5CD93E77E07F6614DE381B +0647C6946CC965940E32CFCCEAA0EF8D583750CECEE9F6F9B1811AC85F969C17 +711F90E023E46E94F954CA82C5CC4A261F13710D1CCF3C4FA29A487C31AB3917 +19276AFBA2D30969DA9B57FD53D8D95188390EB1844288A88BF24C6E72DE2923 +291375527CE8B3ABA0007F94B9A327BB14FBBD979E2493D063744B00B9BE0BB2 +95782982D62D9F339C39A0DE21BAB95A8AEF01B9F859B96A9AC88A1B30E77F87 +945A0DBE672B0CBE378B295CB1E77ABB92122EF18C862FF81E46E033948A76BD +AC1947F6B7426C2CBC0C8D8DD54308096D28FD776A9311684BBB217DFDC5ED68 +748F6A8B594188188F08EB37CAA1642BC39EE931FCC943E131965A8AF3CF6E3D +C0AA67C637EF6462EBB26A823ABF3A45E043D55684AF6B1E3677CA612B8565A4 +4CA9B2A8DCF7FA3E632C1AC3D90D4B049008A746B9B1988934CF3F71D326EDE9 +26C2F488BB4FEC813A25B7C00134D1F13046D968BBD8C1183B2F38A84CEF0A10 +199A9326DF070A0CCEF8D582C0BA8751BF8EFF07C39675DFC6C8856CDED4FAEE +D36FBAE49AF8780AE0B0B1799C15E8BDE0180CFEAD7AC531E0EA0831D28B1DAB +7053E185B46050FE779C47C5567DC49EB40129F756F95AA1E5F1D1AB23E6B943 +3AAB440FCAA6D24B794B6316F7B448012D553602C50D58C43BD15FB4AEF3BE6A +F2FDF1804B6A2F03D29184164BA09546736F964267C503D9AB5330F1B75C43CC +92CDD1CE007C691FD06744024946027E1577A046133B0139679375D2A3F351CB +1371418735B0F50862BB71183AB0FD181FC839E2AD58986DC04641FF366C5CBF +05E092593F45C3E7FF17056AD025DE3A102964B8AB8DFB5003F8A59F1686B1A2 +5DF77E234D5A8477C3910A5341334F6343CAF64E95F9F8ED998C55B9A1E01402 +55A44B138F9B8D9E6E0E7C55ED63861910B575280A574A11DCC77D950FAB137F +81AD6F311C5E8D038A3E848F9DBB9995940DDD01C2FB82686FB155E5686FED96 +5B677A9AAF678A392826886D8A72BB022094335594338F33D12751F0482D99CE +E78C1315ED0566808A31601FDB81295B3D819D5E3373AAB3027D238448E82591 +AD7189BCE3C8F7E6CD01B1807C6951F840357388EC04DD8293703A8FCF34B10E +5B2BFDDE9219C46F7E1265E0B23E4451E94C8C883F731D843D49A37C346AF1D1 +A1A02E5647EEC7D93F86417C59170C49F1BCDF0FF84EA68E99018EFBE7A3B04A +4E791E506EF5B6E9CC81596A2F733C79BF95E965E75A42088273CEA162108693 +408A1CF32D257EDDE9B4578BB74DF1A532A548EA49EEAEF474538380C5B42845 +217EBC88D1B7E7833A2CC7A136B2BBCF1056C365A15D7F90727FED240F705357 +F70C17BD938B103EE0A637F6EEF47FA2004895BC2E53A224A36B8C7CCBC84D97 +3B030A367720F54722F61D17FFB0512DC24D78C31786CF048F826B0CF1A3A761 +B56F14C8C817D5AB06209CBE5413498A3D2606C31DF3A38DD069852329A73F1D +9FE5152DC88AA4F1B54F20F004B5AD0B7C0B9CCA2B1D04BADC8729F155AE14EA +483B0C81B45130F8F6383901CF6682A3CD03585E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.1: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 +7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF +20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 +B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D +68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 +D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E +26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D +F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 +77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 +BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E +C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 +30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 +148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C +E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D +E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 +337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 +0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 +472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E +A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 +3318B32500F76B1038FA6122C2AF6261B025BDD004EB9575D102D625A351A20C +914D7D79EDB0FE343726526D57A9A8E3916B437A95C895F542DF4685E4683CC7 +5729A4B41F0C51BF910AE542A1270EAD05AA2FEB6B95C3C5D068210D457D1D9B +9901C8946E0E7F47B23BA12743FE43A1E7DD18C56A6CC68C5E4A22180E24EB3D +2F5A6484A170FF45D2C5CDFEC7958ACD37C305412BF2757630252907C69FE044 +85724CFCBA4A85C02D4F9BD5A5405E4C0FB1EFF4AF9CC41401B5ED407E78B0D1 +5C0676C625A5277809A8DD0E44091329701D8ACE4A981EAA0BDFEB0B26110396 +B24839B5C59B1FE13EDD5D4B4E7893CD85A4712726BE26357F427EF53B157DCF +77791447877951ACC19D5AF1C2D7375BE53F8AEA5E0CD8A2A049A9A010F44016 +8EA0B32EE9732E0263BC6BC08CE2C21DED168F01F84901DCEDE4E7322BB0B188 +72E01DF47C8A09E4D1F8B9101D3CB4F99F14D73CE3C6513F42C07DC2A44B9882 +3E71C143105B500C6BCBE3EBC7822156F09B6218AE132A02318AB74AC975C384 +66FB129B40786C5A9916ED434F37B849432693B652DB8E763926F35877BD680F +07D3F37A1530A7C1CF9C4736CBD6F37D8FDA3F3E315920308FE8E03D444710E0 +0C3A7CDE50CAEEF26F336033C286CE4A6A49AE54F1C04408F05871C1A97526B5 +2F7D454656CAD1F8E6EB9F00E5D92F477882784CC7B353DB1223EB8CECDB306F +504CBDBD674580DD1F1D83377C7B0330174052B3F1BCE44D2DF40531E0F04EBC +3F2F78F2DDC87555003EA9221898CB0DCF91536992D09DAC5CC3B4DFB5FB8795 +F7440C4C5D2093E742A68FBB91B62BB460A94FCB1E40359DE96CA2DADB381C09 +3785CC885CBFD3F0FF6E071447ED5A66F709220E694B7BE98DBF8EB0C58D283F +D96B830E155CC238B74C746E9452CDF87C235FA620677341FA29030F6670CE34 +05E07A27695B172BE7A490FDA7A039DEC9A8F0EFFFB443A0F845B4AB29BE64BA +CF1458E617D8E4641D4498A63F611726D1FA46D041A06B0A2D6EAE84CCE159CC +F8E9BC776EF171CC1FC759B464BAD8958A3D59CE4A085E00FB67356600B242D4 +141C0BE6CF443BDB33A982D8D878E2E72542E415385E374924CEAA3DD022B523 +420011661E4C9CE26D00E2F6D81079BF2985A98941CDCAFDF7F79E2089DD82E4 +F4CBFC2F91549EA859FEC8FA310D80767A2CE6A6C22D3304BCE453CD627230E4 +D68A71441EDA836FB02466981BBCCA43EEE7D4A4DBB6DA80113EF317EE6F9921 +D7BE3711FFC06D672D6B9065AAC922A6C5ED4E083C781CCD144361BC9335BABD +CCBCFA8CA1A6604E4CA6C6E733E64A9C64F14B37B06DE93A26C00539A0556291 +7DB29A10EEB205C938E7E221E501B383510674963A5646333432D64CF0086FB6 +E6FC471089EB6A2EE2707E7A654680106970720DC03123F6167114AEEBE9D7C5 +0169A9E8229BC43262DE297BB5417FC747C017BB8EA882990446EAC4C5E748CF +F5CBC4B322AC52C526BD5C93C5E85B33FF89CAAF22280820FA37D7BCED9F5FC5 +FA1102AF04E97E376BB87097B685493A045092085DD52DA388E8FE37309BB9C9 +2CAA18ADCA556F3565A5A469123C9181E01940C8DC8F830AF7BE26B578E0A6A0 +27FB0050847EA0B904741AC997D7FE61137A40AA3F01F8DE0F5F395DCE3CA642 +6BADC8667F8CB0B55407C7E63BC3B2558BD7719689AA9A321ACF68902974D9B7 +9966412BE222A5F6FC314ECB68CF3EE36D3893AFFBB328175E91383508F7CE08 +E6805ED0207EF98D24E81F582551EC58F4E4B11A5F10567D6559A0BC43F52358 +9886589897A9B83E147BBEA3AD853DE76925F746F5820926FF0648081EA205AC +0DEFAFB51CF9E6DAD1C54EFB2C5CEA2A0B06BA6E9F05AC0522A90B9B6202AC92 +C62CA81D8BBE71F6E0FE077FE7548F8F0129115504BAACAFA7D3644EB7F21013 +1709728DD27A5FA0EECC81A5CB67A7B4D62A9D8936A8A6E66E8902FD5816A95A +5F5E93AF6C2194819E2AB7A14DED341A918AEBE313868E9157A0C181DAA8738B +1D49BA8DDA1D53EA12D2830FFFE678C90974B608C9D2B64D4F5D03325DA85FE0 +4BE31BE362CC2EF7E1282838E3CF32BB77DE7BAE06D4323C4D88552A20368E35 +4EAB8AB8589A08B163F4B52445BA621436703B14085D86D607B77207A8196827 +135612C8F68A3CE8823452258ACD62B49197693DBE921B538BBC576F4490212F +D3273C96234FD9CF8CCA91FBC604DEEF29FAB1886647242EECAAF9F3B459CA4B +FC39D1558A995007E983E56D8CC102F54BDD83EE9B6BBE97F14BA59FE7768CFA +9E66B67BE552295782D9EC921AF10827ADF4CE1F665B5E99B0AA0B1ED2347DD1 +CABED5C69A070A9E966B0AA2C446D72A213EA63C963F5ED259FDBC159A56758E +17FAEE2261F2218C991F4C01CCF0588764C50FBAB5CD4A9D82EA5ADCF0ECD6F6 +2D0DD12467C9E56E5AC86AB4464A943232BAECDB35FC1570755357FDC6448678 +37F495DF81FA6B14E7CEB15DBD684413186F6926925B4446ADA6B2C435EBB83C +1414A3510826C886EF3644D6D9EE1C8BC1D08EB8D2E89D0FDA8D620877B5476A +4ABA3BB30EA169105717428CA3FDA5951F5CB9F9F25D6A728DE7793771FED8CB +9A95114D62E9E0D8386B6A20BB2A29BDC89E9FEB443DEACD6BB98203C5ABC058 +F2A77135B0D1025FDD3FA69760FFACA3554FBA2D6D7869D57022D2DCF8FC0ABD +C42D9A8ADECD313645C1875D95332005853FF338502191CBA545D54F4394B2B5 +C01E590FA3E1A05FE533D05E30E8D1273EB1F1CD50598E681E01795F07DA7D38 +8B13CD980633D0F912417CF6A03FB58422A41F7805238131DD6B5F386F794F3F +91C1706E93A7CB8F4D52931039309CB64402A47ADD4D912B25733A83525C793F +DEB65C79DF5B5ED1EC7BE0983F109DFF1AB8352D96B09E79CE067BA9A97AAFFA +7079D65B671498382426CDB813C21C92CE2A7905377649FAEE71E92312E13FDC +CC76BDDF5ADC6C1638FA64D24B1A20E3050A16374FF6D684085CD6DC7813B8D6 +AAB8940A5B3EB2765FC3DB232A2A7276E3098DA0D4149334B9063DEE4CF08F41 +6DF7C4B9E3905497CDC3AF27910997AF0F439BD717BBEF97631F1D686B8CB995 +B04C1EFF6D9A3128781327EFDD83DB00CA01ED39D487A65297063467B62F4A66 +BC1F3157E11654FFB57220752926716D2D76BDF2906713B36329E84AFFF83EA8 +6A52BAC88B8BBC21C9CC320D5642C594EDB81BF5F274F8CC0D7D271022E68D98 +076B6C83FC3FFC03F68CBC8F50121938CECA1C420764EE42103CBA57C3B42F3F +97CD855C82C05EBA1F18A248AE741EAFA860C3D81E87320C2B4CCB9D8FFFC35C +D25418221C663185F5704527CDF5A3269024C71BD9108DD611CBCA539F280BFB +8C73A102FD9AE46CCED9AEFCCEF3C7641616FE4348F843326600D25C52625CAA +46CF38F2506B7E9F899F161E424B0DBC6232A8C6D7DCE41A88BC996FCD0C0254 +8D19EC9263B30AD1D47536068E9A10CEFB585B56158C9408E9B67AD217FF6981 +AE5C27D9AC1BC7C1D8D549F9F1C4A20F9E94D6923F9E3257D41AD5C1030A05AF +5B4A4BF214C8B2EBFFCF7196EB0D9AD416097460E744046356C388F5D61F4EAB +ECC0BBB95E4F633A0753914C5FF19DE55AF5C2128DA653700F15E1496F4051AA +E93EF416CD1709A9FCA1353D4F39BD52AB1F3FEE7F76A925A911447DB6643A53 +CFEC3605EACD5B77344E96A1616B23332C610F3C350FA60768CC69F7CEF3EC3A +E83F45A7B8B93B32E5E8E155972F4BF5CF94D2EAEDFABE1411B657ADD719868B +4E25F0AFF33C425BF0293FE25EEC2C1A5425B9EF2504DF462715978A95DB52C4 +E0C59A5F00ACDEC355348862CC3209BDA712504CDABA0450D9CB6D3CCFCA7AD7 +68F2216FF98DD2DB3C52EF34F2CEBCC4C918D6D12904EAAFE6D9864FB53C2A75 +0906419E1406D9A690D37202174F0BA55760E4C8C7C8C540DE62BF3C71FE57EE +F40813776C01732E6006878D387D2495A985D479241BDCC39FEDBEDC3EB3373A +3CD74B5CD0DF67B87B83211EE3FB7E3E0F724CF726F2F7CF4BA0FC99B4E0AF18 +61F2BD33C511A4F8A9125E123A571A1956B7959FD98FD69755D0938305A31936 +7FF05D3025920719E895D444D9D4466F815703EFFE9EA5207D63F3C0F637072D +944E9B7278E39155D500BDADF2335FBFA219630A921D49447005E52E90EA2974 +F47F8525EC53A701E015866B3A5D49D2B96FED76BE9CB393046CA16BF5E345CE +D57BA7357733D7E0A0256DCD83AA568E77CA62F015FB78B9A7C2FB34E9F88DBA +FCB509E9DE54324DF2A345BB6823BA139264676E796B67C89169E247371B597F +D52E59A47CBCF6F2D7A5B0DE6325CD92F25C05AC16B9E847E28C1F367D0CAC6B +70E56C2A4259532F8BE34F3BF73D0E91F28D4F24DCBFDDE5F0B03D7002A0806E +72A3FE6757BE5F9F6AC00F8A13E4D8A57B3DA9840FA78047F81338BA4A73719C +08867BC242BA625EA95036438F786A6AE9C279700B0F8AE6770D900A4A03EC2C +582C57444C4BE292C3E3F2D2A6F44EE0B438FC56CEA00B39DE2419530F5EC182 +2148A4F5B4051783480A877A9AC2DCDA457AA22CEAAC3ED8359D1A69FE4C5B05 +631F6EBCA62F5243CE6A12760D30E93ED9C4ED85434CC5CA892AC0BD436C3276 +E719027B7854CF43C64AFB7F1AFE440AA2BA051774B036DFC96829964D176D93 +7681181358C73866ADC17E2D123ED07025ACDDA6339D80FA49D367775DFAD732 +E18B657D720634274EFAEA275F986314F1DB4AD016C39955DB03E358D23E5F0A +B20BDD2C8992C9A37AB53E9CBDE159BAE1A8C0E847627F956FAEBA8E4C88D742 +A59B1802590677C15CB01AAC4E800D0F389792FC3F069CB1435F0C127E0EAC37 +E546970E12B73B54015B69D03069DADE098C845A023880DB7A999019DD9A5C10 +B7EAA4C08925910EAA931FA54D984519E680DCE8AA9F1BB37B86E390FF69568E +2435DFB1ECC0A76F5DA3A388C92C8AD2DFFDB343AAE97D2297B3A7DE009DC317 +40659B3AF073940FAD177CD36AAB3602A1AD2457672FD78660CEE647802E9619 +A95A171C59EB6659B736D84993108E3A3528664ADC37E421FC770CB42B1A0554 +4B0231840D50BDCACA9FAAE04CC1E616E83797026A1318E19B171E7ED02C58A9 +97C47B0EBCCBDA62BBEE544F1EBBD941CCC562174DEB2C0970C1F46A565D781B +ED017D747F56E4B8E95F24F25C9E044BC1796C2D677762D59E27E79552B8EBD2 +7A6F3E6914BBE29CE44C1611CF15320D57121B47C59AF4FAABAB32CFC01C6FD6 +9B8ACABAA6BE1AADC1281E063B365AA0A7347336B572D074471FEAA3DBEE5A0A +E28002D8500F14909565DC60061E9DE5100194D9D05F5BBD1C66CDA1713431D6 +DA26B6FBC5F9B6862FB974F0E55938F8C6B951593BAC412186F5AF2E812739D5 +A03EF04CF484523C95A741C3B51B8D74852ABEA8657049535228C3647E9BDAE3 +622CA31985132362D3FBD1D65A9875AFD0D453A520F645BE3BA48FABF53D6D7F +F4FA4A09E300E437C19142740DF86801AAFBB446E857DB5E69E0BDD1224C7332 +924A21B233E92F1BED79DE12AA891D5518CF17334D00A0BB3B9F56E841A5D4E3 +80E42693D170D418127AEE7D758A501E34C1B434A8012BC94E7C5F3740D2F58F +96DB1CA4B41CF9670BB76B0122893E8AAEFD7E2B255509A0C3B09D84334EF805 +C5473E7C2FEA7AED67C5D7D5F7AAC1D49F4DEC5E94A4AE87C9D17C114F71DCFB +97B84C764BCDD59B13E100148C68B4DCF091145086AFEA1BE28F5147A47B4795 +3A60F6E3C2124C4102103F2EF933C6A05B1978ED95DED0381449DEE0A2890766 +66AD30C5398C985A54F8251DCE7F7D675EB6969F9B158C680DA99E509D1F446F +0D69D74644F72E2D4CE98E964DA7CE4F834907842B4CB6053C029CC7DCDFE5EC +DBF8898B1FB9743E86AB0524C182ADEEA78119762C7F01D93B3D06D8BAB22FEA +EA21227B12B6AE49895607815CAACFFC6DCE06EBDE4EB89BCFDBF9EA53F8DDD2 +9C38CC226077455CC02411DFC73090D4579E68C4E9B2944701E64B2330BC0852 +FCE0B86ACC6E14315312F6D9D27AE6F45362160331C1E9324386EAAFA42C273B +2E3A86A8AFF28BB15F37E006EB8050C51F1EEC39319EE91C8DF452D31856B3BF +B35EE1CD1D484CF31CEE9AA4AB5CC08D7781140AEF44E67F36639D40761BFF30 +6C13FB87D3F99164EB7FB7A0DD947C11D896FA6BB7945436E2260EAE3E0405CE +BD760023BC3AE6D16DFD44EF7FC446A31DAAEEF9F46D78F89CB778DC7F3D1F5F +9622D3788C72FCC307B85C892C1A53EFFFC750E70010725D5D94E5CBD1B61426 +14A366B8D542F9C0DD1799206BD37BA61E6D3C073FD88DF142D9C3D9AE0ADE9C +D8D7483581C7836C979EA816B5C9F7E725D119DF7C83D5A2F8FCC6243D380C34 +3E49852251BD6F2D7B6CFE9ED257948C25DF3118111C5215C37AC1616F8C4EA2 +E0285698A1F9F953F374D68B8E01553D5B4CBB354E8D37AC55C8C596678081C9 +75D7AC1168BF59B7DF5088B670E10011EC15CD7E43FA23427A18708A613E2159 +1F7313AEAA360D729FBA11BF7EB1B49490F87046DA0DDBC4D5AF2AEA5447ECCD +449CB28AEB38F39A70B27151388A5BE0B6DC6A0166E70D1D5907A204892E8CC3 +C1A1FD3F4248619530CDD48D8DE663B19192544223B7D952DA788EA7324DE02A +8A5BD917249831880E6EB84D94C28CF2FE8EF24210451A2CC4456DD827EF8E72 +B95440D3B4E3C6D4D93F21913E3F411D1B5DF381CC983F43672486EADAC9D6C0 +FBA62AD4602F1BAAA2F49E94B69A0A464B43959D8ABB6678F7452B5A44665F74 +5FB8F64752C0E60D9B6B1BDC28D3818FCE37158944AF9EE6125A1FF9247BD993 +C026316E6986FCA3F7D1558C923F0CEABE652176DA56A49329973F8E5709C428 +26CD37E5517710DE625BF642EDD8D1DAC9B7B0D36190F446D99887701136C4DD +89091502F978DA69C4F4150F077F5EE77E8453063F0502CEB33478782748A519 +01D2A300E74102D5DD3EFC135D6A142217E5F22296863CED10CBD38257E9E83B +17C1030715D375CEC6D149642BC50A444033EFF550EB346CC64B1E39233801A4 +997866DE97BE21D9967389FB4A2B39A9F5EAB73B9A36AB7E37861E23EAF0EF7E +8463FFD79C38433AC0E63CD67A9D7CE835AA25CF92909EAB0E70D2BDAF4018C5 +ECB8D98E8A647EB8BBAABA4AE130C2BDA7CBC1F8F26EB70B8484D70F33830737 +BBDE88359F09476BBD6F1743C544F30E11DEE728DB0607A1EA183E3BEB1CF94E +73CD46E16343B13831909499B291B712BB749A376FBDB968042497138364A66E +394CB0B37135ED3A6A0A2A93B4EDA2E8202870FFEFFD26A78F8D31C5AAD59C47 +CEC85ACF77B340A5D0F93AB0E75F54C25C8F0685FF58169D3AE759B8B4869467 +291303B20529F6811B267879B06376BB43D987C5DC7B295DDA27961DB73E012F +981192F6ABB391821228B61E08270C5E030354A736E6149ECB3B387DDF247E13 +2A96F9DDB2A385ED93575CA9885DC757C880969FCECC57E4184B44CDC324FB24 +9161D894444061B728699DC54CE2B8F71561BF2FBB3431C1424705D5360EBAC0 +7092D224B79DC24A5825347157B533A89C8AB759CE33C13617C685375BFF81CA +034176A7340940196D4CBDEBE1E5A73B173B609B880BD7758DB6BCF2D6130351 +5C0153B5BEE6B08AE39BA07CA17DCD865DA8CE2176D86DEB5AD2202FEAAE1A36 +3182F60D8471E09C6BC3566C7543190F8FD85D2B0F6ACA6CA364BE0EADCB48C3 +EF35B897FAA70A8062AEB8610D092302723B476320C4E1899444BCF0C0B7BF81 +9E31215B9D3BAC548CD3DCD92AEEF29DC0C0E8DB063F446D0BD36DA181FD9C73 +C5D9BD4116449A0B5560A1BCD50C11F87797379B19FB70CD50CAD6552DF81E06 +B49F5365D63CF885DDDC6A49C3D1E75E42654451B3B232426D169E42C3238CA5 +CE2E5BA0A1917C69106D714E3F86CC261D58B19CE6F1F1DEFB9AA9325DABE8B1 +3B763A5B5720EA8285560C857A3E34DDD805970CE8168AB3360C3E71CEBE1811 +96B0C99E6C0BE400DA7BC384E99A3EA43325232D5F40CCE8C955924BF0D39466 +C27D857BE94A12117A4A89AA9153ABEDBEE210B5BD9F566EC066CAE8D548CBC5 +8E4ABCDD22AC6FE79DBB194905DA1C6601C7CE67DA2657C4C1527892C97D8EBA +1EE90197513859C5F99163D802DAA9221F96BF35F1006486BE4ED43950219B9C +C6B86C9B314CC1C87820F4B6DEAEFBA4F2B5DFC1DBC114DD467B9D452FE7F2D6 +142119C23737EA34368B449489135F9CA052DB22B5594AA4983FDB7FCD9C8EE0 +F68B5D27151D54C82D17011D4ED2FBC6167CB5B0767BEBCBE181C7480F984032 +968D03D771800F06069DDE864E835ACA60AC928FDEFE289647D559AE3CD19500 +E534A4A1D010C35BD8FCF83C2010AE5ADE65323D6AE65140B1000FC2B716E4BA +F7321279EA9E7582C8F69DFA73436515150F634A66263C48975B266AE6BE19CA +5FB1C51CD76BD1E92950D9C923D91E6B276FA90F8DE86F211FEB5B898D661AB3 +8B81EBD14533F060E436B636D8066CCF045AACB2682991CAA20A42C01086932F +F59CC4972FA7ABFA283621D03A50BAFED17D287447696B88550B1FC94A4FC9F2 +018A0B73B99CB807B68C76EB227E15CC40F31AFE14900ED94B8CBAA6E499FE93 +23396B7FE08B116564B3BB6A02DD3759D8FA2E6C2784C068941DDDD42E22FC19 +83099E0636F47B242FB26F581119E891C82DC5965517DB3DDABB19D2F5845FF8 +49F10CABD7A2076120D08B27A3DC954976B71EE181BE5F1F5FBE93097B2C1C35 +CDB6F746D1EFDD7E1E94B59ABBC71A0B87B7D1C724E81047A95C1142AAFB6200 +9475A1DC6E14FD42E7BC2980EF7C5532E0E6C9AE9C848A57F42439006FB390AF +29639EAC6130693439FBDF281824599F0E0F4EFCD9E4C2C4A9FEAF353D8C7CE9 +7946F4E5EE8725B924A2F013C348CA722A3ADE32557F175F6D5E3A748F4AF3B8 +AD86D55B8539BFA5C514291BFF0A4F0A339B808A94010561583F1F4D55129A6E +46873035DF4FEFA423FA4E428056A2F2057613696C88A041D81D0C08F9AD85DA +9C0480C8E035FAA865E5D788119F457C3BB2FC2CABE3C4F2FFF33257AED6D7F9 +A3A1B8514C4762E0A1F37F570FE125DD805E6413E92C9FD60F6414E20461B616 +2471612799765BB9F9496DBE0C591323C8A198BB8E7851BEC63CB06DFADCE548 +152589887B7E31A3EB33FF2D069E31AE2B105881377DFFD5B5A02622E36BDBB2 +6313E8F9744A5CA6F552F5F314A0CC4CA858E879ACF0835E7CBA5F66020BD5F2 +2ABC7BCE72CAAB9D536717C4A17AD39C2CB36657B85C3F519666B62B5ED0131E +41BD3831B2463659017A5ADB6A86250A1C4130E6994AEBE1D1B3E5E5A92FA73C +54E2FB2C8053C71F1D5D2DB72EC07B2F2C3DE0EB8618A679227988F05424A4BD +C308C56194D712C295C8669CF11D737D7EE2CC60466045A32A150EE3BB27A3E7 +5A87BE8CE1C18AC0F299DABA3E732C7E78D8841E2DD596952E1F8D03B7304677 +68E206737C46CACD88A9B30276436C4C3C8EEC851E7EF2346D266BF084BC7B64 +929D3FBCA08679BB70509B9D204C3FE9B063A4E3BAA78813C49D31638ADF45B9 +DFD7C8DE89BEB2828DDC3677B3EEC76E57BE284E90CD3F7A6D1AC44B8CA056B2 +5E5315D88F1E0696AFC7605D535C5266ECD451EF8D210292BB4F4E29485F977B +19AB3BCF5E47E163AC4565259FB82F92E129BABAF2C7DA2445D736CCBA83CB1C +F54570D5BD67C5F68B8AF18649AFFA26268EB9F912887A42CFBAADC1CA4E9B02 +42ACB4B7F272DB81321B6D306478D9223E0BF4B3BB2A821BF07C9DD97F73E761 +5C26CE174A45D3D575F8B519F6692FEA7F5742AF3588D704C23F4F40C4BDDB48 +A941D6B19784908C6D03C1F0463BA8D00D31EB991D387C063BC99A31FEA107B7 +5194AD45E037646FE7BA8B2BAD19D47A6CF66D4BF1DAD3B604BEF519C2A3FF20 +C5C85F739E0FDB1E72B079117902EB0366368CC348E6273B5BAD3F0253D6F644 +96A71DA9537CB0FD1A6576FB12AC32A623DEACE9A909EA913397BD198C0702F4 +19B0943BBCF8DD7202F4370C2182A94F1169F7A25682945592F12E9E6FE2CE81 +1A1F152DFA151D7AE181C60026FA688D823AA6CC79290D7C9131DA5DDB45CB39 +7BD765244E40C93C2B17E1EEE5AF10F76EA8E4C5ED6D1B74C432BB1A46B449D4 +D56127DDF5AAF7BF24B2EE267292A5A089E84A9772D87EE2D5E0C013BEFB7E3B +5023A01481A3AA04859B1DCCC54049FF4EDA30162044A1CC40B751AE480B090A +80F5A58250D164778704AC5B38798F960CC32DDC290C75E33DDB4F8BEDF7A029 +E24EC4AAED86D67A5275D462F35006C918DF4FB85F52570555237BBACA64784E +6B3A34863C9E2C97F9D7A8184462E552D2D03D71A5CCDC0003A680DA1A042F20 +4AB96497589A525761DF586B2FE5658CF3AB87C4A452A7BC7DC7D027D2AAEA11 +1AA28A42DDA555AA09290DF7C6F273094429CEF2C6DE53FFCCF55F3D1028F935 +8423DAC334702D73AAA9C34CC53E7C5234216DDCE243BF6F0AB4FBD5E3A9660B +ECC4F3282D75799D809A54E1B7459F764F25E92CAA44C455A104D3BEF8A70292 +CDB279B2326540FBC2BDBDE1A73BAC2FC38A464A308900DA9698614F64FCACBC +40D181EAD7014C3891E359E4CBAB61C30FA4F3E8E4BE20E2144D4D368F225003 +260122DC1C09A98DFDD96B3163F47D6C102935D7F1B08732009F1B707B3C9DBE +8EFFA6D497CF1E501542FC1A5FA4B36E60DE763F80C6C970E5CCC4BB95FDCCB9 +031045ECDCBBB119B5C0F668C563C2D7F638B9B56A0FD3F2C463D1B8BEBFDA3A +2B72DFBBBF93F68F917F914E9C4FF0C02339A2319590A53480E31C7F6841A491 +80DB1FB6EA8DB26A4BD7DAE14C537939473D8018CA6FE0B676C1090D5F2BC198 +E526A5655A2FCA3014A7CD3655C9C378CCFCC9A8BF35A99829DBADE9FA1E7CBF +C7FDE60BF3207999267A3B3AC88551982F0BB9569D4D5B57304706657336F94F +6A02933AF2A23B930BAEEA5EF015FBBA97249A6AB73D362430A8CE190D861097 +1929757AC73A517A42B858F06FFD40CFE4D38845B94C4C4F9A178911D369C389 +4A6DD604D8C21C08567CC1A43886433FA53DD2087A028E06D4D580AF800C59F5 +ED261A8840EA452303892B46ECEDEB66CA4D3D33DE25629214F08FB9760560CA +973C20E48975D0FE19D43346F5034FEDC317A1F459B94AA5EB11AB1074FF82D1 +CEC86A4314262F0109E1AD306DF4CA87E79235D1C244702B54A749DAE1C6C992 +967BB77512D82DD92D54325B85DDDC6B393CED65E5AD8552695566E6A3A531DC +0F9A8CC8172FAEE5D5866E9D7791D3FA1E925A31C10267263CEEE93DF75E7FC0 +9EF9E912CDB745AC92C0855FE60D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR9 +%!PS-AdobeFont-1.1: CMR9 1.0 +%%CreationDate: 1991 Aug 20 16:39:59 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-39 -250 1036 750}readonly def +/UniqueID 5000792 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FADB679CF58BAFDD3E51DFDD314B91A605515D729EE20C42505FD4E0835 +3C9D365B14C003BC6DD352F0228A8C161F172D2551CD1C67CD0B1B21DED53203 +046FAFF9B1129167921DD82C5964F9DDDFE0D2686875BD075FC81831A941F20E +C5CD90040A092E559F6D1D3B0E9BB71733595AE0EA6093F986377A96060BF12A +A1B525CD9FA741FE051DD54A32BECD55A868DD63119A4370F8322CCBEC889BC2 +A723CB4015FC4AA90AE873EA14DE13382CA9CF0D8DFB65F0ABEDFD9A64BB3F4D +731E2E1C9A1789228FF44116230A70C339C9819676022AB31B5C9C589AE9094B +09882051AD4637C1710D93E8DD117B4E7B478493B91EA6306FDB3FA6D738AAB1 +49FBB21A00AC2A999C21445DE3177F21D8B6AAB33869C882613EA6B5EC56476B +5634181ECBF03BFEDB57F079EACE3B334F6F384BDF9D70AEBD592C8ECF21378B +54A8B5DBF7CB9282E16AA517E14843909339B5E7C55B038BF3BB493F3B884A1C +C25F9E8FB912CBE23199AD9D2C3E573727701BA301526C66C3617B9514D6F11F +11930B1D97C17816C85B1BFD9B973A191B33CC3B391815AD14F1CBE935942AEC +D4004E6BEF379066FD72209DC88D2E634E79BCC2B98C766CBD92C561F2703F8A +109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 +3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 +C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7DFA3E3E18CE +63E072E2EFD7BF3769BADB61CD818E402C55D5B239A8DDD7A8BC41B57AB3EE50 +131276C8DCFF04DFCAE55A8434BBF3F08D6C1EED04E9F93B14F88F055F3E3892 +459B28EE8A5D64C8398F6822D9D327FCAE4C2ED8F3A87E63E91DDA5B9D704B53 +8DA806B27327A97238E593EFEC36A5C40520EFFEAFC4E1D93CBC519D168F538A +F95D93E30F242082FE0F9BECB5A8557B51C0990E1166E77CDAAC2A30F1C59FB1 +9DBE0E2C81EC1D428F5149F2805FA0BDB1F5B4E9826A66228E1A2D15B08416D5 +15F15E0C1893F4BB16EB1F1C0F21481BEFDB595867CB165B1DCFAB5453BAB2B1 +7C114656ABF30B35452784D5272AE403A3255961A73427BF7B075DEA7327FA25 +8CFF1349F5FD952DAEDF4F80E39BC3C2ED66978993546F8C7E51E3A3E94488B8 +61E40576A4F38D4549A179FDEE124FB9206EE1E6F7BEE5C7332311EC56D7DE64 +6713D0A974F00C25878A26F289DB0F6C0DA4DD7637A5A2130448D79F9F629997 +A8870EBFCB2B757431825C169D0860738E6194465D4B9E30D440C15624EEAFB8 +2E55EE46F106C67E6988CE3A954A7AC2C079C053BBC0B6F14F51F0D8C47C26E7 +BD5C2AB7344039CB1497A1C6B4AAEC09D5819E68615126B36DB8B38AA1B21BF1 +418584C901500A51278230ADBE0A20CC80388489C1D8FEFC4F429BEC0BB482A2 +6AA148AFAD67C60E0E948385FB5053A53259ED6AFF7C3A69701ABD12FCC81CAF +BC8B2307419AF854921223ACD8BD5437E5EBDB4344E8C4F54EE6BFBC097797C9 +B3046C039448F8D28D2E0783C6E17E351CDF4593B6A94742A6D31862DE266FAD +ABA27F15D07B7637F3379DE52B13158D21B1DFB52D3647665DA43EF01EA7A2F7 +A70DA2F946F974F06905C6277C7C010E51B6EDA2E49EF31B4EFFCB167A7CB77C +C7FACFCF12DA7CB9E0D0301D7D24DCC7603A4ABC412C8F615FF8E6AB47E9DBC6 +A8603C0BFC32B1A7677CEA5D9F5FBA33F7BFF3166A6BFE136B869E6870088613 +6C3C90B7137F4EDE3CEE34FB0835672B45710FB6707115C4F77F582DEF5A3C1D +9E65B5EC4C75ACFCB783E9AEFE62C543539BCEE60B0E4A9B1F71E4A49E191A19 +5B892294617A45638664D8465B1AD25F797B041F2B70FBABE9D223AB33AEDE26 +8D910D45A09F42A59B94C54C410CC38C67D92BD90B4491ADA51CEFA5D9E34BA8 +70D7F052C65C0F0A0BA71E7AB7355714E8215A57EA72B5FB34342C3149DEBE4C +45C2F595F71B761BADADCB10D5C307FCADD779F5DC198DEB13A342581813E1E5 +E8CB4F70F64A60432C433EC4A4E1F2185A546026DAAC6FF19B85BA7C05FCFA54 +879595A44C7EC59B443E4E2AD287651496FD52B4CB8A0D69736CF826C4639C2E +392FFBB02BC240D9378F8F1169BA8D57D1549D27FDB6B5B2E7EDD1703EA81921 +F07F8058B82C8B94E59F1B40D6EBBAEBD215B362D7FA64626BEB9CCD2714E1B4 +98CCE6F04215C2453578DB8C3C855BFA4173B05701B87E54430171062D503BC7 +7236AD54A2AAD7BE390412430137625BD8257AFA11920208096F2F5665D2A37E +FA7974CD929F4D115A2A766EB3065F10D783DB4FB0B07B398D4905829CE5D1F0 +571B19809DB8DA5876445D17B6ECBEBE9675842076EF29334FC4003EE6795EEE +8926B560683E95B82FA3308BAD522EF20242E1807FFEB5B5241D5C287F1E1D3F +089FEAEFE9ACDE1CFD9D9F5A1C3A8D3B7C849C18F085F94641D053F02CE0F3CF +03F6B4CA6352813648DD86D814D4C86541F27F8937B52F21797350386E30966B +FFC6818F8C1697557F521F32C9DDA6CB6668A17B5A94666ED867C6A1FEC254E5 +9BD02F35EA56C7778B218E6B3F6FB9F822F8CE0986CC21A14B3D3610294C0046 +74B5C4CDB227CDE6408A8BFD9DF94F5A7E86649E5F08555339720762DCCCFC93 +8BD6E2CACBE2AACE78EB9720E7A61ADBE61A400BFCD5C4549C8878C39AD645AB +B1BE9DB9174D601E6B6B2CFA17DF38AFD7784C90B1466130D5EEA334A748449B +29CF52B9E7FC60F15463132F4979F603D7F2A1EB9F6A7A80A6E02754CFE31EBA +118881581E976BD6E2949AD242D87222C816DAA183B0D07B9A45B3E3CC11A4A0 +9C94CCF90C829CED22B2BB25110E9F424A76DE3069D68BE120D3AD9F6AFBCFCA +E1F50AE2EC109A662C311894F1D2A143A6CC62DB509A8AF53FBA164CBC529A03 +D8479BEAC96DD5FE822FB6306BB1B7BCD354446FB5A0B20975BA0D9D3C3E6C40 +05247661AFBD81C029625C5AAF2EB1018EE97B8752D4D5178CC05AA22FC2F9F6 +31124A55227A08E030D7C5AD7BA23DAB34F2766BD2C265CF5256603BC3DAABEB +B188F224D3806F9295341063480EE319DC5D58F4F27F838DD099F0674EA583DC +A655545173D48DB7E8D3BC8D45BA87DC3FCE2C70978793B75F6210F6776605F7 +9F82536856B4AFAB70184A1172CE3C8B356D696C8D0E68BD327606094B234296 +2FDCFA6925528EB1E23CA007824BF682172515BFB44A8E79612A799BC2C4CC5E +FE5027F0A143B8DF716ABCE50CBE1F32D0BE9E1712F286B197C25D444444ED76 +E51B63D16739B24E5F301FB38AE80B2180FD8FE5387795BDA231FC1179331DA2 +F253186228DEBC67EC0A1E9E8D42E1728EAE4BF4665F5C49293E398CFF4C5766 +7E00B6F75FDDB4983114DD164D42602EFA865E7EB0773ACC36030CD55A369A19 +E2C5A7DB609749C4E7AFCD8197902F42C4BA107DF5CD3FAA0EA5AA5E928C2C3D +6CB2273C1C3625836C79B7C0948BFC6B7B8B888BFA9B420957A57E01105A9C60 +7A57DAF55BE1B63D39F3293F06A586BC5ADA0224485C4B1DD3C4D8C776879303 +9DFCE42A1BF41F443BA1394D3C62D2EBD657FEB318A52B4F4BA63BDB4025A7AC +41C271EFA7C164BA06D92D3A4E6F6D7116BCCF5AB3F735562DB423F4BDADF275 +730645CABC617CD8339CA528DD5C671833A4C13BD744FD67B414C09BE70A2F59 +92745FA60D88B4FBDDA36FFC4C3179CF1F62F6BA2960DEAF6730026C50F2D30E +B710E2B77D9DEBEF27782F5AC35F142E863407D8EC80AC986A42200DA8B7C9A9 +BCA966127B563ED701A0C5FA999965DD5A3265A45688FA70F75A94BE49012B69 +B5C0C2D23EB6530BC275EED5FDDEA5B5439B6171ED36E76E261492717377E9A0 +3C4EB9985B7D15B7A3EE519C857CCEFAEC5B4C666C8F3FD3A5ED68EBD8FB3ADE +0A298A04DBF72C2A27A28726A8242A137AC8829FFE20842C5F8F35F33CC68135 +990852728D410C5C4F390859F38B7AED1D123F30493E4DD5B7847473B670985C +2FAB5766E5E5B3F07D2DE17394F365483880BCC2A2E6836D4C1BA9AB280428CA +50D23D685E2BBEDBCE069FD3D11F7C215426EE438793E57D4F39A24FDFABB3C9 +21C5746BB857FE49862DE205C84C3A8A13815CE21A00A52A9B1330749A134E35 +A54FEBA355DE3E0A042555E9E389D27DFDE57E5310ABADAACA14C7B0E964E08F +5BB207650FF80F3EF1E2CB23D6811805F10F23BC37F0C9E256DA454430A872BD +4075CCE6E9717DBEFA49FFBC06D693D558063C7B47F2D7E0BA0F59239DA68573 +D23F428FDA1991EB5E317049EE4BEB2882016CC6FA62DCF760665328DD5AC092 +00C51D2A6AD65A37F20F12EA539B704533C5A7C3ABE89EB1232F02DA156DE3EA +0A841BD2C8D59219DD4CCCC6BF3FD73E60E387FD6770BE73A7B5F6D7F78D481E +0E39F51F41E7D049C8747F2FD2FF936682834EBBA3EA6527A470487F9978EF0B +69DFBB987958BDCDD7B8D4FB28230BBFB9FFDCA490CD144BB5412358251B808A +A3DDE020B244BE69DA6CC61A69C8CD5ADA0B79D5CB5C9ADF6BD3044C8C86C082 +9D348B81BE6FABA5369103BEE449DD9E10EB68B895A7837C2DA4AD79E84E902A +449F89775C1B0DC88758709771CB1A7273EEE4C6149A1A0736F4DF9EC823969C +A00DF4EC14AD56632CEA367B281F3A7628D13EDAE2FB4E3DFC0B7BE7DA87F87E +F46E9411FC00C4B7B7FFC4855BA849D0F20021F7AC18ED93B6DFEFD421C64FFA +61E0F022FA27D1B9040D13F83259F63DD006AD379B8F5E10CE73F632660E520E +A0772D73773326583ADAB686B8FD3302DDF78C07376135850145BC66132A6E2D +93DF3A518F83F0390361BA40C02E8394A3F9B108D38D34636E7ADFC255C898B6 +4D6047335489EBE093619455A9E7B34AAFFCEC599BA4119DAF50CC81AE88AF7D +4015B5F2EF8DCE32310AA38AA727BB208F95787B5A382AE308F520B473EBE6D2 +EB843A563EEC76C10D80613DBAB50E022045854322552BC4CCCD33F57671A9D2 +048CEC4B9913860F8CE9505A403DE262FD271DA4BE8FB2BCEBE4B5F015B9D435 +F605EE341A8E8746752E0DD6CDA01431EDDDFDF58F6AA2276A1410FABDFE9779 +812922E63FF707D2FAE6DFD34CC44933BCFD9573EDA0F3575F2D7BC65C2F38D6 +1A43FA675F073FAFF5C7E0BF8B9F66E58D5ED2D15A6A6B2F7CE42DC5C1FBCC7B +E40D616C34A703B225677D3E7B2F8150EC055ED83D9134C3C01718584C45E218 +105B5AAB06A0C489192EAF746C53BED70846ACE1E36B56CBE0E0CB35696EC725 +E443546886B0514917E71C24376E6122DC70F664EDDC0A09013BC81B8B6F3BA0 +918EDCA65B7F7B0C038A9A21A1A9DFACAA3EEC866ACC71ABDF131F9693C17CA4 +2E67A91076A8DC72881276DD33D35BFBCA8E1343E7E450B880CED188FC942470 +433A8104D6FFD1376C422FDBD89A40A5979886274FF225E9284308D37E98CFFF +C3B63AD4D03246843138BF0F09B5701F0B9F4EBE597F151A8CF11C4BD423C2C6 +B833576F121F4113AC497FABE7B3884C359CB8D534856AFC713B3AE26446D381 +C3C915F6F6F6D6018001E8FEA21C60E3484653BD238732808D654D5BEFE0D46E +6125C8BD72FBE692BF9318BC7801E7BBA87E05F76840266506C54072566CFDC0 +8C3EDB387B3E191DFDBB324F1C37AD0E053EC503E7621918491F84F85C24ECF5 +576A6D812DEFB85619E8D61434A633F1251122C3F04AF582F7B14B93AB91FE5E +D5D070C85750912FA1923DC24ECF8995836EE232562D5FE3FC2F24A4D2ACA68F +BD323F1692F7D951E09F13C236074F52A5BCFCF5AC2EAE00519391E0CF6D6E88 +D13295EBBCEE8282B7D6B19526330F83CC54100C74D097500A722D3D6A07BE95 +63B50DA459492AA59BAF95196494CE992D6F30985E1A6C929B2947C91F51EC0D +01D45180EBFB7D3BC63ED4FE7E865DFBF2B14E870290E7FE1B2A9D91750D5C61 +DDFC4DEC2DAD98B608B2F2058A92CA6C3D5FD7AE388F25BE1118B6FD90198D4F +6F356D01A3CD73FADEBC968034120B2A08EB3B7CEF0FD31DC44D83109E7FD0E7 +D1A698FB8175C65E11406690FCAC945E53B4E0E1B17464195C62DC32B4CB5269 +3D9917CAA17343479D75B5156244312D1931DD6CA6A07063E99F2C62E0B80661 +76A33674AA7FD869A408A8AFA3555EC75D24283FDDF7C6C72A14D040DAFFB120 +234923F07BD1A4FAC6711E87926392799A304D500CFDCA7233682106C714BC45 +09630B201FDB43788994BC22CD99133E8CA129E0C5B73FD1D33DBF46C49EC385 +0D824B45CECAD29EC520BED06E54BB33E9B09D8049AC30D65D6F8B63E2C9B7D5 +23562368B8A599CEC00F5B2434A667C707F7B2B6B36DDCC2CD59A3DBD676947A +BF2AD22334E7691893FFD94BD63141D3FB9EF9E5258057899BB7C4FF9183E47C +9EB53C54209A9A4A805CFD05468037BC3ACC812748665C99DD49FEE5E2AB7E3B +A41EE7FD82F86161C28C3C878F986D3C1B775AB1F7F7741DF5C751093886B8F0 +27DE5DB1495CE22D15A58852BAB1524BB3845C18E63B00827697A5D3FC562B1B +94A856DEAD8E305A9F3BD012EE211BBC7F114FFF48015119760B195B6DE28E6A +EBB79D9A75C4408C81518B7C3DF54ACA93FA47014BA7A73CC489EF63E4BF3753 +AA1D134CA33D6AF529F2F0647083F0141BD8751DE1592FF64A2E641CFCCC9818 +AF316AF2F571E6AC2CD8E57C38623C0E3845F28479072CB8FFF1DD00FB4CCE74 +9509646B420DC6619B508413C53E389E1F5638F3A94D8C017575175DFADF6775 +E35D523A88D8B545A784DFEE3BF4FEAA925021E64A928EB736FAE0A7954E52BE +73C0DB1ABBB5766887CBCA6B1538BA22463F4047AABE05A821762302070D095C +4EDAB4693E9297483CB35D1ADD782CB056ECA35D30F19419D58467D366F118E2 +25C5A15552A945876049C51C9B20DF162738879DF1F7F9C2926C3D254BDE01DD +208A0DA4B375B3502D4B4361B5A12F473E7660C83264BE42379772ED3A7BFAB7 +A0E13F632AFC25858A7D4B0862842F459E0094463E6BF69402C8779C93D68DB5 +BF1B5ECC79F2774C622045ADB80CDA15BBF15CF7D80AF5E463FD645D75AAEA4B +0BBB342ED49BA0DCBA9CDEB26FAEA20D1E4EA32C13AE94F4DE086ADA496541B7 +94BCCD6D6E4660D7104E11F6EA6CEF4F42FDEBB9DE2C0E43C61107909E4C6FCB +0CC137B3D5F1C692FD587821E3E3D889E644547A28FD9BBAC840EC7E2A0E9EC1 +5472C2F917598EF668DCA1B409A05080D08BFDD45AB50391BE7CAF5D14103801 +F25F5C1E2C1FD69EC4AF68FD2EAA011CC01D6C5BB537B4C001C7D58E49D0B4BB +3B81C85112D221BDF816AC2AF829AF31DB37438ABFB204AA722F5D4EC30F1F11 +A3520DBBF04212C336C6B2EC9DC1DFFBD60C52FD39B5B0864E02E57BA0D4B584 +FE3110F64CDFBFB29B424D4803785B1C3173511F4DEFBB71256FF9F95757BBD2 +CFFB9F07FBD9082499488DCC75D42A736F28C1ADCDC11173DF73F21F3504FBE6 +74E1151EFB2719D8C12CC41AD1FA0C197CC1331A182763F2AB292E5E3A2688FE +B6C76A12B2671596756E5C00E86C71BF96626A81616C7D0196BC44F5F5048EBD +7F6AFE9D281298778FE7478DAFFE60D8B24E2EF805F5CB5D1B2E8A6F5AD7BAD8 +EE1AF675264A8FB7E005564331CC811C788B7520B78F08B9D58383070AAF1DA4 +096F985AA7106C600DA50F762D61418620D1B78BE2D73A8264ECD241BE1E5BBE +A9A8EF0F7345C6754954EE7CF22A152A299A83D3C3C3CB8150B11527F50C10E6 +54468BE6D4DF727F6B71DE9DAFED7AE8C67E51ADD09E3374F071693DE23374CC +E7E8E89C65F6DE6DE6F8BCF15A9FA8EA5059ACC9C16B7AD9056D9429E07978DF +C2DC03DA3345063F53EB443BB493375602DF07AA28F9716B30A21FB2FE10A628 +2F1C4C24E6C087B7086B01777D2839E248216BC53BBFD4E1232372FB0087F0C4 +FCEDD9DD7ED8610A818320C06FFF1760F54156D8F23156BB480ADB56C29831CD +61E52861B5A1CCBD7E6168DEA14B0CAE4E79A873C1886D3F2B3C12A2AD7BB262 +F6752DBA98B4F56EF7BBB439CD8D7C96526C859E3377463ABF4706D0D4FB7CCB +CE1FACEFDAD169C2F09308CDDD73BC43382740EE7A373C7AFFA2C1F46BF1A59A +04579C5A4B104205A39EB0B6F7B5375C56394BEACC3A6E5371ADD2047679550A +53D6972C28E9DEFDE2630EAC1C1095CED943D255393656085C6B3A38410B1866 +D7CA471D93A2A0071FD6E29EFBCF7F921E2CECC55A95D349DA68A93FEA72E0F4 +5489719CA26C1A36B23335FCB33EEA59E8242DE95BBBB882B2CC6FBE601F51E8 +D85158FC88FAD8FB02C86E6B9242200BD753CB806004088AEDD103E15A7CA5D7 +8C5718F701DEFDBE8E682CB0C438D8B2BE4F3C0FF9CE +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX9 +%!PS-AdobeFont-1.1: CMBX9 1.0 +%%CreationDate: 1991 Aug 20 16:36:25 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX9) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX9 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-58 -250 1195 750}readonly def +/UniqueID 5000767 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D635D93B1823EC35EB8316AA1 +86031FCC99F57CB21E8400E54AA474B57112F0D4754A16BEC19117E9D3638986 +0777A71B135CC18E20E193AE6C2BCD89F4A27516DBD2BFE69FF9920D547796F9 +89E0825B6BD5F492B36AF136EA91B826501ADB1979A4204B2CB5C0517F2B9494 +9B2077F316D2B3DA256C99F7549E6BC4B04FE12072B09B4F5D482A126AE351F3 +97DB85F3026A793B51E6B28B54661FEB087F011F0BFF67272DD1E8825C180723 +22AE77CD6166D2605D0C0F131537417CB60086F08E7197AA916D590944BD801B +DEE8F29FFC516E11396CCB8395CFEC9262E22521882DC0316B0A129DBFA5FB57 +E656890C2471675E0566FE461028FB05532E274E6DF77E7D320D09B2203BBB5A +8B185B66B2F8A18A49589C4EE27596DD56260D0D759D2A12CEF7FC3010BA1B36 +85A2FD45129DC01A0C7570423305C25D957DFF9215102FFF35F428C823D549E5 +014E7F99ACA6C10B3C92805376D0F3F280D65852CEA54F5CC9DEF9EC1347824B +0733D3341B34937316E77E952AD9366D3B2ED045165565F07CB636385E5A5911 +2620E185B105EF6C93890833054E05B6301137338A3F1D6AB2F80095E57AE60D +6E5EE2764624849978C811EC38E014AE4A5823734C5CEB2BC22DDA46BB408D00 +4F25CA8ED287D35E26A4CACA77D2D4B986ED2ADD3BC0C3405741CAD56DE28C7C +68E8944967C022CC55907B3DFACC1EFAFD38D3EDDA1AADB6E2C006ECBEFAC8D7 +18ED3C46C331623D8FAACC6CF9292B8F1B407806A0D4808F51A5BC97F6A34ACE +2073F11C6D604D7E8C79CD5F8ADDA187DD1ACA932A19D7017C48B3F140403421 +F5ED72DC0725D98CD494C4BF567B19DAA4F8AFEB76A4A8ABFCD790BE1D051E8C +5C14175D16AA464081AC43CE0AA358C70627B232E0D1C066D57B47402D48ED1C +B8EA3BC935F3B38185D619E4E34B197E7F59DB9EA1D85DDADB729351699F0AAE +F4132DF9D505F6889456B7937D3B73F8BFF8562FEB81A3B72E3467758F3FF242 +7123633290FBA60BFA4B7023BE0127D85FD885D41D9A3D0D6ABCAF8BD4AC78D8 +14EFA95F4B2448CDB65F9D8C6D3EE62599A5A31E84CB17506DAB61F507A9BCA5 +1DD2F0AA183EACA8856078170D26BC14F9EE0C5E95FA7916E06E9F4F4ECB512D +911894DC3720B430D764EF2A5428A2204E662C245266884D302EE02BD3F21A66 +D0123D211E5FC6DAC195C9CEB60D4C507D030ECDC907BD1CBE870660B89837CC +BB8597FD85F65A8550E18BD37914F72D703DCCC732976312F933DA76761E1F06 +D29BD4DFE04F98FCD434B15377DBE41F36AC9CC265DCED60D221BDD291918144 +1FAC1D42A8E835705B4B7503A63F445B1D428B270F8E05ABB4E73A694C9CE996 +0296064ECF7349C5F2C28795E852AD8B74534152808E9110FCC93992C73DF618 +8D61D8162013C681EED5B7FFBAD76D81832FCA75DE8055C2AC33E7E183BB9249 +34FE841A220AA648D57235CFE35F99FC2AED92027C7D38DCCB4B700E228F7E68 +BA0977D9CAA4D8E402BDBC9FEB94AB73CDEEFF3490C634A418E3EE806D6B91A0 +5FCF43298EEA638CE359BCE62C57A90EB5F77B72F86AF8DD2175DCF93FB31395 +889051AD071D679FB0F631B106CA803150A78371B5D83A4F83E46F58E62D6BD5 +3182B45FACD67EBB30BB94B848F07410DFDBC393DAD9B1C80B821AF5E20CEC51 +59D6FCF7EADEEF915F9CB028D0E8127634161D1DF6A125E0B4FD0C067F11BCCA +6AF35D74E8A2322FEDE3FFDE98CEE06707EF26EA7E30C269F9C3D7C4E8DF2831 +C0368FF77798E6F819DA285DA48E488A8FE2268731BAB4824605033AE20D99D0 +EE6342D62F822F9673DE14F95F46135BE95B5FDFF28F0ECBEB5CC117E24AF4D2 +40422AF0BA83B58815074DA6F659E3E6AB5151C106EE1322CACA4FD375C626F9 +481BAA8BC48B7B43C34BCB9DD9A0A74B82DC24FAF981BCD70A4C25A20FECC24A +766E5FE75023121F0B40DBC949B154FCD1DA098A7BD0843351C7C3CDD1D39FE6 +FD64713B11863D0E20364D51946C80FA78AD49B20675F6BD62C22CD990783368 +F9BFFAAA073BB9FD50507A9927A9D75544BDCFEEF402957AA471C6271162C614 +1CCDB937FD88F07BA4AD3919CD2CF2D37DB0829C19098B674DACBDF3EF4702D0 +0385BDCF093323767D6ADFCC9C02BAC06FE50318263633B4C917C0574EDCFE53 +4788D65E13E35C422D0FC268549883A757863D7B6FB3357DDA59E677A15CD273 +5A89EF223E373847923822D2258DC2DDB6A5C91FB2A6801C262F8178FD4FF333 +624B352357BCB5DA1DB50DABAFE7BCCF4DD1660E5B3D53BAE1BB02853A21B4AF +D32B7CA41D0A8E1BA1F3152120A7608788515DB31EC737AC33B81C570CEEB54B +338F5F95A7061EA4B323B6039A81D7378F1AC0C4E06C42C316A4AB13999CCB8F +2D920CC1E50F61CF613F0A1BCBDD9246C9FB9EB0DB67A2B7332712A63480132D +36 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI12 +%!PS-AdobeFont-1.1: CMMI12 1.100 +%%CreationDate: 1996 Jul 27 08:57:55 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-30 -250 1026 750}readonly def +/UniqueID 5087386 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 +3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 +EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F +4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 +2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A +323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C +2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 +D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA +5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F +0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D +A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 +2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 +00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 +CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757 +99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA +C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D +5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295 +55B50047CD58E912E67E22C1B92F41D0BEE742201DF198F3766AE35EA71D8195 +A8C94D661C40D718CB09497485FAA34204229AECFE644C93FFDA54C789E4F751 +3D2519F7CB9E79B2ABE3101DF2EBFAD375469CDC687FB3DC2833EDC0F946B41F +F28D72FFF2A9B8B0D76DC542537612E2BE0F3FB9601C897386359C55E867A547 +F872005F5C56C6EC5E9685E03D7A82653BE8B69741C4DF332AEEB2AA450B23F3 +EABD5ED060606CC7DB1762632EC3C6C4A66ADAF61A97D949DEA5156B4CF34765 +67AC3F10AE17199A710A882D47979F9D41AA2CB794648BE47479F0B00E18BF04 +923F54CEC1214BAFA39BB65ECB013875899E9901B7882D16D2E2C97AD3353668 +A6070081E4DC627AF9192599F5876369908FBDFA11E8D6CB2E83896E9C897CEC +FD1D25651D66A333AF531FF74E1B0DEB1E3D1B5B7D3FB9D1C8BF60517B31C8D2 +1C264F44BC9AF3D9BA5280D1618EED96C11ED24F789FAA263394C658DFCA8DE9 +D47D9E188E212F9EC1DCF449DFDAB8437FAB9EA9AF01AE1714E8F932855182 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR12 +%!PS-AdobeFont-1.1: CMR12 1.0 +%%CreationDate: 1991 Aug 20 16:38:05 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-34 -251 988 750}readonly def +/UniqueID 5000794 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E +59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 +51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 +DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A +AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F +45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 +821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE +96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D +9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 +26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 +140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 +1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 +1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB +377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A +0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 +5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 +ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 +FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CCDDCBA50602 +34052CD9880110AC8AE2063D59E8A32D51B6B31E9B2E8157822D2D733D49AA46 +B3082E60FD96213DBFD8134DA343A180A28150509288C42EA981D39EF1D16265 +88B8B318A2E4B0FA324E600F1B29DCC913C8874AE5539315516911E0FAF77D88 +70DA5552627283F65FA116CB3989FE37FAAEB1167A1A56D131824749A159CD03 +CA45DFEFA0E5C3248F5F7B54C8349545BF6657A1C423D5C42951C92B1FBD0F72 +B2A30D169D864E5456DE060325B33E44A1290F3663409DFF11D7EB370C75EC96 +A063AA7D6B09C918C58A31A635FB2BEAC5EA7D0D198C01CABB67C715E519C7CD +04856B309F3B18FB8B6DA72533DF9F97CF0B5A08FD887472B4BB0C20EEE83415 +A8D31091D529962E274620336D54ECEE5004E8DD2C727410A945850BF20F0C37 +51FCBE954A834D67C74991F6874C2635462505475C03325204E87B6056CE5A6D +CDC12BAB3BBD011C5105EE6F50D66C08775966645674B60A6D0E26882BDB2C80 +3B1AD2D5C8116AA3FC57AD3EC487B742F999CC9243D4CF8E41B0E0B3E30F259C +E642C432DF24AD0272A3CC2EF5A1EB0888F3B6413995F685E59F3C747690BC7A +DA8B0394DFC23A6F4EF5D88F6A651888A6C710941157212E1CFAD92F1AF4FDC3 +FD66ACFBD064E39F3F8CB9975B48791CA27DE61173C05D0A60D1A541602F556E +277FD52BEDA399A16F711C0426147C4B77C57C4698E7BBE08262014C5764EB18 +BA4DA064CC8440E681B8ACCAA0955239F05956CC6C97C6B236D3ED9D8687D139 +730DED7816622F0934BB39C0A6D566A175B9A1067FEE9666CFD26F412F4AD570 +03054E8772EAA37EBB5A84C05242C1F1EC777D3222B964E547F4F1A04EEC7E42 +4898138802C1A7A7621F80FCD8F75DAAD05899A68439BA2FDF4B4E566FA8259D +CFE36D5CD192A8F307ED6D04414AD56AAB56A5707EE5DBD308D109DCC00361D3 +34508B991EDB4AFD6A838E2E8A6E0A9D94396106B5CBA5A2CD916B853EB95AFD +9525B6109C42AF3EFBC49CFBF08E2CD35E4CC7A50C21324075D2B17F6EE8E6CD +75427143D38D6805A7912DCA8152EC3A0C1F9E35D19AE210A9205C0EDADB58A3 +5EDA7E49E34424BF1B7574719DAF7EE18D59BF29DF5CE2C9F3BB91F0A0F27D85 +FA54B6711FB5DD73249C53DC27563E23620A2A9DF35E0B99CDA94BDE4F832E65 +566A0E489EF4977C14AFDE41725E032CE647D20B4A14E35E8EC7DC8F153800E3 +30932CD86290EBF60E895B13883CF4B1F593E79A11BFDD6B434D25819CCB1589 +7449FECB047BD725FD0BB8C6057C8F5A881209C537E9AF2EA4FC56D9EC36B94A +3BA65BA043F13579A51DAECCF0E00ABC5D0C2A4AEB3ED8959D49AA1DD972C0F0 +C75AF40D4E3BD7B49513C7B144A3BC38C3D6AA5EA7CEB5F06FCA224CC9F7990A +3F2DFFB3EEEC9B20DB5B7F5479091E23FD1142B198297194EBA505C2C40A045A +C15528024D5124B1E36FA1D0E33E04D6D28DAF6753017590BCAE5248DAB217F2 +281C58057BEC929CEA3EA7B4007DE2C6DC7BD62E200DA8E9A0E7C15A2DFB64FB +B5C418A417C464592EFE8D8DCF53756F812B67CD4962AE56C74E4DA654F71052 +0D236263EC5E0B77F14DFDD84F63DD111D1E07B09DD5F896CC0D7F47754360BD +CF77DA022D6E00EA84C1462BF45689B9F8FC28FE776543D7F6606C9F5EDE8DAD +86E1ED112BD6272AFE714B09B42351E3B812E3CBF0A6E307C9F474F40F3D534E +71E75EA3FA7246911DC054F2AF192F6D9087DAC0AB341195C5D46C92BA8D62C6 +100587A91506F6AD7FCE1510D2F3BF8F53B8A2492383CE4B025247FB36333BED +AF2CC7D6AA7711B9A2D7F1E879FB012C2D3C7061A0A8FAC88D85585B5911A7AE +E962185150FBDD874FB5637901FA36BA9BBFC17C4CC9421ED5A43EEA7C4B89B1 +9E912A40B86534A2626F53DB2D928D9510A87756DF830AA96CFE3D986DDB4B1D +37BEFC5500C3D310524563BF41E91ECCC90D549BD36DB7FFAC5A7992FB94BA76 +574D2F522C55EE631F81AF2DDEAA67C75FA8ADF9A28A7FBC35941D8DE270A1B3 +07093BCCDC55B14F470C2138E6395399787D07C48A851BA5BD77CA3397857C1B +D2995C78F93A733754FD305DDC29EDA6E0FE596EE6791F4B4F3AD06A4B3D0AF8 +FB71EAC1597B0638135B30BD20C689BDA9072945CB66C4DE11E1CD29B8877CE3 +E78775D0917B374563EBF5F5CA3788D614F063E68AD6A4AF56ED7E1A30023983 +39D4ADFFF516AC1F478A30059F35963B7C0256FACC38D66743911533D0B20C1F +12BF00B75F96106B058FB7A4E6865218708FE791A71DA4B642482415EB221942 +4FE09246DE4707EBED8BE7EDAD4180C22BA39B9070E026A03100448DFB11FF65 +C8FC7C834326CFE1A2D863A87E3B005A3FAC682EC6379AD4FA377537A398A2B9 +07C78B34523C9917D7E362DC66874F067F5F04E65D7738EBA89946964E15C1C4 +662175C76D32A0AEDA25FF864D0A0EC39C1E118244E06FA11B53BC84ADEAC681 +252F98CD6957C7E9770F68B137357B3878526577623C1FE63EAA0C22F465D98C +D807DFCF3C584D565DECDC8AD547B6E47503113826DD854F8EB1F144F95D865B +932C709BB225D548BA3ECD12BF6C250DB52816B1449818CE24C7F79DFD10F713 +1F01164BA0E27942A27AFBDE60770F3000F4E984A986A91E67B8E977DDF386E1 +2A7A14F316CE69A2D0CC961DD8EDDAA5DA0BF873000F5A560055C077C938262E +96E1A3BA2281A1A3B1F8D2E8A6C3A02D2F768EA7B5AF7AD124F9BC6BD7B911F3 +14473B7F06B3D3AF0580DBD0102783464EF05DF766CBCC4353C6BEE7D976B37F +FA71C026266B80AD7FCBBBC4B5C08967B38E5B00DEC9465AACA6F97A3BAF6D0F +EA3346C45BE6ED39C3C47A324E903B17B213A5EC3CBF9E27FB2BECB6959CC4CC +C04FACFB7023F4327AF8A81EADE3F6FD794D6A193B6ED1BF5C844AB7C2E31AE8 +BA9B48016F3C3D25D6926F4704B01B851DD344910DB069B81847C5AF8D5B56B2 +B57D4C350670DB3269932508DF3BD09131177B7DDA109B715455A95B0CFE95A6 +A9548DE3B31098FBCCF995DA569A7B26B847A27B1F05F14D391BD3859F3D80BE +45A8761950B2A814E0E13F496CCC81A63716CBC093914E1679FC9CD6E35F48D8 +7FAD6CDC14B612FAB5E961C7228B37F1FBAA2DE9C322BE82DABDEA2525F0732F +50B1937E8E587C0574015759D37A42E121469C4A6E592EF3D192D38A624A686D +AD9C1B75FEA433F56AF52B3DA5F4539E1910F56375B6817510FAA0E6CF5ED0D7 +6F3294090C905642C77823444B25B358ECDA7F5306CFBFF5D4960ACCB02C41EA +C13756E4BAEEC996914C12AF2C095262807694C5E07ABCD368F25BA60DA57251 +DB888567B393DA3E296F93861D44D98F92F5394EFDB21BE2AF940F87571F3D33 +87883DD9A8A54457EC22F0A8FAD945CF8609BF94E9A7CD6A83AC4F9D3BE230B6 +60CEE33A941253B8BAA47E9BA499B0EB97F28C1FDD4CF6EFB03165F81CF7AB6A +7463AE3B32C259F693BAB8B4BE3C2764DBA9A477481A2DD8C323FD96EA318CC1 +3966E0F98F767858372813A76DE1D9D49E7DF28B5C72D6C461B3374FEDB94AD1 +1962AC2FB9504EDB1C39C8651C769B6F10612C7027DA51CF9DA4C48D37BABB55 +B4D3B88DEAA88FD10EF0E2C8884584513C57CA80E354DB4E0266E549EF1A485D +6A6CEF7263D1C7D4C7563900DADAFF6B092BDD24B8705724980D355E97E06E97 +7F5E04B9F7C45BEF6ABF12705133449D310F7033884DFB1E4AA2FCA15CFCB257 +7E9FFD8DF143365F8A682BDE66F620AD82751AB87DC914F6BBF9B22A683EAC6E +72E07C3AE4B1422147E20D72CB161126577AD0614D0BDC5835B3ED2FB2E709A0 +95272C2015AFE6664DCDCCF8AB5556196787B21CB89196CB77D7E29CC97C6C8A +B782CDCDECFCCF15C722BC88D7D23770C3DACDB8DE2F3511D58C65FE1CFCC47D +2C3E76D0857416DF8B3FE52B026096653A419A730C66722260C416BEFABF7A67 +E64599B9C855C69FE285383463B07CFC72B460A7E3B3211E621BFDAC75E6B6F3 +19F5774E4EF9EEF512AF2C8EAE034387B0669459305C9BBCE8ED19D1D9A44EBA +4964187A723FC593F9D3F15228C893917F13F0CFBD818AC9FC6FE0FECFDC5F6F +2BA2242527306749D900FE416BD3D7F5977FE0F4120876468598EE46D54305E7 +AB98F3965FC684729CE1402543B6EB4361E4246D5FAA31358F3CF2EDDA61F86C +232FBD3420BB9354C452E72A76D1B2FA1147CC6D03F60D11E56B4DE0902BE99B +8CF1160270DC1101914DCEA10D459DB1D69D0E4D1C9F2086376696648E3D00B8 +DED41481AE6A5439B64E87AE28C08C347411ECF3F9D52FE440313626CDD0DAE2 +1B5788A03998FE60ACD370BD3136AE515969751B5230748CCBA6FFE5A23189C3 +B87061820CE0234B41BC4077683E7BCC92540E34B4A9E20FFBC3C7A7D2056C6B +4B3BD1A01F6F47F539E0E0452A8E1954B89FBED9E598BF42683F971ED65DA76C +8F19B5862F04F4494B987E86D0929A9CB88F1B3D2FB2EA2995DFE7A890013CB4 +6289387C9403826DD77FF8C8605EA59FD207F26AC23F6BB4343009214E448757 +4123C48E667D79A942185DD181D2F996BB3084791FA72EA65AF5FE2267DB9EC6 +64BD96039C6B91A8731EDD8B142BC85C17C9ECD09E8EC213245AE716B569A947 +F6164B6AA5624065E6BB2B797B8AFCDE2749B85012CB477B5073C2F767D89EFC +8679E9407E5B8BB76D22B5AE13E16CA9402E9A89101872528BF2E052F5BC3DBD +C57194A0CCF73FD57FF585092BAF92E1EAFC94F160F4D2C42990BE027FA0C3AE +3CE77F5E6FB62F2F28C052379B2700A7D253CA23C1BFD279FFD5CA9CC8D4A578 +7098E4C4FDB3397F49F5C54355D79A4BA62CE972CFD3CFF8153588494A6CF8F7 +C2B773F53919F051D3807B610F3EEF47C31F69E699CAE5E7FED38F4FE76AF5FA +26F520AC52B69B81B8BAEA835883521783F41E3E5924296483F6A54B1FF1BD82 +FE96460D486550D489E9F11952C9B0867ABEFC1F2D5ED7611EB55682FBA60B0F +9ADD019F830831CF4ABFC1FCAF469FDEF30A667EF12CC88DA8396D765EED5E9B +D227312AE318BD106F2ECB6D46952D71B75B2CCB4E08248D92C0C442F159014C +90B2B0CDE95053438DD8E5D4D2513A2C6F4D85F0996984E1BBF0A1F20A923C22 +FF4350F461699AF9B858AED0445B621B58CBF6F221A9399C1346169A65E9435F +8EE42D7DF09EB5E58FDB066334989861A7B4CADB3DB938171205B8D5E0104A1D +EA5DEB85C489166061DA2072855239E1C057F502B3D5889DB06822D66141210C +9CD436AAB9206D348025732473949AC24054B8DCFF1DCFF59455D5C594A4E3B4 +ED579B037C21DE9F1A606E3DAAA4CEA292758A5EC2389E9F645C995D4F9DDCE3 +31BB1450B58C5CE588C29C07000D9E34EFF1AB111E31D4D655A1D19875630A97 +4F434C3FDD7379B9D5F0E4606D6B7DBEE4CAF7BCB45BE85CC552DC8AD78AC849 +47116B1326C08A38DA987B55810C27C8C47FEF5A8225BC81857F68EED0135C35 +B98CBDA1478F2559D0A98B24DE9461A971CB77B83934D1F2D3CCF8080B745FC7 +F8E06868246F0B609E9BE48EED638DED3E511CE1D3FF950BAAE9E9D42BA159D2 +61E44FC4A463B7F9B7EED350D842C6CD676F9B12AC314550A9477CB9CC81616B +23CF340B6F9C8E4376379BB2C900A7FEA0F796EF5F85A1A509B115937A341F8C +D000AD49C5D13B5B5ABC57A059E451A75AE35F302958D4C6B0F9CF9374A4F382 +DD310878185EEA83AFE602DD4327DDAC547D361299EE7BEDD8D638A9E94B1016 +D7EEE97526854A08C9F561608E143795EA3E5993EE3E1845EA5C66246DEDC457 +C3AF6EFEE247A65ADF33A61D87056AF0FE5164609EBC07C5323EEB6FBEEF057A +BF203107503D4083D0108CBE57505C3B8E1F482A571CC8833A969935F5EB0C0E +08AD5A6A67487F226405D2C33828255BE778B9543D9CE8EDD024B8171C72B30C +9EEDA8B269F67F367DAEE81D00D63A859EF42FFEEFDD248479AC883D9E0E9D4D +68720536558DDB34699884FB349EBF7987AF49732D1C55167D95874DEAABB006 +B90CCA09F96F6FE195B4FAB37E7999A6A1FB1EF495B781C9D38B01C8D80025A1 +1310AC76E7443A33D57AA2CBB96B47D7C06845A42DA58A26B7DFD39D52C3F3D1 +AC1C778039A7D7BF7083A84B6912BA238F323978B11BAE4A8E5CBD8A9CB27370 +53B12F944BCC6D50C3AC214D679279CE0CCD40E739583A05CBDACE31A358F63F +FCFE33DC36CF0805D7F7D8AD28E98C58D2A612329147410D068E6E9C2F99172C +E1A071E4A77691DD092F53ECFD4D41ADE0F48C6DD456B579B307E648F67FE1CA +C3EBA3CE54928B6D46ECF935AC0568DB3224CF603B8EE613D30FCF2AB824EFF4 +6F9550BFD6639E3D24AB37A2428EB9300715FB589A4B78501E2245C67A343CEB +542A463D7E2535AE76748051A5269C271EE5A7F0778D611AEF10574BA833438A +CBA5C81738C942C01C6DF7369D2A2EB2C3A0F37510E676ABE933C76DA7981763 +DF2D516104553884B32BB7335A223AE1EB289259F8A6D09C9335933AE6454EBC +DF356C114FAB18D969CFD52CE16336365F870D5E515DC811DF11BFD8EA4C63C0 +1C029EC2DA5F7058912ACCA033997633EF7E2C535C9D5BC360D28A9B82C6F091 +FBB1B451630741BC615671F804B2A410EAC0E315231DDD748A4EDCEE41130E68 +6EE8164D0F6A26C7ECB8502A3E0F1C9A01465C06C65F72A5674EA063824BD58B +94B99535D7 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR17 +%!PS-AdobeFont-1.1: CMR17 1.0 +%%CreationDate: 1991 Aug 20 16:38:24 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR17) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR17 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-33 -250 945 749}readonly def +/UniqueID 5000795 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 +A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 +BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 +96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC +9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 +E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A +497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 +4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD +3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF +B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 +C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 +9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F +83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 +A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B +246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A +7736A960F72AC01F733A11023832CD68FB6288A5977743F781214D8FA9C0C3F7 +80001321D4397771F728FD9EE57CFE7D9192B887EC883EB1505068261DC40089 +7B7D2820F06515CD74513521F6397FEAB3AD3572D9A8269430E407E357422461 +1785FC2782047F4C0339D79B16862D939F3A37F78E4E2174E4FBF132539CB760 +207999FF86F6A3EBE48EB0A1CA635450FDEEF79EB16D853F3BF4B2B072EFA56A +F8BA95D15BD9104B5B7597DE24CC36EEAA17617CEF2ED0321C284D0A614770BF +C5312D940FC24C50D86178FC27B3FC29ECCD66E87074AF889D222DD12CB54D4A +6EDB093B55DB97A23C7F8942FD0C686E6CE3128FFF13F684DCC58721B3E646BB +467D917F83E1B5A2E2D289EB82237B20D14B336AEB7FC833BE218DDF26C773DB +DA501CAA8503B879B461B2DA58EA61B57CAE5772B6D3E88277824DB0612C4839 +71A17C6FC89E25D79F7632F29E2B44065E05757C0C8E04C9D1DDC14A35BE1A77 +91A0C7807CC53D05E311F721429145D9485C591B6DFD5072D31924D2AC442C20 +CF9A8DC4F8ED521F53FB732F3EA247633FA1B516040B68A5E5E4A0F8A032C7E0 +989A5E63D87B054EB2DF57CFD65B64D89F437D2F91C269DAADE6A8944952B1C8 +791D8554FC381C56AF5BAE2573521AEF93FB419163B3B17F08BED7208D56CCD3 +1B619C39E7F27D3AD18562D94ECE4144136544C55EE6A6669AAF7A8B9AE17E03 +E258E91C43251920C067A0BCB4A62A3D6D89B5E5B8E0879C5FB9EF9E8A36DACA +2E309C1472CF020A4F938A653D840E7BF47100A3878B954C546F86CB01AE95ED +041BC9F618FBC569900F53C1E00E72011E57998B49C0EB2CE5E541ECA3257EAC +5087A9F80654DAB8EB500B82D8FFB5BB481B489BCA61C945382BE92B4F44B952 +C69F5998F05FF221B777FD524385DA63EF8942DC9D1F2E090B5BC8F426959436 +659D5B7239A3800F6B2E091B8D5FF4281FB3FC55B98371C822B491BEA7917814 +D9E67117FB4EC2FDC3ACF03CF1C9E4478D717D504EA1AD79CE84489CB0615FEF +A33A9F71D2EB3608FCDD9C7C34BB03C2ED03F78B7CB8A9EDC490F1EA0708FE9B +24C0C9DC14983BC4229E2D028CA994FEBD20007AC87288A2F442109CB88B04AF +E691A90974F19FCBDB214B88E0C2B67D233E7B6923414736139B40A5FAB548EF +2DCC62E48264375E3F1AC532B006ECDC199508BF7D3ACE0602335CB4CE5A5C9D +1E7EDD9E94B793BB81E6616062DE743CE17927ED60360D54DFF41221B54F390D +2984F14954BD4AB08134605500EFD6ADA43D32DAE5A7B6F3A01368322ACF8229 +3492061C5F65EBD45F87631D48B16EEF1FE7500DC256D08078C0E4E67421BB98 +EF0C0D6E01C9293586D471A1BDD80481393969FDD38641FDE412F294B07B7DF3 +A7D6BD4CFDA1A103F253E7D34F68594287586FFE7001CAB60AE1A8A0B177BA9D +1AAD7041C8802A7F8126D5295D2503234AAE5976C96CFCD67D79B2C06D2FDD9E +A5FDAAC5713762F3C0DB512C2EA5DB13E8EA9A30CE11198398D807D2ACCAB525 +03565FCBF0004570F87EA4B0A13319FED515C1FD55870AF494C0964710F52813 +C5D99A21D507A5887DBDD1CAF282816C7367022872150C713D9F2B9B9EBD1653 +596CA51AB56D5E719F4410F1463E0CF93830544ABEC5F6D8D1A10CFA1F114AFD +ACCB696017564EB2441953DE952DC86413F1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099151 1000 600 600 (documentation.dvi) +@start /Fa 132[48 1[50 1[69 1[53 37 38 39 1[53 48 53 +80 27 2[27 53 48 29 44 53 42 1[46 9[99 1[73 4[65 6[36 +75 75 7[45 16[27 1[27 4[27 26[53 12[{ TeXf7b6d320Encoding ReEncodeFont } +31 83.022 /CMBX10 rf /Fb 205[55 34[42 14[65{ + TeXbbad153fEncoding ReEncodeFont }3 83.022 /CMSY10 rf +/Fc 205[33 33 49[{ TeXf7b6d320Encoding ReEncodeFont }2 +58.1154 /CMR7 rf /Fd 255[52{ TeXbbad153fEncoding ReEncodeFont }1 +58.1154 /CMSY7 rf /Fe 139[25 5[41 5[39 104[{ + TeXaae443f0Encoding ReEncodeFont }3 58.1154 /CMMI7 rf +/Ff 133[39 41 47 1[40 48 30 5[50 3[34 3[41 1[43 37[65 +1[65 23 23 58[{ TeXaae443f0Encoding ReEncodeFont }14 +83.022 /CMMI10 rf /Fg 134[44 3[44 2[44 2[44 44 1[44 2[44 +1[44 103[{ TeXb6a4d7c7Encoding ReEncodeFont }8 83.022 +/CMITT10 rf /Fh 130[44 1[44 1[44 44 44 44 44 44 44 44 +1[44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 1[44 +1[44 1[44 1[44 44 44 1[44 44 44 44 1[44 44 44 44 44 44 +44 44 44 44 44 44 44 44 44 44 44 2[44 1[44 44 44 1[44 +44 44 44 44 1[44 44 44 44 44 44 44 44 44 44 3[44 44 44 +34[{ TeX09fbbfacEncoding ReEncodeFont }75 83.022 /CMTT10 +rf /Fi 139[49 1[50 2[53 51 12[51 26[59 14[46 55[{ + TeX0ef0afcaEncoding ReEncodeFont }7 83.022 /CMCSC10 +rf /Fj 129[42 3[34 40 39 55 38 45 28 34 35 1[42 42 47 +68 21 38 25 25 42 38 25 38 42 38 38 42 9[83 2[59 4[64 +5[32 2[54 5[64 5[25 10[42 25 30 32[47 12[{ + TeX74afc74cEncoding ReEncodeFont }37 83.022 /CMTI10 +rf /Fk 128[42 4[37 44 44 60 44 46 32 33 33 44 46 42 46 +69 23 44 25 23 46 42 25 37 46 37 46 42 3[23 42 23 1[62 +1[85 62 62 60 46 61 1[57 65 62 76 52 1[43 30 62 65 54 +57 63 60 59 62 3[65 1[23 23 42 42 42 42 42 42 42 42 42 +42 42 23 28 23 65 1[32 32 23 4[42 23 18[69 46 46 48 11[{ + TeXf7b6d320Encoding ReEncodeFont }79 83.022 /CMR10 rf +/Fl 134[59 59 1[59 62 44 44 46 1[62 56 62 93 31 59 1[31 +62 2[51 62 50 1[54 9[116 2[78 62 84 1[77 84 1[106 67 +2[42 88 88 70 74 1[81 80 7[31 4[56 56 56 56 56 2[31 37 +31 31[62 12[{ TeXf7b6d320Encoding ReEncodeFont }44 99.6264 +/CMBX12 rf /Fm 134[71 71 97 71 75 52 53 55 71 75 67 75 +112 37 71 1[37 75 67 41 61 75 60 1[65 7[102 1[139 2[94 +1[100 101 1[101 1[128 3[50 2[85 88 1[97 1[102 9[67 67 +67 67 67 67 67 49[{ TeXf7b6d320Encoding ReEncodeFont }42 +119.552 /CMBX12 rf /Fn 134[41 41 55 41 43 30 30 30 1[43 +38 43 64 21 2[21 43 38 23 34 43 34 43 38 11[58 55 3[52 +7[58 60 3[55 20[21 1[21 29[64 1[43 12[{ + TeXf7b6d320Encoding ReEncodeFont }32 74.7198 /CMR9 rf +/Fo 139[34 35 36 14[39 49 43 31[67 65[{ + TeXf7b6d320Encoding ReEncodeFont }7 74.7198 /CMBX9 rf +/Fp 193[76 1[76 60[{ TeXaae443f0Encoding ReEncodeFont }2 +99.6264 /CMMI12 rf /Fq 138[54 38 38 38 3[54 2[51 1[27 +54 49 1[43 54 43 54 49 13[54 13[66 75 3[76 5[27 2[49 +49 49 49 49 49 49 49 49 27 33 45[{ TeXf7b6d320Encoding ReEncodeFont }30 +99.6264 /CMR12 rf /Fr 139[51 1[51 1[73 10[58 3[66 29[96 +67[{ TeXf7b6d320Encoding ReEncodeFont }6 143.462 /CMR17 +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 0 a +SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) +/Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark +end + 0 0 a 0 -137 +a +SDict begin H.S end + 0 -137 a 0 -137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark +end + 0 -137 a 0 71 a +SDict begin [ /Count -3 /Dest (section.1) cvn /Title (Overview) /OUT +pdfmark end + +0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.1.1) cvn /Title (Fixed Mesh Refinement, aka Box-in-Box) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.1.2) cvn /Title (Carpet) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.1.3) cvn /Title (Cactus) +/OUT pdfmark end + 0 71 a 0 71 +a +SDict begin [ /Count -3 /Dest (section.2) cvn /Title (Introduction) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.2.1) cvn /Title (Fixed Mesh Refinement) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.2.2) cvn /Title (Carpet) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.2.3) cvn /Title (WaveToy) +/OUT pdfmark end + 0 71 a 0 +71 a +SDict begin [ /Count -4 /Dest (section.3) cvn /Title (Compiling Cactus With Carpet) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.3.1) cvn /Title (Hurdle 1: FlexIO) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.3.2) cvn /Title (Hurdle 2: STL) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.3.3) cvn /Title (Hurdle 3: Templates) +/OUT pdfmark end + 0 71 a +0 71 a +SDict begin [ /Count -0 /Dest (subsection.3.4) cvn /Title (WaveToy) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (section.4) cvn /Title (Running The Example Applications) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -4 /Dest (section.5) cvn /Title (Fold Your Own FMR Application) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.5.1) cvn /Title (Multiple Processors) +/OUT pdfmark end + 0 71 +a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.5.2) cvn /Title (Multiple Resolution Levels) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.5.3) cvn /Title (Multiple Grid Components) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (subsection.5.4) cvn /Title (Example) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Count -0 /Dest (section.6) cvn /Title (Further documentation) +/OUT pdfmark end + 0 +71 a 0 71 a +SDict begin [ /Count -0 /Dest (section.7) cvn /Title (Frequently Asked Questions) +/OUT pdfmark end + 0 71 a 0 71 a +SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW +pdfmark end + 0 71 a 0 71 a +SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark +end + 0 71 a 0 71 a +SDict begin H.S end + +0 71 a 0 71 a +SDict begin 12 H.A end + 0 71 a 0 71 a +SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark +end + 0 71 a 1691 503 a Fr(Carp)t(et)901 +760 y Fq(Erik)34 b(Sc)m(hnetter)g Fp(<)p Fq(sc)m +(hnetter@uni-tuebingen.de)p Fp(>)1302 978 y Fq(Date:)43 +b(2003/05/02)31 b(14:47:46)1721 1276 y Fo(Abstract)323 +1407 y Fn(This)c(text)e(describ)r(es)i(the)f(Carp)r(et)h(arrangemen)n +(t.)37 b(Carp)r(et)26 b(is)h(a)g(mesh)f(re\014nemen)n(t)f(driv)n(er)h +(for)h(Cactus)g(that)208 1498 y(can)35 b(replace)i(PUGH,)e(the)g +(standard)h(unigrid)f(driv)n(er.)64 b(Carp)r(et)36 b(supp)r(orts)g(m)n +(ultiple)f(re\014nemen)n(t)g(lev)n(els)h(and)208 1589 +y(m)n(ultiple)23 b(grid)g(patc)n(hes.)34 b(Carp)r(et)24 +b(can)f(run)g(in)g(parallel,)i(but)e(not)g(y)n(et)f(v)n(ery)g +(e\016cien)n(tly)i(so.)34 b(Carp)r(et)24 b(do)r(es)g(not)f(y)n(et)208 +1681 y(supp)r(ort)i(m)n(ultiple)h(grid)g(hierarc)n(hies,)h(i.e.)f +(shado)n(w)h(hierarc)n(hies)f(or)h(automatic)f(con)n(v)n(ergence)g +(tests.)0 1820 y +SDict begin H.S end + 0 1820 a 0 1820 a +SDict begin 12 H.A end + 0 1820 a 0 1820 a +SDict begin [ /View [/XYZ H.V] /Dest (section.1) cvn H.B /DEST pdfmark +end + +0 1820 a 152 x Fm(1)135 b(Ov)l(erview)0 2054 y +SDict begin H.S end + 0 2054 +a 0 2054 a +SDict begin 12 H.A end + 0 2054 a 0 2054 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.1) cvn H.B /DEST +pdfmark end + 0 2054 a 133 x Fl(1.1)112 +b(Fixed)39 b(Mesh)f(Re\014nemen)m(t,)g(ak)-6 b(a)39 b(Bo)m(x-in-Bo)m(x) +0 2357 y Fk(Fixed)h(Mesh)f(Re\014nemen)n(t)h(\(FMR\),)h(also)e(kno)n +(wn)g(as)g(b)r(o)n(x-in-b)r(o)n(x,)i(is)e(a)g(w)n(a)n(y)g(to)g +(increase)g(the)h(lo)r(cal)f(resolution)0 2456 y(in)33 +b(unigrid)g(applications,)h(while)g(retaining)e(the)i(basic)e(unigrid)h +(c)n(haracter)e(of)i(an)g(application.)53 b(A)34 b(small)f(n)n(um)n(b)r +(er)0 2556 y(\(ma)n(yb)r(e)26 b(t)n(w)n(o)f(or)g(three\))g(of)h(grids)f +(with)h(v)-5 b(arying)25 b(resolution)g(o)n(v)n(erla)n(y)e(eac)n(h)i +(other,)g(where)h(the)g(coarsest)e(grid)h(has)g(the)0 +2655 y(largest)e(exten)n(t.)36 b(This)24 b(allo)n(ws)e(the)j +(application)f(to)g(b)r(ene\014t)h(from)e(the)i(higher)e(resolution)g +(of)h(the)h(smaller)e(grids)g(while)0 2755 y(k)n(eeping)j(the)h(outer)g +(b)r(oundary)f(far)g(out)h(at)f(the)i(same)e(time.)37 +b(The)27 b(main)g(adv)-5 b(an)n(tage)25 b(of)i(FMR)g(are)f(that)h(it)g +(needs)g(far)0 2855 y(less)g(resources)f(than)h(globally)g(increasing)f +(the)i(resolution.)0 2987 y +SDict begin H.S end + 0 2987 a 0 2987 a +SDict begin 12 H.A end + 0 2987 +a 0 2987 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.2) cvn H.B /DEST +pdfmark end + 0 2987 a 117 x Fl(1.2)112 b(Carp)s(et)0 3274 +y Fk(Carp)r(et)37 b(is)g(the)g(name)g(of)g(an)g(FMR)g(driv)n(er,)h +(i.e.)f(the)h(bac)n(k)e(end)h(that)h(handles)e(storage)f(allo)r(cation) +h(for)h(the)g(grid)0 3373 y(functions,)25 b(parallelism,)f(I/O,)g(and)g +(the)h(v)-5 b(arious)24 b(in)n(ter-grid)f(op)r(erations.)34 +b(Carp)r(et)24 b(w)n(as)g(dev)n(elop)r(ed)g(in)h(early)e(summer)0 +3473 y(of)33 b(2000)e(b)n(y)i(Erik)f(Sc)n(hnetter)h([)1009 +3473 y +SDict begin H.S end + 1009 3473 a Fk(Sc)n(h)1136 3415 y +SDict begin H.R end + 1136 3415 a +1136 3473 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__erik-schnetter) cvn H.B /ANN pdfmark end + 1136 3473 a Fk(],)i(then)f(a)f(researc)n(h)e(sc)n(holar)g +(in)i(the)h(Departmen)n(t)f(for)g(Astronom)n(y)f(and)h(Astro-)0 +3572 y(ph)n(ysics)27 b([)310 3572 y +SDict begin H.S end + 310 3572 a Fk(AA)435 +3516 y +SDict begin H.R end + 435 3516 a 435 3572 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__astro-psu-edu) cvn H.B /ANN pdfmark end + 435 3572 a Fk(])g(of)h(P)n(enn)f(State)h +(Univ)n(ersit)n(y)f([)1431 3572 y +SDict begin H.S end + 1431 3572 a Fk(P)n(en)1568 +3516 y +SDict begin H.R end + 1568 3516 a 1568 3572 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__psu-edu) cvn H.B /ANN pdfmark end + 1568 3572 a Fk(].)38 b(In)28 +b(spring)e(2001,)g(Carp)r(et)i(w)n(as)f(coupled)g(to)h(Cactus)f(as)g(a) +g(drop-in)0 3672 y(enhancemen)n(t)g(for)h(the)f(standard)g(unigrid)g +(Cactus)h(driv)n(er)e(PUGH.)0 3804 y +SDict begin H.S end + 0 3804 a 0 3804 +a +SDict begin 12 H.A end + 0 3804 a 0 3804 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.1.3) cvn H.B /DEST +pdfmark end + 0 3804 a 117 x Fl(1.3)112 b(Cactus)0 +4091 y Fk(F)-7 b(rom)27 b(the)h(main)g(Cactus)f(w)n(eb)g(pages)g([)1264 +4091 y +SDict begin H.S end + 1264 4091 a Fk(Cac)1402 4034 y +SDict begin H.R end + 1402 4034 a 1402 +4091 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__cactuscode-org) cvn H.B /ANN pdfmark end + 1402 4091 a Fk(]:)208 4274 y(Cactus)g(is)h(an)f(op)r(en)h +(source)f(problem)g(solving)g(en)n(vironmen)n(t)g(designed)h(for)f +(scien)n(tests)g(and)h(engineers.)208 4373 y(Its)33 b(mo)r(dular)g +(structure)f(easily)h(enables)g(parallel)f(computation)h(across)e +(di\013eren)n(t)i(arc)n(hitectures)f(and)208 4473 y(collab)r(orativ)n +(e)26 b(co)r(de)i(dev)n(elopmen)n(t)g(b)r(et)n(w)n(een)g(di\013eren)n +(t)h(groups.)37 b(Cactus)28 b(originated)f(in)i(the)g(academic)208 +4572 y(researc)n(h)18 b(comm)n(unit)n(y)-7 b(,)23 b(where)d(it)h(w)n +(as)f(dev)n(elop)r(ed)h(and)g(used)g(o)n(v)n(er)e(man)n(y)h(y)n(ears)f +(b)n(y)i(a)g(large)e(in)n(ternational)208 4672 y(collab)r(oration)25 +b(of)j(ph)n(ysicists)f(and)g(computational)g(scien)n(tists.)0 +4813 y +SDict begin H.S end + 0 4813 a 0 4813 a +SDict begin 12 H.A end + 0 4813 a 0 4813 a +SDict begin [ /View [/XYZ H.V] /Dest (section.2) cvn H.B /DEST pdfmark +end + 0 4813 a 150 +x Fm(2)135 b(In)l(tro)t(duction)0 5045 y +SDict begin H.S end + 0 5045 a 0 5045 +a +SDict begin 12 H.A end + 0 5045 a 0 5045 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.2.1) cvn H.B /DEST +pdfmark end + 0 5045 a 133 x Fl(2.1)112 b(Fixed)39 +b(Mesh)f(Re\014nemen)m(t)0 5348 y Fk(A)32 b(standard)f(w)n(a)n(y)g(of)g +(solving)g(partial)g(di\013eren)n(tial)h(equations)f(are)f(\014nite)j +(di\013erences)e(on)h(a)f(regular)f(grid.)49 b(This)32 +b(is)0 5448 y(also)22 b(called)g Fj(unigrid)p Fk(.)36 +b(Suc)n(h)23 b(an)f(application)g(discretises)g(its)h(problem)f(space)g +(on)n(to)g(a)h(single,)g(rectangular)e(grid)h(whic)n(h)0 +5547 y(has)i(ev)n(erywhere)f(the)i(same)g(grid)f(spacing.)35 +b(This)25 b(grid)f(migh)n(t)g(b)r(e)i(brok)n(en)d(up)i(in)n(to)g(sev)n +(eral)e(parts)h(for)g(parallelisation)0 5647 y(purp)r(oses,)j(but)h +(parallelisation)e(should)h(b)r(e)h(transparen)n(t)e(to)i(the)g(ph)n +(ysics)e(part)i(of)f(the)h(application.)1869 5989 y(1)p +eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark +end + 0 -137 a 125 154 a Fk(Increasing)23 +b(the)j(resolution)f(in)g(a)g(unigrid)g(application)g(is)h(somewhat)e +(exp)r(ensiv)n(e.)36 b(F)-7 b(or)25 b(example,)g(increasing)f(the)0 +254 y(resolution)e(b)n(y)h(a)g(factor)g(of)g(t)n(w)n(o)f(requires)g(a)h +(factor)g(of)g(eigh)n(t)g(more)f(storage)g(in)h(three)g(dimensions.)35 +b(Giv)n(en)23 b(a)g(constan)n(t)0 353 y(Couran)n(t)i(factor,)g(the)i +(calculation)e(time)i(will)f(ev)n(en)g(go)f(up)h(b)n(y)g(a)g(factor)f +(of)h(sixteen.)36 b(This)26 b(b)r(eha)n(viour)f(mak)n(es)g(it)i(easy)0 +453 y(to)33 b(\014nd)g(problems)g(that)g(cannot)g(b)r(e)g(solv)n(ed)f +(on)h(con)n(temp)r(orary)e(sup)r(ercomputers,)j(no)f(matter)f(ho)n(w)h +(big)g(and)g(fast)0 552 y(those)27 b(computers)g(are.)125 +669 y(Apart)h(from)g(ph)n(ysical)g(insigh)n(t,)h(whic)n(h)f(often)h +(has)f(to)h(b)r(e)g(used)f(to)h(decrease)e(the)i(problem)f(size)g(un)n +(til)h(it)g(\014ts)g(the)0 768 y(curren)n(t)20 b(hardw)n(are,)g(there)g +(are)f(also)h(n)n(umerical)f(and)i(algorithmic)e(metho)r(ds)i(to)f +(decrease)f(the)i(resource)e(requiremen)n(ts)0 868 y(of)30 +b(the)g(application.)44 b(Most)30 b(applications)f(need)h(the)g(high)g +(resolution)f(only)h(in)g(a)g(part)f(of)h(the)g(sim)n(ulation)g +(domain.)0 968 y(Discretisation)h(metho)r(ds)h(that)h(don't)f(require)f +(a)g(uniform)h(resolution,)g(suc)n(h)g(as)f(\014nite)h(elemen)n(ts,)h +(can)f(implemen)n(t)0 1067 y(non-uniform)c(resolutions)f(v)n(ery)h +(naturally)-7 b(.)39 b(One)29 b(problem)f(with)h(\014nite)g(elemen)n +(ts)g(is)f(that)h(man)n(y)f(ph)n(ysicists)g(to)r(da)n(y)0 +1167 y(are)h(not)g(familiar)g(with)i(\014nite)f(elemen)n(ts,)g(or)f(sh) +n(y)g(a)n(w)n(a)n(y)e(from)j(their)f(p)r(erceiv)n(ed)g(complexit)n(y)-7 +b(,)30 b(or)f(are)f(not)i(willing)g(to)0 1266 y(adapt)d(existing)g +(\014nite)i(di\013erence)e(co)r(de.)125 1383 y(Fixed)k(Mesh)g +(Re\014nemen)n(t)g(\(FMR\))h(is)f(a)g(p)r(o)r(or)f(man's)h(w)n(a)n(y)f +(of)h(implemen)n(ting)g(a)f(non-uniform)h(resolution)f(in)n(to)0 +1482 y(a)g(unigrid)h(application)f(with)h(minimal)g(c)n(hanges)f(to)g +(its)h(structure.)46 b(Instead)31 b(of)f(only)h(one)f(grid,)h(there)g +(are)e(sev)n(eral)0 1582 y(grids)g(or)f(grid)h(patc)n(hes)g(with)h +(di\013eren)n(t)f(resolutions.)42 b(The)29 b(coarsest)f(grid)h(usually) +g(encloses)f(the)i(whole)f(sim)n(ulation)0 1682 y(domain.)44 +b(Successiv)n(ely)29 b(\014ner)h(grids)g(o)n(v)n(erla)n(y)d(the)k +(coarse)d(grid)i(at)g(those)g(lo)r(cations)f(where)h(a)f(higher)h +(resolutions)f(is)0 1781 y(needed.)37 b(The)28 b(coarser)d(grids)i(pro) +n(vide)f(b)r(oundary)h(conditions)g(to)g(the)h(\014ner)g(grid)f +(through)g(in)n(terp)r(olation.)125 1897 y(Instead)i(of)g(up)r(dating)g +(only)g(one)g(grid,)g(the)g(application)g(has)g(to)g(up)r(date)g(all)g +(grids.)41 b(The)29 b(usual)g(approac)n(h)f(is)h(to)0 +1997 y(\014rst)21 b(tak)n(e)f(a)g(step)h(on)g(the)g(coarsest)e(grid,)j +(and)e(then)i(recursiv)n(ely)d(tak)n(e)h(sev)n(eral)f(smaller)h(steps)g +(on)h(the)g(\014ner)g(grids.)34 b(The)0 2097 y(Couran)n(t)27 +b(criterion)h(requires)f(that)i(the)h(step)e(sizes)g(on)h(the)g +(\014ner)f(grids)g(b)r(e)h(smaller)f(than)h(on)f(the)h(coarse)e(grid.) +40 b(The)0 2196 y(b)r(oundary)30 b(v)-5 b(alues)31 b(for)f(the)h +(\014ner)g(grids)f(are)g(found)h(through)f(in)n(terp)r(olation)g(in)i +(space)e(and)h(time)g(from)g(the)g(coarser)0 2296 y(grid.)36 +b(In)28 b(the)g(end,)g(the)g(information)f(on)g(the)h(\014ner)f(grids)g +(is)g(injected)i(in)n(to)e(the)h(coarse)e(grids.)125 +2412 y(Strictly)j(sp)r(eaking)f(there)h(is)g(no)g(need)g(for)g(a)g +(coarse)e(grid)i(on)f(the)i(regions)e(co)n(v)n(ered)f(b)n(y)i(the)g +(\014ner)g(grids.)41 b(But)29 b(as)0 2512 y(stated)19 +b(ab)r(o)n(v)n(e,)h(the)g(resources)e(required)g(for)h(treating)g(the)h +(o)n(v)n(erlapping)e(region)g(on)h(the)h(coarse)e(grid)h(are)f(only)h +(minimal)0 2611 y(compared)26 b(to)i(treating)f(the)h(\014ner)f(grids.) +36 b(And)28 b(b)r(ecause)g(a)f(coarse)f(grid)h(with)h(a)f(hole)g(often) +h(creates)e(complications,)0 2711 y(this)i(ob)n(vious)e(optimisation)h +(is)h(often)g(left)g(out.)0 2843 y +SDict begin H.S end + 0 2843 a 0 2843 a +SDict begin 12 H.A end + +0 2843 a 0 2843 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.2.2) cvn H.B /DEST +pdfmark end + 0 2843 a 117 x Fl(2.2)112 b(Carp)s(et)0 +3130 y Fk(Carp)r(et)24 b(is)h(a)g(C++)f(library)f(that)i(pro)n(vides)e +(infrastructure)h(to)h(describ)r(e)f(regions)g(of)g(v)-5 +b(arying)24 b(resolution)g(in)h(a)f(con)n(v)n(e-)0 3230 +y(nien)n(t)h(and)g(e\016cien)n(t)g(w)n(a)n(y)-7 b(.)34 +b(Carp)r(et)25 b(con)n(tains)f(routines)g(to)h(manage)e(grid)h(hierarc) +n(hies,)g(con)n(taining)g(the)h(relationships)0 3329 +y(b)r(et)n(w)n(een)34 b(the)h(comp)r(onen)n(ts)e(of)i(the)f(grid)g(on)g +(the)g(di\013eren)n(t)h(re\014nemen)n(t)f(and)g(con)n(v)n(ergence)d +(lev)n(els.)56 b(Carp)r(et)34 b(has)g(a)0 3429 y(notion)29 +b(of)h(sim)n(ulation)f(time)h(and)f(grid)g(spacing,)g(whic)n(h)h(are)e +(necessary)g(for)h(in)n(terp)r(olation,)g(and)h(con)n(tains)e +(e\016cien)n(t)0 3528 y(in)n(terp)r(olators.)125 3645 +y(Carp)r(et)35 b(can)g(run)g(on)g(sev)n(eral)f(pro)r(cessors)f(in)j +(parallel)e(using)h(MPI)g(for)g(comm)n(unication.)60 +b(Eac)n(h)34 b(grid)h(can)g(b)r(e)0 3744 y(brok)n(en)25 +b(do)n(wn)h(in)n(to)g(sev)n(eral)f(comp)r(onen)n(ts,)h(and)g(ev)n(ery)f +(comp)r(onen)n(t)h(has)g(a)g(home)g(pro)r(cessor.)34 +b(Carp)r(et)26 b(also)g(con)n(tains)0 3844 y(op)r(erators)g(to)h(mo)n +(v)n(e)g(certain)g(regions)f(to)h(a)g(di\013eren)n(t)h(pro)r(cessor,)d +(or)i(to)h(sync)n(hronise)e(all)h(comp)r(onen)n(ts)g(of)g(a)h(grid.)125 +3960 y(Carp)r(et)21 b(is)g(also)f(an)h(arrangemen)n(t)e(of)i(thorns)g +(for)g(Cactus,)h(implemen)n(ting)g(a)f(driv)n(er)f(and)h(asso)r(ciated) +f(I/O)g(routines)0 4060 y(for)j(b)r(oth)h(ASCI)r(I)h(and)e(binary)g +(I/O.)g(It)i(should)e(b)r(e)h(p)r(ossible)g(to)f(substitute)i(Carp)r +(et)e(for)h(the)g(standard)f(Cactus)g(driv)n(er)0 4159 +y(PUGH)30 b(without)h(c)n(hanges)e(to)g(the)i(application)e(thorns)h +(and)g(th)n(us)g(use)g(Carp)r(et)g(as)f(a)h(unigrid)f(driv)n(er.)43 +b(Making)30 b(use)0 4259 y(of)i(the)h(FMR)f(capabilities)g(of)g(Carp)r +(et)g(usually)g(requires)f(some)g(rearranging)e(of)j(the)h +(application,)g(comparable)d(in)0 4359 y(general)c(to)i(the)g(c)n +(hanges)e(necessary)g(for)h(a)g(unipro)r(cessor)f(application)h(to)g +(run)h(on)f(m)n(ultiple)h(pro)r(cessors.)125 4475 y(The)20 +b(driv)n(er)g(section)h(of)f(Carp)r(et)h(con)n(tains)f(the)h(logic)f +(to)h(manage)f(storage)f(for)h(the)h(grid)f(functions,)j(to)e(tra)n(v)n +(erse)d(the)0 4575 y(grid)k(hierarc)n(h)n(y)e(for)h(all)h(sc)n(heduled) +g(routines,)h(and)f(to)g(automatically)f(apply)h(the)h(necessary)d(in)n +(ter-grid)h(op)r(erators)f(for)0 4674 y(prolongation)g(\(in)n(terp)r +(olation)h(of)h(the)g(\014ne)g(grid)f(b)r(oundaries\))h(and)f +(restriction)g(\(injecting)i(the)f(\014ne)g(grid)f(information)0 +4774 y(bac)n(k)27 b(in)n(to)g(the)h(coarse)e(grid\).)125 +4890 y(The)31 b(ASCI)r(I)g(I/O)g(routines)f(use)h(the)g(quasi-standard) +f(gn)n(uplot)g([)2237 4906 y +SDict begin H.S end + 2237 4906 a -16 x Fk(gn)n(u)2369 +4854 y +SDict begin H.R end + 2369 4854 a 2369 4890 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__gnuplot-info) cvn H.B /ANN pdfmark end + 2369 4890 a Fk(])h(format.)47 +b(The)31 b(binary)f(I/O)g(routines)h(use)0 4990 y(the)i(FlexIO)f +(library)f([)731 4990 y +SDict begin H.S end + 731 4990 a Fk(Sha)865 4932 y +SDict begin H.R end + +865 4932 a 865 4990 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__FlexIO) cvn H.B /ANN pdfmark end + 865 4990 a Fk(])h(written)h(b)n(y)f(John)g +(Shalf.)51 b(It)33 b(allo)n(ws)e(e\016cien)n(t)h(and)h(platform)f +(indep)r(enden)n(t)h(I/O.)f(The)0 5089 y(FlexIO)27 b(format)g(is)h +(based)f(on)g(HDF)i([)1211 5089 y +SDict begin H.S end + 1211 5089 a Fk(HDF)1391 +5033 y +SDict begin H.R end + 1391 5033 a 1391 5089 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__HDF) cvn H.B /ANN pdfmark end + 1391 5089 a Fk(])e(and)h(also)e(supp)r +(orted)i(b)n(y)f(sev)n(eral)f(visualisation)g(pac)n(k)-5 +b(ages.)125 5205 y(Carp)r(et)29 b(is)h(cop)n(yrigh)n(ted)f(b)n(y)g +(Erik)g(Sc)n(hnetter,)i(and)f(is)g(a)n(v)-5 b(ailable)28 +b(under)i(the)h(GPL)e(licence)h(from)g(a)g(CVS)g([)3588 +5205 y +SDict begin H.S end + 3588 5205 a Fk(CVS)3756 5149 y +SDict begin H.R end + 3756 5149 a 3756 +5205 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__CVS) cvn H.B /ANN pdfmark end + 3756 5205 a Fk(])0 5305 y(rep)r(ository)-7 b(.)1869 +5989 y(2)p eop end +%%Page: 3 3 +TeXDict begin 3 2 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark +end + 0 -137 a 0 71 a +SDict begin H.S end + 0 71 a 0 71 +a +SDict begin 12 H.A end + 0 71 a 0 71 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.2.3) cvn H.B /DEST +pdfmark end + 0 71 a 83 x Fl(2.3)112 b(W)-9 b(a)m(v)m(eT)g(o)m(y)0 +324 y Fk(Cactus)35 b(comes)g(with)h(a)f(sample)g(application)g(called)h +Fj(WaveT)-6 b(oy)p Fk(,)39 b(whic)n(h)c(solv)n(es)f(the)i(scalar)e(w)n +(a)n(v)n(e)g(equation)h(with)0 423 y(v)-5 b(arious)28 +b(initial)h(data)g(and)g(b)r(oundary)f(conditions.)41 +b(An)29 b(an)g(example,)g(I)g(ha)n(v)n(e)f(extended)h(W)-7 +b(a)n(v)n(eT)g(o)n(y)27 b(so)i(that)g(is)g(uses)0 523 +y(Carp)r(et's)j(FMR)h(capabilities.)51 b(W)-7 b(a)n(v)n(eT)g(o)n(y)31 +b(serv)n(es)g(b)r(oth)h(as)g(a)g(test)h(case)f(for)g(Carp)r(et,)h(and)g +(as)e(example)h(of)h(ho)n(w)f(to)0 623 y(con)n(v)n(ert)26 +b(an)h(application)g(to)h(using)f(FMR.)125 739 y(The)19 +b(equation)g(solv)n(ed)f(b)n(y)h(W)-7 b(a)n(v)n(eT)g(o)n(y)17 +b(is)j(the)f(w)n(ell)g(kno)n(wn)g(scalar)f(w)n(a)n(v)n(e)f(equation,)k +(discretised)e(using)f(the)i(Leapfrog)0 839 y(metho)r(d)28 +b(with)g(three)g(time)g(lev)n(els,)f(yielding)g(second)h(order)e +(accuracy)g(in)i(space)f(and)g(time.)38 b(A)28 b(t)n(ypical)f(set)h(of) +f(initial)0 938 y(data)22 b(are)g(a)g(plane)g(w)n(a)n(v)n(e,)g(and)g(a) +g(t)n(ypical)g(b)r(oundary)g(condition)g(is)h(p)r(erio)r(dicit)n(y)-7 +b(.)35 b(Those)22 b(allo)n(w)f(long)h(term)g(sim)n(ulations)0 +1038 y(as)27 b(w)n(ell)g(as)g(easy)g(and)g(meaningful)h(comparisons)e +(to)h(the)h(analytic)f(solution.)0 1179 y +SDict begin H.S end + 0 1179 a 0 +1179 a +SDict begin 12 H.A end + 0 1179 a 0 1179 a +SDict begin [ /View [/XYZ H.V] /Dest (section.3) cvn H.B /DEST pdfmark +end + 0 1179 a 150 x Fm(3)135 b(Compiling)46 +b(Cactus)f(With)g(Carp)t(et)0 1527 y Fk(Carp)r(et)36 +b(has)g(b)r(een)g(written)h(in)g(C++,)g(using)f(templates)h(and)f(the)g +(STL)h(\(Standard)f(T)-7 b(emplate)36 b(Library\).)62 +b(Both)0 1627 y(templates)28 b(and)f(the)h(STL)g(mak)n(e)f(writing)g +(and)h(debugging)e(co)r(de)i(a)f(lot)h(easier.)36 b(Without)28 +b(templates,)g(I)g(w)n(ould)f(ha)n(v)n(e)0 1727 y(had)e(to)h(put)g(m)n +(uc)n(h)g(e\013ort)f(in)n(to)h(making)f(Carp)r(et)g(supp)r(ort)g(all)h +(of)f(Cactus')h(data)f(t)n(yp)r(es.)36 b(Without)27 b(the)f(STL,)f(I)h +(w)n(ould)0 1826 y(ha)n(v)n(e)34 b(had)g(to)h(sp)r(end)h(quite)f(some)f +(time)i(implemen)n(ting)f(basic)f(con)n(tainers)f(suc)n(h)i(as)f(lists) +h(or)f(sets.)59 b(I)35 b(still)g(had)g(to)0 1926 y(implemen)n(t)g(a)e +(custom)h(v)n(ector)f(t)n(yp)r(e,)j(b)r(ecause)e(STL's)g(v)n(ector)f(t) +n(yp)r(e)h(is)g(optimised)g(for)g(large)f(v)n(ectors)f(only)-7 +b(,)36 b(and)e(I)0 2026 y(needed)28 b(threedimensional)f(v)n(ectors)f +(of)h(in)n(tegers.)125 2142 y(The)32 b(inner)h(lo)r(ops)f(of)g(Carp)r +(et)h(are)e(the)i(in)n(ter-grid)f(op)r(erators,)g(that)h(is)f(the)h +(routines)f(that)h(cop)n(y)-7 b(,)33 b(restrict,)h(and)0 +2241 y(prolongate)24 b(b)r(et)n(w)n(een)i(grids.)35 b(Due)27 +b(to)f(Cactus)f(it)i(w)n(as)d(rather)h(easy)g(to)h(write)g(these)g(in)g +Fi(F)n(or)-6 b(tran)30 b(77)p Fk(,)c(whic)n(h)g(mak)n(es)0 +2341 y(them)i(b)r(oth)g(fast)g(and)f(p)r(ortable.)125 +2457 y(Carp)r(et)35 b(is)g(an)h(arrangemen)n(t)d(in)j(Cactus.)61 +b(It)36 b(can)f(theoretically)g(b)r(e)h(compiled)f(without)h(an)n(y)f +(other)g(external)0 2557 y(library)-7 b(,)22 b(if)h(y)n(ou)f(don't)h +(include)g(the)g(binary)f(I/O)f(supp)r(ort)i(whic)n(h)f(requires)g +(FlexIO.)g(I)g(do)h(recommend)f(using)g(FlexIO,)0 2657 +y(so)32 b(y)n(ou)g(should)g(install)h(the)g(FlexIO)f(library)g +(\014rst.)52 b(Although)33 b(FlexIO)f(is)g(already)g(part)g(of)h +(Cactus)f(in)h(the)g(thorn)0 2756 y(called)d(CactusExternal/FlexIO,)f +(this)i(seems)f(to)h(b)r(e)g(a)f(v)n(ersion)g(that)h(has)f(FMR)h(supp)r +(ort)g(disabled)f(and)h(is)g(hence)0 2856 y(not)d(usable.)36 +b(Y)-7 b(ou)28 b(will)f(ha)n(v)n(e)g(to)g(install)h(a)f(complete)h(cop) +n(y)e(of)i(FlexIO)f(b)n(y)g(hand.)0 2988 y +SDict begin H.S end + 0 2988 a 0 +2988 a +SDict begin 12 H.A end + 0 2988 a 0 2988 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.1) cvn H.B /DEST +pdfmark end + 0 2988 a 117 x Fl(3.1)112 b(Hurdle)38 +b(1:)50 b(FlexIO)0 3275 y Fk(I)21 b(suggest)f(that)h(y)n(ou)f(enable)g +(supp)r(ort)h(for)f(the)h(HDF)h(format)e(in)h(the)g(FlexIO)g(library)-7 +b(,)21 b(although)f(this)h(is)f(not)h(necessary)-7 b(.)0 +3374 y(If)28 b(y)n(ou)f(don't)h(w)n(an)n(t)f(to)g(do)g(this,)h(then)g +(y)n(ou)f(don't)h(ha)n(v)n(e)e(to)i(install)f(the)h(HDF)h(libraries)d +(in)i(the)g(follo)n(wing.)0 3457 y +SDict begin H.S end + 0 3457 a 0 3457 a +SDict begin 12 H.A end + +0 3457 a 0 3457 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.1) cvn H.B /DEST pdfmark +end + 0 3457 a 101 3574 a Fk(1.)42 b(Install)22 +b(the)h(HDF4)h(and)f(HDF5)g(libraries.)34 b(They)22 b(are)g(a)n(v)-5 +b(ailable)22 b(from)g(the)i(HDF)f(w)n(eb)g(pages)f([)3214 +3574 y +SDict begin H.S end + 3214 3574 a Fk(HDF)3394 3517 y +SDict begin H.R end + 3394 3517 a 3394 +3574 a +SDict begin [ /Color [0 1 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (cite.Carpet__HDF) cvn H.B /ANN pdfmark end + 3394 3574 a Fk(],)i(and)e(they)208 3673 y(can)28 +b(b)r(e)i(installed)e(with)i(the)f(usual)g Fh(./configure;)39 +b(make;)i(make)h(install)26 b Fk(triplet.)41 b(They)29 +b(should)g(already)208 3773 y(b)r(e)i(installed)g(b)n(y)g(default)h(on) +f(most)g(mac)n(hines.)46 b(The)32 b(con)n(v)n(ersion)c(utilities)k(b)r +(et)n(w)n(een)f(HDF4)h(and)f(HDF5)h(are)208 3872 y(installed)26 +b(automatically)g(when)h(y)n(ou)f(install)h(HDF5)g(while)g(HDF4)g(is)g +(already)e(installed.)37 b(\(That)27 b(means)f(that)208 +3972 y(y)n(ou)g(should)i(install)f(HDF4)h(\014rst,)g(and)f(then)h +(HDF5.\))0 4026 y +SDict begin H.S end + 0 4026 a 0 4026 a +SDict begin 12 H.A end + 0 4026 a 0 4026 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.2) cvn H.B /DEST pdfmark +end + +0 4026 a 101 4138 a Fk(2.)42 b(Get)28 b(the)g(FlexIO)f(library)f(from)h +(the)h(Cactus)f(CVS)h(serv)n(er:)208 4238 y Fh(cvs)42 +b(-d)h(:pserver:)p Fg(yourlo)o(gin)8 b Fh(@cvs.cactuscode)o(.or)o(g:)o +(/pa)o(ck)o(ag)o(es)37 b(checkout)j(FlexIO)p Fk(.)21 +b(If)i(y)n(ou)f(do)h(not)208 4337 y(ha)n(v)n(e)30 b(a)h(login,)h(then)g +(use)f(the)h(login)f Fh(cvs)p 1538 4337 27 4 v 30 w(anon)f +Fk(for)h(anon)n(ymous)f(access.)48 b(The)31 b(Cactus)g(w)n(eb)h(pages)e +(describ)r(e)208 4437 y(ho)n(w)d(to)g(do)g(this.)0 4470 +y +SDict begin H.S end + 0 4470 a 0 4470 a +SDict begin 12 H.A end + 0 4470 a 0 4470 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.3) cvn H.B /DEST pdfmark +end + 0 4470 a 101 4603 +a Fk(3.)42 b(Con\014gure)h(FlexIO)h(while)h(pro)n(viding)f(the)h(paths) +g(to)f(the)h(HDF4)h(and)e(HDF5)h(libraries:)70 b Fh(./configure)208 +4703 y(--with-hdf4=/us)o(r)38 b(--with-hdf5=/us)o(r)p +Fk(,)20 b(assuming)k(that)h(HDF4)h(and)f(HDF5)h(are)e(installed)h +(under)g Fh(/usr)p Fk(.)208 4802 y(Y)-7 b(ou)28 b(can)f(also)g +(con\014gure)g(without)i(HDF)g(supp)r(ort,)f(but)h(then)f(y)n(ou)g +(will)g(not)g(b)r(e)h(able)e(to)h(read)g(or)f(write)h(HDF)208 +4902 y(\014les.)36 b(FlexIO)28 b(will)f(then)h(supp)r(ort)g(only)f(the) +h(built-in)g Fh(IEEEIO)d Fk(format.)0 4951 y +SDict begin H.S end + 0 4951 a +0 4951 a +SDict begin 12 H.A end + 0 4951 a 0 4951 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.4) cvn H.B /DEST pdfmark +end + 0 4951 a 101 5068 a Fk(4.)42 +b(Edit)32 b(the)g(top)g(of)g(the)g(\014le)h Fh(FlexIO/Makefile)26 +b Fk(to)31 b(matc)n(h)h(y)n(our)f(actual)g(con\014guration.)49 +b(The)32 b Fh(./configure)208 5168 y Fk(script)d(of)h(FlexIO)g(is)g(a)g +(bit)g(simplistic,)i(so)d(don't)h(sp)r(end)h(to)r(o)f(m)n(uc)n(h)f +(e\013ort)h(trying)g(to)g(con)n(vince)f(it)h(to)g(do)g(the)208 +5267 y(righ)n(t)c(thing.)208 5400 y(On)33 b(m)n(y)h(mac)n(hine,)h(I)f +(had)g(to)g(c)n(hange)f(the)h(settings)g Fh(CC)43 b(=)g(mpicc)p +Fk(,)34 b Fh(C++)42 b(=)h(mpiCC)f(-DMPICH)p 3266 5400 +27 4 v 28 w(SKIP)p 3470 5400 V 30 w(MPICXX)p Fk(,)208 +5500 y(and)29 b Fh(HDFINCLUDES)39 b(=)44 b(-I$\(HDFROOT\)/in)o(clu)o +(de)o(/h)o(df)24 b Fk(b)n(y)29 b(hand.)44 b(I)30 b(am)g(using)g(Debian) +g(Lin)n(ux)g(on)g(an)f(IA32)208 5599 y(with)e(gcc)g(2.95.4)e(and)i +(MPICH)h(1.2.4,)e(and)h(I)g(ha)n(v)n(e)f(an)h(HDF5)h(library)e(where)g +(supp)r(ort)h(for)g(parallel)f(I/O)h(w)n(as)208 5699 +y(enabled.)1869 5989 y(3)p eop end +%%Page: 4 4 +TeXDict begin 4 3 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark +end + 0 -137 a 0 71 a +SDict begin H.S end + 0 71 a 0 71 +a +SDict begin 12 H.A end + 0 71 a 0 71 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.5) cvn H.B /DEST pdfmark +end + 0 71 a 101 154 a Fk(5.)42 b(Compile)27 +b(the)h(library)e(with)i Fh(make)p Fk(.)0 203 y +SDict begin H.S end + 0 203 +a 0 203 a +SDict begin 12 H.A end + 0 203 a 0 203 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.6) cvn H.B /DEST pdfmark +end + 0 203 a 101 320 a Fk(6.)42 +b(The)29 b(library)f(cannot)h(b)r(e)g(installed)h(automatically)-7 +b(.)40 b(Y)-7 b(ou)30 b(usually)f(use)g(the)g(include)h(and)f(library)f +(\014les)h(where)208 420 y(they)24 b(are.)34 b(If)25 +b(y)n(ou)e(w)n(an)n(t)h(to)g(install)f(the)i(library)-7 +b(,)23 b(cop)n(y)h(all)f(the)i(header)e(\014les)h(\()p +Fh(*.h)43 b(*.hh)e(*.H)p Fk(\))24 b(and)f(the)i(library)208 +519 y(\014les)i(\()p Fh(*.a)p Fk(\).)125 719 y(Y)-7 b(es,)27 +b(I)h(also)e(think)j(that)e(this)h(is)g(w)n(a)n(y)e(to)r(o)h +(complicated.)0 851 y +SDict begin H.S end + 0 851 a 0 851 a +SDict begin 12 H.A end + 0 851 a 0 851 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.2) cvn H.B /DEST +pdfmark end + +0 851 a 117 x Fl(3.2)112 b(Hurdle)38 b(2:)50 b(STL)0 +1137 y Fk(Some)34 b(op)r(erating)f(systems)g(do)h(not)g(ha)n(v)n(e)f(a) +h(complian)n(t)f(STL)h(\(Standard)g(T)-7 b(emplate)34 +b(Library\))f(installed.)56 b(If)35 b(not,)0 1237 y(then)28 +b(y)n(ou)f(are)g(in)g(trouble.)37 b(Carp)r(et)27 b(do)r(es)g(mak)n(e)g +(use)h(of)f(the)h(STL,)g(and)f(there)h(is)f(no)g(w)n(a)n(y)g(around)f +(that.)0 1369 y +SDict begin H.S end + 0 1369 a 0 1369 a +SDict begin 12 H.A end + 0 1369 a 0 1369 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.3) cvn H.B /DEST +pdfmark end + 0 +1369 a 117 x Fl(3.3)112 b(Hurdle)38 b(3:)50 b(T)-9 b(emplates)0 +1656 y Fk(Some)32 b(compilers)f(con)n(tain)h(switc)n(hes)f(to)h(instan) +n(tiate)g(some)g(or)f(all)h(templates)g(automatically)-7 +b(.)50 b(This)32 b(usually)g(do)r(es)0 1755 y(not)c(w)n(ork)e(when)j +(\014les)f(are)e(put)j(in)n(to)f(libraries,)e(whic)n(h)i(is)g(what)g +(Cactus)g(do)r(es.)37 b(The)28 b(sc)n(heme)g(that)g(I)g(found)g(w)n +(orking)0 1855 y(on)g(all)g(mac)n(hines)f(is)h(to)g(instan)n(tiate)f +(most)h(templates)g(b)n(y)g(hand,)g(and)g(ha)n(v)n(e)f(the)i(compiler)e +(instan)n(tiate)h(the)g(missing)0 1955 y(templates)38 +b(for)g(ev)n(ery)f(ob)5 b(ject)39 b(\014le.)69 b(This)38 +b(is)g(the)h(default)g(for)f(gcc.)68 b(On)39 b(SGIs,)i(y)n(ou)c(ha)n(v) +n(e)h(to)g(pass)f(the)i(options)0 2054 y Fh(-no)p 137 +2054 27 4 v 30 w(auto)p 343 2054 V 30 w(include)i(-ptused)24 +b Fk(to)k(the)g(C++)f(compiler.)125 2171 y(The)k(C++)g(standard)g(sp)r +(eci\014es)g(a)g(limit)i(when)e(using)h(templates)f(as)g(template)h +(parameters.)47 b(Carp)r(et's)31 b(use)h(of)0 2270 y(the)c(GNU)g(STL)g +(exceeds)f(this)h(limit.)37 b(Gcc)28 b(requires)e(the)i(option)g +Fh(-ftemplate-dept)o(h-3)o(0)21 b Fk(to)28 b(enable)f(this.)0 +2405 y +SDict begin H.S end + 0 2405 a 0 2405 a +SDict begin 12 H.A end + 0 2405 a 0 2405 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.4) cvn H.B /DEST +pdfmark end + 0 2405 a 114 +x Fl(3.4)112 b(W)-9 b(a)m(v)m(eT)g(o)m(y)0 2689 y Fk(Unfortunately)i(,) +31 b(PUGH)g(and)f(Carp)r(et)g(cannot)g(y)n(et)g(b)r(e)h(b)r(oth)f +(compiled)h(in)n(to)f(a)g(single)g(application.)44 b(\(This)31 +b(will)f(b)r(e)0 2789 y(\014xed)k(so)r(on.\))56 b(That)34 +b(means)g(that)h(y)n(ou)e(will)h(ha)n(v)n(e)f(separate)g(executables)h +(for)f(unigrid)h(and)g(for)g(mesh)g(re\014nemen)n(t)0 +2888 y(applications.)125 3005 y(Con\014guring)28 b(Carp)r(et)h(is)h +(not)g(quite)g(trivial,)g(b)r(ecause)f(Cactus)g(pro)n(vides)g(curren)n +(tly)g(no)g(w)n(a)n(y)g(to)g(auto)r(detect)h(the)0 3104 +y(settings)35 b(for)f(Carp)r(et.)59 b(Hence)36 b(y)n(ou)e(will)h(ha)n +(v)n(e)f(to)h(set)g(the)h(settings)e(man)n(ually)-7 b(.)59 +b(I)35 b(prop)r(ose)f(that)h(y)n(ou)g(start)f(with)0 +3204 y(on)29 b(of)h(the)g(pre-made)f(options)g(\014les)g(in)h(the)g +(directory)g Fh(Carpet/Carpet/o)o(pt)o(ion)o(s)p Fk(.)37 +b(T)-7 b(ry)29 b(e.g.)g Fh(carpet-harpo-sgi)0 3303 y +Fk(for)j(an)f(SGI,)i(or)e Fh(carpet-lilypond)26 b Fk(for)31 +b(Lin)n(ux)h(with)h(gcc,)f(or)f Fh(carpet-lilypond-i)o(c)26 +b Fk(for)32 b(Lin)n(ux)f(with)i(the)f(In)n(tel)0 3403 +y(compilers.)j(Once)25 b(y)n(ou)g(ha)n(v)n(e)f(a)h(w)n(orking)f +(options)g(\014le)i(for)f(y)n(our)f(mac)n(hine,)h(send)h(it)f(to)h(me,) +g(so)e(that)i(I)f(can)g(include)h(it.)125 3519 y(As)h(for)h(the)g +(thorn)f(list:)38 b(Carp)r(et)27 b(has)g(its)h(o)n(wn)f(ASCI)r(I)i +(output)f(thorn,)g(whic)n(h)f(outputs)h(more)f(information)g(than)0 +3619 y(CactusBase/IO)n(ASCI)r(I.)f(The)h(thorn)g(list)h(that)g(I)g(use) +f(is)0 3818 y Fh(CactusBase/Bound)o(ary)691 b(#)43 b(boundary)d +(\(grid\))h([)i(])g({)h(})0 3918 y(CactusBase/CartG)o(rid)o(3D)604 +b(#)43 b(grid)f(\()h(\))g([)g(])g({driver})0 4017 y(#CactusBase/IOAS)o +(CII)734 b(#)43 b(IOASCII)e(\(IO,Hyperslab\))d([)43 b(])g({IO})0 +4117 y(CactusBase/IOBas)o(ic)735 b(#)43 b(IOBasic)d(\(IO\))i([)h(])h +({IO})0 4217 y(CactusBase/IOUti)o(l)779 b(#)43 b(IO)f(\()i(\))f([)g(])g +({)g(})0 4316 y(CactusBase/Local)o(Int)o(er)o(p)561 b(#)43 +b(LocalInterp)c(\()k(\))g([)g(])g({)h(})0 4416 y(CactusBase/Time)866 +b(#)43 b(time)f(\()h(\))g([)g(])g({)g(})0 4516 y(CactusConnect/HT)o +(TPD)691 b(#)43 b(HTTPD)e(\(Socket\))f([)k(])f({Cactus})0 +4615 y(CactusConnect/HT)o(TPD)o(Ex)o(tr)o(a)474 b(#)43 +b(http_utils)c(\(httpd,IO\))h([)j(])g({)g(})0 4715 y(CactusConnect/So)o +(cke)o(t)648 b(#)43 b(Socket)e(\()i(\))g([)g(])g({)h(})0 +4814 y(#CactusExternal/)o(Fle)o(xI)o(O)604 b(#)43 b(FlexIO)e(\()j(\))f +([)g(])g({)g(})0 4914 y(CactusExternal/j)o(peg)o(6b)604 +b(#)43 b(jpeg6b)e(\()i(\))g([)g(])g({)h(})0 5014 y(CactusIO/IOJpeg)866 +b(#)43 b(IOJpeg)e(\(IO,Hyperslab,jp)o(eg)o(6b\))c([)43 +b(])g({IO})0 5113 y(CactusUtils/NaNC)o(hec)o(ke)o(r)561 +b(#)43 b(NaNChecker)c(\()k(\))g([)h(])f({)g(})0 5213 +y(CactusWave/IDSca)o(lar)o(Wa)o(ve)517 b(#)43 b(idscalarwave)38 +b(\(wavetoy,grid\))g([)43 b(])g({grid})0 5313 y(CactusWave/IDSca)o(lar) +o(Wa)o(ve)o(C)474 b(#)43 b(idscalarwave)38 b(\(wavetoy,grid\))g([)43 +b(])g({grid})0 5412 y(CactusWave/IDSca)o(lar)o(Wa)o(ve)o(CXX)386 +b(#)43 b(idscalarwave)38 b(\(wavetoy,grid\))g([)43 b(])g({grid})0 +5512 y(#CactusWave/IDSc)o(ala)o(rW)o(av)o(eEl)o(li)o(pti)o(c)168 +b(#)43 b(idscalarwaveellip)o(ti)o(c)38 b(\(grid,wavetoy,e)o(llb)o(as)o +(e\))f([)43 b(])g({idscalarwave})0 5611 y(CactusWave/WaveB)o(ina)o(ry)o +(So)o(urc)o(e)343 b(#)43 b(binarysource)38 b(\(wavetoy,grid,ids)o(ca)o +(lar)o(wa)o(ve\))f([)43 b(])g({)g(})0 5711 y(CactusWave/WaveT)o(oyC)691 +b(#)43 b(wavetoy)d(\(Grid,Boundary\))e([)43 b(])g({)g(})1869 +5989 y Fk(4)p eop end +%%Page: 5 5 +TeXDict begin 5 4 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark +end + 0 -137 a 291 x Fh(CactusWave/WaveT)o(oyC)o(XX) +604 b(#)43 b(wavetoy)d(\(Grid,Boundary\))e([)43 b(])g({)g(})0 +254 y(CactusWave/WaveT)o(oyF)o(77)604 b(#)43 b(wavetoy)d +(\(Grid,Boundary\))e([)43 b(])g({)g(})0 353 y(#CactusWave/Wave)o(Toy)o +(F9)o(0)604 b(#)43 b(wavetoy)e(\(Grid,Boundary\))c([)44 +b(])f({)g(})0 453 y(#CactusWave/Wave)o(Toy)o(Fr)o(ee)o(F90)429 +b(#)43 b(wavetoy)e(\(Grid,Boundary\))c([)44 b(])f({)g(})0 +552 y(Carpet/Carpet)954 b(#)43 b(driver)e(\(CarpetLib\))e([)k(])g +({Cactus,IO})0 652 y(Carpet/CarpetIOA)o(SCI)o(I)648 b(#)43 +b(IOASCII)d(\(CarpetLib,driver)o(,Hy)o(pe)o(rs)o(lab)o(\))d([)44 +b(])f({IO})0 752 y(Carpet/CarpetIOF)o(lex)o(IO)604 b(#)43 +b(IOFlexIO)d(\(CarpetLib,drive)o(r,H)o(yp)o(er)o(sla)o(b\))d([)43 +b(])g({IO})0 851 y(#Carpet/CarpetIO)o(HDF)o(5)691 b(#)43 +b(IOHDF5)e(\(CarpetLib,driver)o(,Hy)o(pe)o(rs)o(lab)o(\))c([)44 +b(])f({IO})0 951 y(#Carpet/CarpetIO)o(Ser)734 b(#)43 +b(IOSer)f(\(CarpetLib,drive)o(r,)o(Hyp)o(er)o(sl)o(ab\))37 +b([)43 b(])g({IO})0 1051 y(Carpet/CarpetLib)822 b(#)43 +b(CarpetLib)d(\()j(\))g([)g(])g({)g(})0 1150 y(Carpet/CarpetRed)o(uce) +691 b(#)43 b(reduce)e(\(CarpetLib,drive)o(r\))c([)43 +b(])g({)g(})0 1250 y(Carpet/CarpetReg)o(rid)691 b(#)43 +b(CarpetRegrid)38 b(\(CarpetLib,driver)o(\))f([)44 b(])f({)g(})0 +1349 y(Carpet/CarpetSla)o(b)779 b(#)43 b(Hyperslab)d(\(CarpetLib,driv)o +(er\))d([)43 b(])g({)g(})125 1549 y Fk(The)21 b(thorns)h(pre\014xed)f +(with)h Fh(#)g Fk(are)f(disabled.)35 b(IO)n(ASCI)r(I)21 +b(con\015icts)h(with)g(Carp)r(etIO)n(ASCI)r(I,)g(and)f(FlexIO)h +(con\015icts)0 1648 y(with)36 b(the)f(external)g(FlexIO)f(library)g +(that)i(Carp)r(etIOFlexIO)d(uses.)60 b(I)35 b(disabled)g(IDScalarW)-7 +b(a)n(v)n(eElliptic)33 b(b)r(ecause)0 1748 y(there)24 +b(is)h(no)f(elliptic)h(solv)n(er)e(for)h(mesh)h(re\014nemen)n(t,)g(and) +f(I)h(disabled)f(W)-7 b(a)n(v)n(eT)g(o)n(yF90)22 b(and)i(W)-7 +b(a)n(v)n(eT)g(o)n(yF)g(reeF90)22 b(b)r(ecause)0 1848 +y(gcc)28 b(do)r(es)g(not)h(con)n(tain)e(a)i(F)-7 b(ortran)27 +b(90)h(compiler.)39 b(Carp)r(etIOHDF5)28 b(is)g(not)h(y)n(et)f +(\014nished,)h(and)f(Carp)r(etIOSer)g(needs)0 1947 y(the)g(Ser)f +(library)f(whic)n(h)i(is)f(not)h(publically)g(a)n(v)-5 +b(ailable.)125 2063 y(The)33 b(CactusConnect,)i(CactusExternal,)f +(CactusIO,)f(and)g(CactusUtils)h(thorns)f(are)g(not)h(necessary)-7 +b(,)33 b(but)i(are)0 2163 y(nice)28 b(to)f(ha)n(v)n(e)g(around.)35 +b(Y)-7 b(ou)28 b(can)f(safely)g(omit)h(these.)0 2304 +y +SDict begin H.S end + 0 2304 a 0 2304 a +SDict begin 12 H.A end + 0 2304 a 0 2304 a +SDict begin [ /View [/XYZ H.V] /Dest (section.4) cvn H.B /DEST pdfmark +end + 0 2304 a 150 x +Fm(4)135 b(Running)44 b(The)h(Example)h(Applications)0 +2653 y Fk(Although)32 b(Carp)r(et)f(w)n(orks)f(\014ne)i(with)g(the)g +(standard)e(W)-7 b(a)n(v)n(eT)g(o)n(y)30 b(thorns,)i(all)g(the)g +(example)f(parameter)f(\014les)h(in)h(the)0 2752 y(CactusW)-7 +b(a)n(v)n(e)26 b(arrangemen)n(t)g(use)h(PUGH,)h(and)f(can)h(therefore)e +(not)i(b)r(e)g(directly)f(used.)125 2869 y(The)c(co)r(ordinate)f(thorn) +g(CactusBase/CartGrid3D)f(do)r(es)i(not)g(pro)n(vide)f(p)r(erio)r(dic)h +(b)r(oundary)f(conditions.)35 b(These)0 2968 y(are)18 +b(normally)f(pro)n(vided)h(b)n(y)h(the)g(driv)n(er)e(PUGH.)i(Ho)n(w)n +(ev)n(er,)g(Carp)r(et)f(do)r(es)h(not)g(con)n(tain)f(an)n(y)g(b)r +(oundary)g(conditions.)33 b(If)0 3068 y(y)n(ou)20 b(w)n(an)n(t)g(to)g +(apply)g(p)r(erio)r(dic)h(b)r(oundaries,)g(y)n(ou)e(will)i(therefore)f +(ha)n(v)n(e)f(to)h(use)h(the)g(AlphaThorns/Cart3d)d(co)r(ordinate)0 +3167 y(thorn)26 b(instead,)h(whic)n(h)f(do)r(es)g(pro)n(vide)f(p)r +(erio)r(dicit)n(y)-7 b(.)37 b(Unfortunately)-7 b(,)26 +b(AlphaThorns/Cart3d)e(is)j(incompatible)f(with)0 3267 +y(CactusBase/CartGrid3D.)17 b(There)h(is)i(a)f(v)n(ersion)e(of)j(W)-7 +b(a)n(v)n(eT)g(o)n(y)17 b(in)j(the)g(Carp)r(et)f(arrangemen)n(t)e(that) +i(has)g(b)r(een)h(adapted)0 3367 y(to)30 b(AlphaThorns/Cart3d.)41 +b(I)29 b(suggest)g(that)h(y)n(ou)f(use)h(this)g(v)n(ersion)e(of)i(W)-7 +b(a)n(v)n(eT)g(o)n(y)27 b(instead)j(of)g(CactusW)-7 b(a)n(v)n(e)28 +b(to)i(run)0 3466 y(test)e(problems,)f(b)r(ecause)g(p)r(erio)r(dicit)n +(y)g(mak)n(es)g(for)g(nice)h(testing)f(setups.)125 3583 +y(Y)-7 b(ou)30 b(can)f(\014nd)i(quite)f(a)g(few)g(example)f(parameter)g +(\014les)h(in)g(the)g(directory)g Fh(Carpet/WaveToyF77)o(/p)o(ar)p +Fk(.)38 b(I)30 b(esp)r(e-)0 3682 y(cially)i(recommend)f(the)i +Fh(wavetoyf77)p 1264 3682 27 4 v 27 w(periodic)p 1643 +3682 V 28 w(*)f Fk(set,)h(whic)n(h)f(comes)g(in)g(t)n(w)n(o)f(sizes)h +(\()p Fh(coarse)e Fk(and)i Fh(fine)p Fk(,)g(corre-)0 +3782 y(sp)r(onding)26 b(to)g(a)g(small)g(and)g(a)g(large)f(sim)n +(ulation)h(domain\))g(and)g(three)g(di\013eren)n(t)g(re\014nemen)n(t)g +(hierarc)n(hies)f(\(with)i(one,)0 3881 y(t)n(w)n(o,)37 +b(and)e(three)h(lev)n(el)f(altogether,)h(resp)r(ectiv)n(ely\).)60 +b(This)36 b(set)f(th)n(us)h(forms)f(a)g(con)n(v)n(ergence)e(test,)38 +b(whic)n(h)d(y)n(ou)g(can)0 3981 y(run)26 b(and)f(test)i(y)n(ourself.) +35 b(The)26 b(set)g Fh(wavetoyf77)p 1552 3981 V 27 w(rad)p +1711 3981 V 30 w(full)p 1917 3981 V 30 w(*)f Fk(uses)h(radiativ)n(e)e +(instead)i(of)g(p)r(erio)r(dic)g(b)r(oundaries)f(and)0 +4081 y(should)h(also)f(b)r(e)i(nice)g(to)f(lo)r(ok)g(at.)36 +b(The)26 b(\014le)h Fh(wavetoyf77)p 1868 4081 V 27 w(rad)p +2027 4081 V 30 w(automatic.par)21 b Fk(is)27 b(an)f(attempt)h(at)f +(adaptiv)n(e)g(mesh)0 4180 y(re\014nemen)n(t,)h(whic)n(h)h(ma)n(y)f(or) +g(ma)n(y)f(not)i(w)n(ork,)e(dep)r(ending)i(on)g(the)g(curren)n(t)e +(status)i(of)f(Carp)r(et.)125 4297 y(Second)34 b(order)g(con)n(v)n +(ergence)f(requires)h(second)g(order)g(in)n(terp)r(olation)g(in)h +(time,)j(whic)n(h)d(requires)f(that)h(at)g(least)0 4396 +y(three)27 b(time)i(lev)n(els)d(are)h(presen)n(t.)0 4537 +y +SDict begin H.S end + 0 4537 a 0 4537 a +SDict begin 12 H.A end + 0 4537 a 0 4537 a +SDict begin [ /View [/XYZ H.V] /Dest (section.5) cvn H.B /DEST pdfmark +end + 0 4537 a 150 x +Fm(5)135 b(F)-11 b(old)44 b(Y)-11 b(our)44 b(Own)h(FMR)f(Application)0 +4886 y Fk(There)33 b(are)f(three)h(steps)g(to)g(tak)n(e)f(from)h(a)f +(simple)i(unigrid)e(unipro)r(cessor)g(to)n(y)g(application)h(to)f(a)h +(full-blo)n(wn)g(FMR)0 4985 y(m)n(ultipro)r(cessor)27 +b(pro)r(duction)h(application.)38 b(Those)28 b(steps)g(are)g(almost)g +(indep)r(enden)n(t,)h(and)f(I)h(w)n(ould)f(lik)n(e)g(to)g(explain)0 +5085 y(them)g(and)g(their)f(implications)g(in)h(some)f(detail)h(b)r +(elo)n(w.)0 5217 y +SDict begin H.S end + 0 5217 a 0 5217 a +SDict begin 12 H.A end + 0 5217 a 0 5217 +a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.1) cvn H.B /DEST +pdfmark end + 0 5217 a 117 x Fl(5.1)112 b(Multiple)39 b(Pro)s(cessors)0 +5504 y Fk(The)29 b(probably)f(b)r(est)i(kno)n(wn)f(of)g(these)g(is)g +(the)h(step)f(from)g(using)g(one)g(to)g(using)g(sev)n(eral)e(pro)r +(cessors,)h(also)g(kno)n(wn)g(as)0 5604 y(parallelisation.)35 +b(Because)27 b(man)n(y)g(p)r(eople)g(are)g(already)f(familiar)h(with)h +(this)g(step,)g(I)f(will)h(describ)r(e)f(it)h(\014rst.)1869 +5989 y(5)p eop end +%%Page: 6 6 +TeXDict begin 6 5 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark +end + 0 -137 a 125 154 a Fk(In)28 +b(a)g(unipro)r(cessor)e(application,)i(it)g(is)g(p)r(ossible)g(to)g +(access)f(ev)n(ery)g(grid)g(p)r(oin)n(t)h(in)h(arbitrary)d(manners.)38 +b(In)28 b(order)0 254 y(to)d(allo)n(w)f(m)n(ultiple)h(pro)r(cessors)e +(to)i(run)f(e\016cien)n(tly)h(in)h(parallel,)e(the)h(grid)g(is)f(brok)n +(en)g(do)n(wn)h(in)n(to)f(sev)n(eral)g(rectangular)0 +353 y(comp)r(onen)n(ts,)j(and)h(eac)n(h)e(pro)r(cessor)g(is)h(assigned) +g(one)g(of)g(these)h(comp)r(onen)n(ts.)125 469 y(The)41 +b(comp)r(onen)n(ts)g(will)g(usually)g(o)n(v)n(erlap)e(b)n(y)i(a)g(few)g +(grid)g(p)r(oin)n(ts,)j(so)d(as)f(to)h(allo)n(w)f(the)i(pro)r(cessors)d +(to)i(e.g.)0 569 y(calculate)24 b(spatial)h(deriv)-5 +b(ativ)n(es)24 b(\(whic)n(h)h(require)f(neigh)n(b)r(ouring)g(grid)g(p)r +(oin)n(ts\))h(without)h(ha)n(ving)e(to)h(comm)n(unicate)f(for)0 +669 y(ev)n(ery)j(grid)h(p)r(oin)n(t.)40 b(F)-7 b(rom)29 +b(time)g(to)f(time)h(it)g(is)g(then)g(necessary)e(to)h(sync)n(hronise)f +(the)i(o)n(v)n(erlapping)e(region,)g(whic)n(h)i(is)0 +768 y(the)i(only)g(time)g(at)f(whic)n(h)h(comm)n(unication)f(happ)r +(ens.)47 b(This)30 b(allo)n(ws)g(the)h(application)f(to)h(run)f(almost) +g(unc)n(hanged,)0 868 y(i.e.)k(without)f(in)n(v)n(oking)f(comm)n +(unication)h(itself.)55 b(The)33 b(sync)n(hronisation)e(routine)i(is)h +(pro)n(vided)e(b)n(y)h(the)h(driv)n(er)e(and)0 968 y(not)c(b)n(y)f(the) +h(application.)125 1084 y(Of)g(course)g(a)g(serial)f(applicate)h +(usually)g(will)h(ha)n(v)n(e)f(to)g(b)r(e)h(c)n(hanged)f(to)g(supp)r +(ort)h(m)n(ultiple)g(pro)r(cessors.)37 b(In)29 b(order)0 +1183 y(to)d(do)g(so,)g(all)f(the)i(op)r(erations)e(that)h(the)g +(application)g(p)r(erforms)f(ha)n(v)n(e)g(to)h(b)r(e)g(classi\014ed)g +(in)n(to)g(one)f(of)h(t)n(w)n(o)g(categories:)125 1300 +y(One)19 b(category)g(con)n(tains)g(the)i(so-called)e +Fj(lo)l(c)l(al)30 b Fk(op)r(erations.)j(These)20 b(are)f(op)r(erations) +g(that)i(are)e(applied)h(to)g(eac)n(h)g(and)0 1399 y(ev)n(ery)25 +b(grid)h(p)r(oin)n(t)h(individually)-7 b(,)26 b(and)h(that)f(do)h(not)f +(dep)r(end)h(on)f(an)n(y)g(other)g(grid)f(p)r(oin)n(t)i(except)g(nearb) +n(y)e(neigh)n(b)r(ours.)0 1499 y(Eac)n(h)18 b(lo)r(cal)g(op)r(eration)g +(will)h(th)n(us)g(in)n(v)n(olv)n(e)f(a)g(lo)r(op)h(o)n(v)n(er)e(all)i +(grid)f(p)r(oin)n(ts,)i(and)f(in)h(order)d(to)i(run)g(on)f(m)n(ultiple) +i(pro)r(cessors,)0 1599 y(after)25 b(eac)n(h)g(suc)n(h)h(lo)r(op)f(the) +h(sync)n(hronisation)e(routine)h(has)g(to)h(b)r(e)g(called.)36 +b(An)26 b(example)f(of)h(a)f(lo)r(cal)g(op)r(eration)g(w)n(ould)0 +1698 y(b)r(e)j(calculating)f(a)g(spatial)g(deriv)-5 b(ativ)n(e.)125 +1814 y(The)21 b(other)g(category)e(con)n(tains)i(so-called)f +Fj(glob)l(al)32 b Fk(op)r(erations.)h(These)21 b(op)r(erations)f(do)i +(not)f(dep)r(end)h(on)f(individual)0 1914 y(grid)h(p)r(oin)n(ts,)h(and) +f(th)n(us)h(do)f(not)g(in)n(v)n(olv)n(e)f(lo)r(ops)h(o)n(v)n(er)f(grid) +g(p)r(oin)n(ts.)35 b(The)23 b(result)f(of)g(a)g(global)g(op)r(eration)f +(is)h(the)h(same)f(on)0 2014 y(all)f(pro)r(cessors;)f(therefore)g +(global)g(op)r(erations)g(don't)h(in)n(v)n(olv)n(e)e(comm)n(unication)h +(and)h(don't)g(require)f(sync)n(hronisation.)0 2113 y(An)30 +b(example)f(of)h(a)f(global)g(op)r(eration)f(w)n(ould)i(b)r(e)g(to)f(c) +n(hec)n(k)g(ho)n(w)g(man)n(y)g(time)h(steps)g(ha)n(v)n(e)e(b)r(een)i +(tak)n(en,)g(and)g(decide)0 2213 y(whether)d(the)h(sim)n(ulation)g +(should)f(b)r(e)h(terminated.)125 2329 y(T)n(ypically)19 +b(most)h(op)r(erations)g(can)g(b)r(e)h(classi\014ed)e(or)h(rewritten)g +(to)h(b)r(e)f(either)h(lo)r(cal)f(or)f(global.)34 b(But)21 +b(often)f(there)h(are)0 2429 y(op)r(erations)h(that)i(\014t)g(neither)g +(category)-7 b(,)22 b(and)i(these)f(parts)g(of)g(an)h(application)f +(are)f(hardest)h(to)g(parallelise.)34 b(Applying)0 2528 +y(the)25 b(b)r(oundary)f(conditions,)g(to)h(giv)n(e)e(another)h +(example,)g(migh)n(t)h(seem)f(at)g(\014rst)g(to)h(b)r(e)g(neither)f(lo) +r(cal)g(nor)g(global.)34 b(But)0 2628 y(in)28 b(a)f(sligh)n(t)h(\(y)n +(et)g(completely)f(correct\))g(stretc)n(h)g(of)h(the)g(term)g("applied) +f(to)h(all)g(grid)f(p)r(oin)n(ts",)g(b)r(oundary)g(conditions)0 +2728 y(can)g(b)r(e)h(classi\014ed)f(as)g(lo)r(cal;)g(they)h(are)e(a)i +(lo)r(cal)f(op)r(eration)f(that)i(just)g(do)r(es)g(nothing)f(to)g(most) +h(grid)f(p)r(oin)n(ts.)125 2844 y(T)-7 b(o)18 b(giv)n(e)h(one)g(more)f +(example,)j(calculating)d(an)h(error)f(norm)g(do)r(es)h(not)g(\014t)h +(these)g(categories.)32 b(It)19 b(is)g(neither)h(lo)r(cal)e(nor)0 +2944 y(global.)33 b(It)19 b(is)f(not)h(lo)r(cal)f(b)r(ecause)h(the)g +(results)f(in)n(v)n(olv)n(ed)f(all)h(grid)g(p)r(oin)n(ts)h(\(and)g(not) +g(only)f(nearb)n(y)f(neigh)n(b)r(ours\),)j(and)f(it)g(is)0 +3043 y(not)25 b(global)f(b)r(ecause)h(it)h(do)r(es)f(in)n(v)n(olv)n(e)f +(the)h(grid)g(p)r(oin)n(ts.)36 b(All)26 b(op)r(erations)e(that)h(do)g +(not)g(\014t)h(the)g(t)n(w)n(o)e(category)g(require)0 +3143 y(t)n(ypically)39 b(sp)r(ecial)h(handling,)j(and)d(often)g +(require)f(hand-co)r(ded)g(comm)n(unication)g(in)i(the)f(application.) +73 b(Luc)n(kily)0 3242 y(calculating)25 b(v)-5 b(arious)25 +b(norms)g(is)h(suc)n(h)f(a)h(common)f(case)g(that)i(there)e(are)g(sp)r +(ecial)h(routines)f(for)h(that)g(already)e(presen)n(t,)0 +3342 y(called)j Fj(r)l(e)l(duction)j(op)l(er)l(ators)p +Fk(.)0 3474 y +SDict begin H.S end + 0 3474 a 0 3474 a +SDict begin 12 H.A end + 0 3474 a 0 3474 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.2) cvn H.B /DEST +pdfmark end + 0 3474 +a 117 x Fl(5.2)112 b(Multiple)39 b(Resolution)e(Lev)m(els)0 +3761 y Fk(There)25 b(are)f(sev)n(eral)g(reasons)g(wh)n(y)h(an)g +(application)g(migh)n(t)g(w)n(an)n(t)g(to)g(incorp)r(orate)f(more)h +(than)h(one)f(grid,)g(o)n(v)n(erlapping)0 3861 y(and)i(eac)n(h)g(with)h +(a)g(di\013eren)n(t)f(resolution.)125 3977 y(The)k(most)h(commonly)f +(kno)n(wn)g(reason)f(is)h(probably)g(a)g(con)n(v)n(ergence)f(test,)j +(where)e(the)h(v)n(ery)e(same)i(problem)f(is)0 4076 y(treated)e(in)g +(di\013eren)n(t)g(resolutions.)40 b(Di\013erences)29 +b(in)h(the)f(result)g(are)f(then)i(lik)n(ely)e(caused)h(b)n(y)f +(insu\016cien)n(t)i(resolution)0 4176 y(on)24 b(the)h(coarser)d(\(or)h +(on)h(all\))h(grids.)34 b(F)-7 b(or)24 b(a)g(con)n(v)n(ergence)e(test,) +j(the)g(grids)e(are)g(completely)h(indep)r(enden)n(t,)i(and)e(it)h(do)r +(es)0 4276 y(not)i(matter)f(whether)h(the)g(sim)n(ulation)g(runs)f(on)h +(all)f(grids)g(sim)n(ultaneously)g(or)g(sequen)n(tially)-7 +b(.)36 b(In)27 b(order)e(to)i(treat)f(the)0 4375 y(grid)h(sequen)n +(tially)-7 b(,)27 b(the)h(application)f(do)r(es)g(not)h(ha)n(v)n(e)e +(to)h(b)r(e)h(c)n(hanged)f(at)h(all.)125 4491 y(The)35 +b(reason)g(of)g(in)n(terest)h(here)f(is)h(of)g(course)e(FMR.)j(F)-7 +b(or)35 b(FMR,)h(the)h(order)d(in)i(whic)n(h)g(the)g(grids)f(are)g +(treated)0 4591 y(is)d(\014xed.)52 b(As)33 b(describ)r(ed)f(ab)r(o)n(v) +n(e,)h(there)f(is)h(\014rst)f(a)g(time)h(step)g(on)f(the)h(coarse)e +(grid,)i(and)g(then)g(recursiv)n(ely)d(sev)n(eral)0 4691 +y(smaller)24 b(steps)g(on)g(the)h(\014ner)f(grids.)35 +b(This)25 b(order)e(do)r(es)h(require)g(certain)g(c)n(hanges)f(in)h +(the)h(application.)36 b(The)24 b(sequence)0 4790 y(of)j(op)r(erations) +e(that)i(form)g(a)f(single)g(time)h(step)g(ha)n(v)n(e)f(to)h(b)r(e)g +(iden)n(ti\014ed)g(and)g(isolated.)35 b(\(Whic)n(h)28 +b(is)f(to)f(sa)n(y)g(that)h(there)0 4890 y(has)32 b(to)h(b)r(e)g(a)g +(routine)f(that)h(calculates)f(a)g(time)i(step,)g(that)f(is,)h(a)e +(complete)h(time)h(step,)g(and)e(nothing)h(else.\))53 +b(It)33 b(is)0 4990 y(then)28 b(the)g(task)f(of)h(the)g(FMR)g(driv)n +(er)e(to)i(call)f(this)h(routine)f(for)g(the)h(correct)e(grids)h(in)h +(the)g(correct)e(order.)125 5106 y(Other)g(reasons)g(for)h(m)n(ultiple) +h(resolution)e(lev)n(els)h(are)f(e.g.)h(m)n(ultigrid)g(algorithms)f +(for)h(elliptic)h(equations,)f(whic)n(h)0 5205 y(I)i(do)g(not)h(w)n(an) +n(t)e(to)i(men)n(tion)f(here,)g(or)g(shado)n(w)f(hierarc)n(hies)f(to)i +(determine)h(truncation)f(errors,)e(whic)n(h)j(I)f(also)f(w)n(an)n(t)0 +5305 y(to)f(skip)h(here.)36 b(Shado)n(w)27 b(hierarc)n(hies)f(are)g(v)n +(ery)h(similar)g(to)g(the)h(con)n(v)n(ergence)d(lev)n(els)i(describ)r +(ed)g(ab)r(o)n(v)n(e.)125 5421 y(Apart)33 b(from)g(this)h(order)e(in)i +(whic)n(h)g(the)g(op)r(erations)e(are)h(p)r(erformed)g(on)g(the)h +(grids,)g(there)g(is)f(one)g(more)g(com-)0 5521 y(plication)d(for)g +(FMR.)i(The)e(b)r(oundary)g(v)-5 b(alues)30 b(of)h(the)g(\014ner)f +(grids)g(ha)n(v)n(e)f(to)i(b)r(e)g(calculated)f(from)g(the)h(coarser)e +(grids)0 5621 y(through)j(in)n(terp)r(olation.)53 b(An)33 +b(b)r(ecause)g(the)h(time)f(steps)g(on)g(the)g(\014ner)g(grids)f(are)g +(smaller,)i(there)f(is)g(not)g(alw)n(a)n(ys)e(a)0 5720 +y(corresp)r(onding)20 b(v)-5 b(alue)22 b(on)g(the)h(coarser)d(grids)h +(a)n(v)-5 b(ailable.)34 b(This)22 b(mak)n(es)f(it)i(necessary)e(to)h +(in)n(terp)r(olate)f(in)i(time)g(b)r(et)n(w)n(een)1869 +5989 y(6)p eop end +%%Page: 7 7 +TeXDict begin 7 6 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark +end + 0 -137 a 291 x Fk(time)27 b(steps)g(on)g(the)g +(coarser)d(grids.)36 b(The)27 b(alternativ)n(e)e(w)n(ould)i(b)r(e)g(to) +g(tak)n(e)f(smaller)g(steps)g(on)h(the)g(coarser)e(grids,)h(and)0 +254 y(this)i(w)n(ould)f(b)r(e)h(v)n(ery)e(exp)r(ensiv)n(e.)125 +370 y(These)33 b(in)n(terp)r(olations)g(in)i(time)f(mak)n(e)f(it)i +(necessary)d(that)i(the)h(driv)n(er)e(kno)n(ws)g(whic)n(h)h(grid)f +(function)i(con)n(tains)0 469 y(v)-5 b(alues)28 b(corresp)r(onding)e +(to)i(what)g(time.)39 b(The)29 b(usual)e(w)n(a)n(y)g(to)h(ac)n(hiev)n +(e)f(this)i(is)f(to)g(ha)n(v)n(e)f(sev)n(eral)f(time)j(lev)n(els)e(p)r +(er)h(grid)0 569 y(function;)d(three)d(time)g(lev)n(els)g(allo)n(w)f +(for)g(a)h(second)g(order)e(in)n(terp)r(olation)i(in)g(time.)36 +b(Only)22 b(grid)f(functions)i(with)f(enough)0 669 y(time)28 +b(lev)n(els)f(can)g(b)r(e)h(in)n(terp)r(olated,)f(i.e.)h(b)r(oundary)f +(conditions)g(can)g(b)r(e)h(calculated)f(only)g(for)h(those.)125 +785 y(F)-7 b(ortunately)21 b(time)h(lev)n(els)e(are)h(rather)f +(widespread)h(in)h(applications,)f(so)g(they)h(are)e(no)i(new)f +(concept)h(to)f(in)n(tro)r(duce.)0 885 y(Unfortunately)j(they)h(are)e +(often)i(abused,)f(so)g(that)h(v)-5 b(alues)24 b(corresp)r(onding)e(to) +i(the)h(wrong)e(time)i(are)e(stored)h(in)g(a)g(time)0 +984 y(lev)n(el,)33 b(usually)f(with)g(the)h(excuse)f(of)g(sa)n(ving)e +(storage.)49 b(This)32 b(will)h(in)f(general)f(not)h(w)n(ork)f(with)i +(FMR,)f(b)r(ecause)g(the)0 1084 y(driv)n(er)26 b(then)i(cannot)g(in)n +(terp)r(olate)e(in)i(time,)h(leading)d(to)i(incorrect)e(v)-5 +b(alues)28 b(on)f(the)h(b)r(oundaries)f(of)g(the)h(\014ner)f(grids.)0 +1216 y +SDict begin H.S end + 0 1216 a 0 1216 a +SDict begin 12 H.A end + 0 1216 a 0 1216 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.3) cvn H.B /DEST +pdfmark end + 0 1216 a 117 +x Fl(5.3)112 b(Multiple)39 b(Grid)e(Comp)s(onen)m(ts)0 +1503 y Fk(Sometimes)24 b(it)h(is)f(con)n(v)n(enien)n(t)f(to)h(ha)n(v)n +(e)f(a)g(sim)n(ulation)h(domain)f(that)i(is)f(not)g(a)g(rectangle.)34 +b(It)25 b(migh)n(t)f(instead)g(b)r(e)g(an)g(L-)0 1602 +y(shap)r(ed)h(sim)n(ulation)g(domain,)h(or)e(a)h(domain)g(that)h +(consists)e(of)i(t)n(w)n(o)e(disconnected)i(rectangular)d(regions.)35 +b(This)25 b(issue)0 1702 y(b)r(ecomes)33 b(more)g(imp)r(ortan)n(t)g +(with)h(FMR,)h(b)r(ecause)e(there)g(it)h(is)g(often)g(con)n(v)n(enien)n +(t)e(to)i(ha)n(v)n(e)e(sev)n(eral)g(disconnected)0 1802 +y(re\014ned)24 b(regions.)35 b(As)25 b(long)f(as)g(there)g(are)g +(enough)g(pro)r(cessors)e(a)n(v)-5 b(ailable,)24 b(eac)n(h)g(pro)r +(cessor)f(can)h(b)r(e)h(assigned)f(a)g(region)0 1901 +y(or)29 b(a)g(part)g(thereof,)h(and)g(no)f(new)h(concept)g(need)g(b)r +(e)g(in)n(tro)r(duced.)43 b(If,)31 b(ho)n(w)n(ev)n(er,)d(there)h(are)g +(few)n(er)g(pro)r(cessors)e(than)0 2001 y(regions,)f(then)i(a)f(new)h +(problem)f(arises.)125 2117 y(A)38 b(common)h(case)e(for)h(that)h +(problem)f(migh)n(t)h(b)r(e)g(a)f(sim)n(ulation)g(con)n(taining)g(just) +h(t)n(w)n(o)f(re\014ned)g(regions,)i(and)0 2217 y(running)25 +b(on)h(a)f(single)g(pro)r(cessor.)34 b(The)26 b(re\014ned)f(grid)g(the) +h(consists)f(of)h(t)n(w)n(o)f(comp)r(onen)n(t.)36 b(The)25 +b(problem)h(then)g(is)f(that)0 2316 y(the)g(t)n(w)n(o)f(comp)r(onen)n +(ts)g(cannot)g(b)r(e)h(treated)g(sequen)n(tially:)34 +b(Imagine)24 b(the)h(time)h(ev)n(olution)e(routine)g(w)n(orking)f(on)h +(\(sa)n(y\))0 2416 y(the)d(\014rst)f(comp)r(onen)n(t.)35 +b(It)21 b(will)f(at)h(some)f(time)h(call)f(the)h(sync)n(hronisation)e +(routine.)34 b(A)n(t)21 b(that)g(time)g(there)f(are)g(no)g(v)-5 +b(alues)0 2516 y(from)23 b(the)h(second)e(comp)r(onen)n(t)h(a)n(v)-5 +b(ailable,)23 b(b)r(ecause)g(the)h(second)f(comp)r(onen)n(t)g(has)g +(not)g(b)r(een)h(treated)f(y)n(et.)35 b(Therefore)0 2615 +y(the)25 b(sync)n(hronisation)d(routine)i(cannot)g(complete.)36 +b(That)25 b(means)f(in)g(turn)h(that)g(the)f(time)h(ev)n(olution)f +(routine)g(cannot)0 2715 y(complete)35 b(w)n(orking)e(on)h(the)h +(\014rst)g(comp)r(onen)n(t,)h(leading)e(to)h(a)f(deadlo)r(c)n(k.)57 +b(W)-7 b(ork)34 b(on)h(neither)f(comp)r(onen)n(t)h(can)f(b)r(e)0 +2814 y(completed)28 b(b)r(efore)f(w)n(ork)f(on)h(the)h(other)f(comp)r +(onen)n(t.)125 2931 y(The)j(solution)g(is)h(to)f(break)g(up)h(the)g +(time)g(ev)n(olution)f(routine)g(in)n(to)g(sev)n(eral)f(smaller)h +(routines,)h(eac)n(h)e(consisting)0 3030 y(of)k(a)f(single)h(either)f +(lo)r(cal)h(or)f(global)g(op)r(eration.)51 b(\(\\Lo)r(cal")32 +b(and)g(\\global")f(ha)n(v)n(e)h(here)g(the)i(exact)e(same)g(meanings)0 +3130 y(that)h(w)n(ere)f(de\014ned)h(ab)r(o)n(v)n(e)f(for)g +(parallelisation.\))51 b(A)34 b(lo)r(cal)e(op)r(eration)g(w)n(orks,)g +(b)n(y)h(de\014nition,)i(on)d(individual)h(grid)0 3230 +y(p)r(oin)n(ts.)j(Hence)26 b(the)g(lo)r(cal)g(routines)f(ha)n(v)n(e)f +(to)i(b)r(e)g(called)g(once)f(for)g(ev)n(ery)g(grid)g(comp)r(onen)n(t.) +36 b(A)26 b(global)f(op)r(eration,)g(b)n(y)0 3329 y(de\014nition,)j(do) +r(es)g(not)f(dep)r(end)i(on)e(individual)h(grid)f(p)r(oin)n(ts.)38 +b(Hence)28 b(it)g(has)f(to)h(b)r(e)g(called)f(only)h(once)f(p)r(er)h +(pro)r(cessor,)0 3429 y(and)f(not)g(once)g(p)r(er)h(comp)r(onen)n(t.)36 +b(That)27 b(means)g(that)h(the)f(driv)n(er)f(has)h(to)g(b)r(e)h(told)g +(the)f(category)f(individual)h(routine)0 3528 y(is)g(in.)0 +3645 y +SDict begin H.S end + 0 3645 a 0 3645 a +SDict begin 12 H.A end + 0 3645 a 0 3645 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.5.4) cvn H.B /DEST +pdfmark end + 0 3645 a 132 +x Fl(5.4)112 b(Example)0 3947 y Fk(Let)28 b(me)g(\014nish)f(this)h +(section)f(with)i(an)e(detailed)h(example.)36 b(Supp)r(ose)28 +b(y)n(ou)e(w)n(an)n(t)h(to)h(solv)n(e)e(the)i(equation)1570 +4169 y +SDict begin H.S end + 1570 4169 a 1570 4169 a +SDict begin 12 H.A end + 1570 4169 a 1570 4169 +a +SDict begin [ /View [/XYZ H.V] /Dest (equation.1) cvn H.B /DEST pdfmark +end + 1570 4169 a 1595 4112 a Ff(d)p 1580 4149 74 4 v 1580 +4226 a(dt)1663 4169 y(u)83 b Fk(=)g Ff(f)9 b Fk(\()p +Ff(u)p Fk(\))82 b Ff(;)1464 b Fk(\(1\))0 4374 y(in)n(tegrating)34 +b(using)i(the)g(midp)r(oin)n(t)g(rule,)i(i.e.)d(the)i(simplemost)e +(second-order)e(time)k(in)n(tegration)d(sc)n(heme.)61 +b(Giv)n(en)0 4474 y(v)-5 b(alues)30 b(at)h(the)g(previous)e(time)i +Ff(u)1074 4444 y Fe(n)p Fd(\000)p Fc(1)1204 4474 y Fk(,)h(one)e +(\014rst)g(calculates)g(a)g(\014rst)h(order)e(solution)h(using)g(an)h +(Euler)f(step,)h(leading)0 4574 y(to)c(the)h(in)n(termediate)g(result) +1344 4756 y +SDict begin H.S end + 1344 4756 a 1344 4756 a +SDict begin 12 H.A end + 1344 4756 a 1344 +4756 a +SDict begin [ /View [/XYZ H.V] /Dest (equation.2) cvn H.B /DEST pdfmark +end + 1344 4756 a Ff(v)1387 4722 y Fe(n)1515 4756 y +Fk(=)83 b Ff(u)1711 4722 y Fe(n)p Fd(\000)p Fc(1)1859 +4756 y Fk(+)18 b Ff(dt)23 b(f)9 b Fk(\()p Ff(u)2168 4722 +y Fe(n)p Fd(\000)p Fc(1)2298 4756 y Fk(\))83 b Ff(:)1237 +b Fk(\(2\))0 4939 y(The)28 b(second)f(and)g(\014nal)h(step)f(is)h(then) +g(calculated)f(via)1193 5156 y +SDict begin H.S end + 1193 5156 a 1193 5156 +a +SDict begin 12 H.A end + 1193 5156 a 1193 5156 a +SDict begin [ /View [/XYZ H.V] /Dest (equation.3) cvn H.B /DEST pdfmark +end + 1193 5156 a Ff(u)1241 5122 +y Fe(n)1368 5156 y Fk(=)83 b Ff(u)1564 5122 y Fe(n)p +Fd(\000)p Fc(1)1712 5156 y Fk(+)18 b Ff(dt)23 b(f)9 b +Fk(\()1983 5100 y(1)p 1983 5137 42 4 v 1983 5213 a(2)2035 +5156 y([)p Ff(u)2106 5122 y Fe(n)p Fd(\000)p Fc(1)2254 +5156 y Fk(+)18 b Ff(v)2380 5122 y Fe(n)2425 5156 y Fk(]\))84 +b Ff(:)1086 b Fk(\(3\))125 5379 y(The)27 b(corresp)r(onding)f(pseudo)h +(co)r(de)g(w)n(ould)h(lo)r(ok)e(lik)n(e)0 5445 y +SDict begin H.S end + 0 5445 +a 0 5445 a +SDict begin 12 H.A end + 0 5445 a 0 5445 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.7) cvn H.B /DEST pdfmark +end + 0 5445 a 101 5561 a Fk(1.)42 +b(Calculate)27 b(Euler)f(step,)i(storing)f(the)h(result)f(in)n(to)g +Ff(u)1866 5531 y Fe(n)0 5611 y +SDict begin H.S end + 0 5611 a 0 5611 a +SDict begin 12 H.A end + 0 5611 +a 0 5611 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.8) cvn H.B /DEST pdfmark +end + 0 5611 a 101 5727 a Fk(2.)42 b(Apply)28 b(b)r(oundary)e +(conditions)i(to)f Ff(u)1377 5697 y Fe(n)1869 5989 y +Fk(7)p eop end +%%Page: 8 8 +TeXDict begin 8 7 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark +end + 0 -137 a 0 71 a +SDict begin H.S end + 0 71 a 0 71 +a +SDict begin 12 H.A end + 0 71 a 0 71 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.9) cvn H.B /DEST pdfmark +end + 0 71 a 101 154 a Fk(3.)42 b(Sync)n(hronise)26 +b Ff(u)713 124 y Fe(n)0 203 y +SDict begin H.S end + 0 203 a 0 203 a +SDict begin 12 H.A end + 0 203 a +0 203 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.10) cvn H.B /DEST pdfmark +end + 0 203 a 101 320 a Fk(4.)42 b(Calculate)27 b(a)n(v)n(erage)d(of) +k Ff(u)1017 290 y Fe(n)p Fd(\000)p Fc(1)1174 320 y Fk(and)g +Ff(u)1384 290 y Fe(n)1428 320 y Fk(,)g(storing)f(the)g(result)h(in)n +(to)f Ff(v)2342 290 y Fe(n)0 369 y +SDict begin H.S end + 0 369 a 0 369 a +SDict begin 12 H.A end + 0 +369 a 0 369 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.11) cvn H.B /DEST pdfmark +end + 0 369 a 101 486 a Fk(5.)42 b(Calculate)27 +b(second)g(step,)g(storing)g(the)h(result)f(again)f(in)n(to)i +Ff(u)2133 456 y Fe(n)0 535 y +SDict begin H.S end + 0 535 a 0 535 a +SDict begin 12 H.A end + 0 535 a +0 535 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.12) cvn H.B /DEST pdfmark +end + 0 535 a 101 652 a Fk(6.)42 b(Apply)28 b(b)r(oundary)e +(conditions)i(again)e(to)h Ff(u)1598 622 y Fe(n)0 701 +y +SDict begin H.S end + 0 701 a 0 701 a +SDict begin 12 H.A end + 0 701 a 0 701 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.13) cvn H.B /DEST pdfmark +end + 0 701 a 101 818 a Fk(7.)42 +b(Sync)n(hronise)26 b(again)g Ff(u)934 788 y Fe(n)125 +1001 y Fk(The)34 b(ab)r(o)n(v)n(e)f(algorithm)h(lo)r(oks)f(a)h(bit)i +(di\013eren)n(t)e(from)g(a)h(naiv)n(e)e(implemen)n(tation)i(of)f(the)h +(midp)r(oin)n(t)h(rule.)57 b(One)0 1100 y(di\013erence)28 +b(is)g(that)h(b)r(oth)f(the)h(\014rst)f(and)g(the)g(second)g(step)g +(store)f(their)h(result)g(in)n(to)g Ff(u)2751 1070 y +Fe(n)2796 1100 y Fk(.)38 b(This)29 b(is)f(necessary)e(b)r(ecause)0 +1200 y(it)e(w)n(ould)f(b)r(e)i(incon)n(v)n(enien)n(t)d(to)i(apply)f(b)r +(oundary)g(conditions)h(to)f(the)h(in)n(termediate)g(v)-5 +b(alue)23 b Ff(v)2956 1170 y Fe(n)3002 1200 y Fk(.)35 +b(Remem)n(b)r(er,)25 b(in)f(order)0 1300 y(to)30 b(apply)g(b)r(oundary) +g(conditions)f(on)h(the)h(\014ner)f(grids,)g(there)g(ha)n(v)n(e)f(to)h +(b)r(e)h(sev)n(eral)e(time)h(lev)n(els)g(presen)n(t.)44 +b(With)31 b(the)0 1399 y(ab)r(o)n(v)n(e)26 b(sc)n(heme,)g(only)h +Ff(u)g Fk(needs)g(sev)n(eral)e(time)i(lev)n(els.)36 b +Ff(v)31 b Fk(is)c(used)g(only)f(as)h(a)f(temp)r(orary)g(\(and)h(could)g +(conceiv)-5 b(ably)26 b(b)r(e)0 1499 y(completely)h(eliminated\).)125 +1615 y(Note)e(also)g(that)h(the)h(\014rst)e(step)h(go)r(es)f(all)h(the) +g(w)n(a)n(y)f(from)g(time)i(lev)n(el)e Ff(n)15 b Fb(\000)f +Fk(1)26 b(to)g(time)g(lev)n(el)f Ff(n)p Fk(.)37 b(The)25 +b(midp)r(oin)n(t)i(rule)0 1715 y(can)g(b)r(e)g(rewritten)f(\(in)i +(fact,)f(is)g(usually)f(written\))i(so)e(that)h(the)h(\014rst)e(step)h +(is)g(only)g(a)f(half)h(step,)h(leading)e(to)h(the)g(time)0 +1814 y(lev)n(el)j Ff(n)20 b Fb(\000)356 1782 y Fc(1)p +356 1796 34 4 v 356 1843 a(2)400 1814 y Fk(.)44 b(This)31 +b(is)f(not)g(p)r(ossible)g(for)f(FMR,)i(b)r(ecause)f(in)n(terp)r +(olating)f(to)h(the)h(time)g Ff(n)20 b Fb(\000)2998 1782 +y Fc(1)p 2998 1796 V 2998 1843 a(2)3071 1814 y Fk(is)30 +b(not)g(p)r(ossible,)h(and)0 1914 y(th)n(us)d(there)f(could)g(b)r(e)h +(no)g(b)r(oundary)f(conditions)g(applied)g(after)h(the)g(\014rst)f +(step.)125 2030 y(The)i(second)h(thing)g(to)g(note)f(is)h(that)g(the)h +(application)e(of)h(the)g(b)r(oundary)f(condition)h(and)f(the)i(sync)n +(hronisation)0 2130 y(ha)n(v)n(e)23 b(b)r(een)h(separated)f(rather)g +(arti\014cially)-7 b(.)35 b(Normally)23 b(sync)n(hronisation)f(w)n +(ould)i(b)r(e)g(considered)f(part)h(of)g(the)h(b)r(ound-)0 +2230 y(ary)k(condition.)43 b(In)30 b(this)g(case,)f(ho)n(w)n(ev)n(er,)f +(the)j(applying)e(the)h(b)r(oundary)f(condition)g(is)h(a)f(lo)r(cal)h +(op)r(eration,)f(whereas)0 2329 y(sync)n(hronisation)24 +b(coun)n(ts)i(as)g(global)f(op)r(eration.)35 b(\(It)27 +b(is)f(not)h(ob)n(vious)e(that)h(sync)n(hronisation)f(should)h(b)r(e)g +(global,)g(but)0 2429 y(as)i(the)h(sync)n(hronisation)e(routine)h(is)h +(a)f(part)g(of)h(Carp)r(et,)f(it)i(w)n(as)d(up)i(to)g(me)g(to)f(decide) +h(this.\))41 b(As)29 b(explained)f(ab)r(o)n(v)n(e,)0 +2528 y(lo)r(cal)f(and)g(global)g(op)r(erations)f(ha)n(v)n(e)h(to)g(b)r +(e)h(separated.)125 2645 y(Separating)35 b(the)j(ev)n(olution)e(steps)h +(and)g(the)h(b)r(oundary)e(condition)h(routines)g(is,)j(on)c(the)i +(other)f(hand,)i(just)f(a)0 2744 y(notational)27 b(con)n(v)n(enience.) +35 b(There)27 b(could)h(w)n(ell)f(b)r(e)h(a)f(single)g(routine)h +(implemen)n(ting)f(b)r(oth.)125 2861 y(F)-7 b(or)26 b(Cactus,)g(the)h +(order)e(in)i(whic)n(h)g(to)f(call)g(the)h(individual)g(parts)f(of)h +(the)f(time)i(ev)n(olution)d(routines)h(is)h(describ)r(ed)0 +2960 y(in)c(the)h(sc)n(hedule)e(routines,)i(i.e.)f(in)g(the)h(\014les)f +(called)f Fh(schedule.ccl)p Fk(.)31 b(By)23 b(default)g(a)g(routine)f +(is)h(assumed)g(to)g(b)r(e)g(lo)r(cal;)0 3060 y(global)j(routines)h(ha) +n(v)n(e)g(to)g(b)r(e)h(tagged)f(with)h Fh(OPTIONS:)40 +b(GLOBAL)p Fk(.)125 3176 y(The)g(tag)h Fh(SYNC:)h(groupname)37 +b Fk(indicates)j(that)h(the)g(group)f Fh(groupname)d +Fk(should)j(b)r(e)h(sync)n(hronised)e(after)h(the)0 3276 +y(sc)n(heduled)35 b(routine)h(has)f(b)r(een)h(called)f(for)h(all)f +(grid)g(comp)r(onen)n(ts.)61 b(This)36 b(ob)n(viously)e(mak)n(es)g +(sense)i(only)f(for)g(lo)r(cal)0 3375 y(routines.)72 +b(Using)39 b(the)h Fh(SYNC:)e Fk(tag)h(is)g(preferred)f(o)n(v)n(er)g +(calling)h(the)h(sync)n(hronisation)d(routine)j Fh(CCTK)p +3363 3375 27 4 v 29 w(SyncGroup)0 3475 y Fk(directly)-7 +b(.)125 3591 y(The)31 b(example)g(thorn)g(W)-7 b(a)n(v)n(eT)g(o)n(y)30 +b(in)i(Carp)r(et's)f(arrangemen)n(t)e(is)i(a)g(bit)h(simpler)f(than)h +(what)f(is)h(describ)r(ed)f(here,)0 3691 y(b)r(ecause)k(it)i(uses)e +(the)h(Leapfrog)f(sc)n(heme)g(whic)n(h)h(consists)f(of)h(only)f(a)h +(single)f(step.)62 b(I)36 b(w)n(ould)f(suggest)g(lo)r(oking)g(at)0 +3790 y(W)-7 b(a)n(v)n(eT)g(o)n(y)26 b(as)h(an)g(initial)h(FMR)g +(example.)125 3907 y(The)33 b(thorn)f(SpaceT)-7 b(o)n(y)32 +b(is)h(implemen)n(ted)h(v)n(ery)e(close)g(to)h(the)g(w)n(a)n(y)f +(describ)r(ed)h(here.)53 b(It)33 b(ev)n(olv)n(es)f(t)n(w)n(o)g(v)-5 +b(ariables)0 4006 y(phi)36 b(and)g(psi,)i(but)e(it)h(is)e(also)g +(coupled)h(to)g(the)g(thorn)f(HydroT)-7 b(o)n(y)g(.)60 +b(This)36 b(coupling)g(in)n(tro)r(duces)f(some)g(additional)0 +4106 y(complications.)g(The)24 b(thorn)g(HydroT)-7 b(o)n(y)g(,)23 +b(on)h(the)g(other)g(hand)g(uses)g(a)f(predictor-corrector)e(sc)n +(heme,)j(whic)n(h)g(is)g(also)f(a)0 4205 y(t)n(w)n(o)c(step)i(sc)n +(heme)f(and)g(th)n(us)g(more)f(complex)h(that)g(W)-7 +b(a)n(v)n(eT)g(o)n(y)g(.)33 b(All)21 b(the)f(coupling)g(b)r(et)n(w)n +(een)g(SpaceT)-7 b(o)n(y)19 b(and)h(HydroT)-7 b(o)n(y)0 +4305 y(is)27 b(con)n(tained)g(in)h(SpaceT)-7 b(o)n(y)g(.)36 +b(I)28 b(w)n(ould)f(th)n(us)g(suggest)g(lo)r(oking)f(at)i(HydroT)-7 +b(o)n(y)26 b(\014rst.)125 4421 y(I)g(assume)g(that)g(con)n(v)n(erting)f +(an)h(application)g(to)g(FMR)h(is)f(straigh)n(tforw)n(ard)e(after)i +(handling)g(the)h(time)f(lev)n(els)g(has)0 4521 y(b)r(een)i(straigh)n +(tened)e(out.)0 4662 y +SDict begin H.S end + 0 4662 a 0 4662 a +SDict begin 12 H.A end + 0 4662 a 0 4662 +a +SDict begin [ /View [/XYZ H.V] /Dest (section.6) cvn H.B /DEST pdfmark +end + 0 4662 a 150 x Fm(6)135 b(F)-11 b(urther)44 b(do)t(cumen)l(tation)0 +5011 y Fk(The)35 b(individual)g(thorns)g(in)g(the)g(Carp)r(et)g +(arrangemen)n(t)e(migh)n(t)i(con)n(tain)f(further)h(do)r(cumen)n +(tation,)i(whic)n(h)e(is)g(also)0 5110 y(a)n(v)-5 b(ailable)24 +b(in)i(the)h(thorn)e(guide.)36 b(Additionally)-7 b(,)26 +b(there)g(is)f(a)h(do)r(cumen)n(t)g Fh(internals.tex)20 +b Fk(in)26 b(the)g(arrangemen)n(t's)e(do)r(c)0 5210 y(directory)-7 +b(,)26 b(and)i(a)f(do)r(cumen)n(t)h Fh(threelev)p 1340 +5210 27 4 v 28 w(initdata.tex)23 b Fk(in)28 b(thorn)f +Fh(Carpet)p Fk('s)e(do)r(c)i(directory)-7 b(.)0 5353 +y +SDict begin H.S end + 0 5353 a 0 5353 a +SDict begin 12 H.A end + 0 5353 a 0 5353 a +SDict begin [ /View [/XYZ H.V] /Dest (section.7) cvn H.B /DEST pdfmark +end + 0 5353 a 148 x +Fm(7)135 b(F)-11 b(requen)l(tly)45 b(Ask)l(ed)g(Questions)0 +5699 y Fk(Here)27 b(are)g(a)g(few)h(of)f(the)h(more)f(frequen)n(tly)h +(ask)n(ed)e(questions)h(with)h(some)f(answ)n(ers.)1869 +5989 y(8)p eop end +%%Page: 9 9 +TeXDict begin 9 8 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a 0 +-137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark +end + 0 -137 a 0 71 a +SDict begin H.S end + 0 71 a 0 71 +a +SDict begin 12 H.A end + 0 71 a 0 71 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.14) cvn H.B /DEST pdfmark +end + 0 71 a 101 154 a Fk(1.)42 b Fa(If)32 +b(I)g(run)g(without)f(an)m(y)i(re\014ned)f(grids,)f(wh)m(y)h(don't)g(I) +g(get)f(the)h(same)f(results)g(as)h(with)f(PUGH?)208 +279 y Fk(There)e(are)f(t)n(w)n(o)h(p)r(ossible)h(reasons.)41 +b(The)30 b(most)f(common)g(is)h(that)g(the)g(y)n(ou)f(are)f(not)i +(comparing)e(exactly)h(the)208 378 y(same)35 b(output.)61 +b(It)36 b(used)f(to)h(b)r(e)g(the)g(case)e(that)i(norms)f(w)n(ould)g +(disagree)f(\(this)i(is)g(no)f(longer)f(the)i(case\).)60 +b(If)208 478 y(it)36 b(is)h(the)g(ASCI)r(I)g(output)g(that)g +(disagress,)f(then)h(y)n(ou)f(should)g(note)h(that)f(the)h(default)g +(output)g(format)f(for)208 577 y(Carp)r(etIO)n(ASCI)r(I)24 +b(giv)n(es)g(more)g(digits)g(than)h(CactusBase/IO)n(ASCI)r(I.)e(If)j(y) +n(ou)e(w)n(an)n(t)g(to)h(get)f(\\iden)n(tical")g(results)208 +677 y(for)j(this)h(output,)g(try)f(setting)i Fh(IOASCII::out)p +1735 677 27 4 v 26 w(format)41 b(=)i(".14f")p Fk(\).)208 +802 y(The)27 b(second)g(reason)f(is)i(subtle)g(di\013erences)f(are)f +(bugs)i(in)f(the)h(implemen)n(tation.)37 b(Go)r(o)r(d)28 +b(luc)n(k)f(\014nding)h(these...)0 843 y +SDict begin H.S end + 0 843 a 0 843 +a +SDict begin 12 H.A end + 0 843 a 0 843 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.15) cvn H.B /DEST pdfmark +end + 0 843 a 101 951 a Fk(2.)42 b Fa(I)32 +b(switc)m(h)f(on)h(a)g(re\014ned)g(grid.)42 b(Wh)m(y)32 +b(do)g(I)g(not)f(see)g(it)h(output?)42 b(Wh)m(y)33 b(is)e(the)h(output) +g(strange?)615 2971 y @beginspecial 0 @llx 0 @lly 612 +@urx 461 @ury 3060 @rwi @setspecial +%%BeginDocument: Grid1.eps +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: Grid1.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Fri May 2 11:09:16 2003 +%%For: hawke@xeon06.aei-potsdam.mpg.de (Ian Hawke) +%%BoundingBox: 0 0 612 461 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 461 moveto 0 0 lineto 612 0 lineto 612 461 lineto closepath clip newpath +-49.5 526.5 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw +n 1200 1200 m 10800 1200 l 10800 8400 l 1200 8400 l + cp gs col0 s gr +% Polyline +n 3600 1200 m + 3600 8400 l gs col0 s gr +% Polyline +n 6000 1200 m + 6000 8400 l gs col0 s gr +% Polyline +n 8400 1200 m + 8400 8400 l gs col0 s gr +% Polyline +n 1200 3600 m + 10800 3600 l gs col0 s gr +% Polyline +n 1200 6000 m + 10800 6000 l gs col0 s gr +% Polyline +15.000 slw + [60] 0 sd +n 3600 3600 m 8400 3600 l 8400 6000 l 3600 6000 l + cp gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 4800 3600 m + 4800 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 7200 3600 m + 7200 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 6000 3600 m + 6000 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 3600 4800 m + 8400 4800 l gs col1 s gr [] 0 sd +% Polyline +30.000 slw + [15 90] 90 sd +n 6000 4800 m 7200 4800 l 7200 6000 l 6000 6000 l + cp gs col2 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 6600 4800 m + 6600 6000 l gs col2 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 6000 5400 m + 7200 5400 l gs col2 s gr [] 0 sd +/Times-Roman ff 360.00 scf sf +3525 8775 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +8250 8775 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 360.00 scf sf +10650 8775 m +gs 1 -1 sc (16) col0 sh gr +/Times-Roman ff 360.00 scf sf +4725 6375 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +6525 6375 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 360.00 scf sf +1125 8775 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +7125 6375 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 8550 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 6150 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 3750 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 1350 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 360.00 scf sf +3300 4950 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +5700 5550 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 360.00 scf sf +5925 8775 m +gs 1 -1 sc (8) col0 sh gr +$F2psEnd +rs + +%%EndDocument + @endspecial 0 3154 a Fk(Figure)h(1:)380 3054 y +SDict begin H.S end + 380 3054 +a 380 3054 a +SDict begin H.R end + 380 3054 a 380 3054 a +SDict begin [ /View [/XYZ H.V] /Dest (figure.1) cvn H.B /DEST pdfmark +end + 380 3054 a 100 x Fk(Ho)n(w)g(the)h +(grids)e(are)g(indexed)h(in)h(Carp)r(et.)53 b(This)34 +b(is)f(an)g(arti\014cial)f(three)h(lev)n(el)g(example)g(using)f(C-st)n +(yle)0 3253 y(n)n(um)n(b)r(ering)27 b(\(0)h(origin\).)36 +b(Note)27 b(that)h(the)g(n)n(um)n(b)r(ering)f(is)h(with)g(resp)r(ect)f +(to)g(the)h(\014nest)g(grid.)208 3524 y(As)39 b(so)r(on)g(as)g(y)n(ou)g +(switc)n(h)g(on)g(re\014nemen)n(t)h(the)g(w)n(a)n(y)e(the)i(grids)e +(are)h(n)n(um)n(b)r(ered)g(b)n(y)h(index)f(c)n(hanges.)72 +b(The)208 3623 y(n)n(um)n(b)r(ering)34 b(is)g(done)h(with)g(resp)r(ect) +g(to)f(the)h Fj(\014nest)42 b Fk(grid)34 b(but)h(co)n(v)n(ers)e(the)i +(en)n(tire)f(domain.)58 b(An)35 b(example)g(of)208 3723 +y(ho)n(w)28 b(the)h(n)n(um)n(b)r(ering)f(w)n(orks)f(is)i(giv)n(en)e(in) +i(\014gure)1809 3723 y +SDict begin H.S end + 1809 3723 a Fk(1)1851 3669 y +SDict begin H.R end + 1851 +3669 a 1851 3723 a +SDict begin [ /Color [1 0 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (figure.1) cvn H.B /ANN pdfmark end + 1851 3723 a Fk(.)40 b(It)29 b(is)g(imp)r(ortan)n(t)f +(to)h(note)g(that)g(this)g(also)e(applies)i(to)f(the)208 +3822 y(n)n(um)n(b)r(ering)g(in)i(time.)42 b(So)29 b(with)h(the)g(grid)f +(structure)f(of)i(\014gure)2259 3822 y +SDict begin H.S end + 2259 3822 a Fk(1)2301 +3769 y +SDict begin H.R end + 2301 3769 a 2301 3822 a +SDict begin [ /Color [1 0 0] /H /I /Border [0 0 12] /Subtype /Link +/Dest (figure.1) cvn H.B /ANN pdfmark end + 2301 3822 a 29 w Fk(output)g(for)f(the)g +(coarsest)f(grid)h(only)g(o)r(ccurs)208 3922 y(on)k(iterations)g(0)p +Ff(;)14 b Fk(4)p Ff(;)g Fk(8)p Ff(;)g(:)g(:)g(:)n Fk(,)36 +b(for)d(the)i(medium)f(grid)g(only)f(on)h(iterations)f(0)p +Ff(;)14 b Fk(2)p Ff(;)g Fk(4)p Ff(;)g(:)g(:)g(:)n Fk(,)36 +b(and)d(for)h(the)g(\014nest)g(grid)208 4022 y(on)27 +b(iterations)h(0)p Ff(;)14 b Fk(1)p Ff(;)g Fk(2)p Ff(;)g(:)g(:)g(:)n +Fk(.)38 b(Note)28 b(that)h(here)f(the)g(\014nest)g(grid)g(is)g(not)g +(the)h(\014nest)f Fj(existing)35 b Fk(grid,)28 b(but)h(the)f(\014nest) +208 4121 y Fj(p)l(ossible)35 b Fk(grid.)h(This)28 b(is)f(con)n(trolled) +g(b)n(y)g(the)h Fh(Carpet::max)p 2122 4121 27 4 v 27 +w(refinement)p 2589 4121 V 27 w(levels)d Fk(parameter.)208 +4246 y(So,)i(there)g(are)g(plen)n(t)n(y)g(of)h(reasons)e(wh)n(y)h(the)h +(output)g(migh)n(t)f(b)r(e)h(strange:)307 4395 y Fb(\017)41 +b Fk(Y)-7 b(ou)22 b(are)f(requesting)h(output)g(on)g(iterations)f(when) +i(not)f(all)f(grids)h(are)f(output.)35 b(F)-7 b(or)22 +b(example,)h(requesting)390 4495 y(output)35 b(ev)n(ery)f(5)938 +4465 y Fe(th)1040 4495 y Fk(iteration)g(with)h(the)g(ab)r(o)n(v)n(e)e +(grid)g(structure)h(w)n(ould)h(only)f(output)h(the)g(coarse)d(grid)390 +4595 y(ev)n(ery)27 b(20)f(iterations.)307 4711 y Fb(\017)41 +b Fk(Y)-7 b(ou)32 b(are)g(requesting)f(output)i(along)e(an)h(index)g +(that)g(do)r(es)g(not)g(in)n(tersect)g(with)h(an)n(y)e(grid)h(p)r(oin)n +(ts.)50 b(F)-7 b(or)390 4810 y(example,)27 b(the)f(line)h(de\014ned)g +(b)n(y)f Ff(j)i Fk(=)23 b(6)j(in)g(the)h(example)f(ab)r(o)n(v)n(e)f +(corresp)r(onds)g(to)h(the)h(cen)n(ter)f(of)g(the)h(b)r(o)n(x,)390 +4910 y(but)h(do)r(es)g(not)f(in)n(tersect)g(the)h(coarse)e(grid)h(at)g +(all!)307 5026 y Fb(\017)41 b Fk(Requesting)25 b(output)h(along)d(a)i +(line)g(de\014ned)h(b)n(y)f(a)f(co)r(ordinate)g(v)-5 +b(alue)25 b(will)g(giv)n(e)g(y)n(ou)f(the)h(index)g(closest)g(to)390 +5126 y(it.)37 b(This)24 b(ma)n(y)g(not)h(agree)e(on)h(the)i(di\013eren) +n(t)e(re\014nemen)n(t)h(lev)n(els.)35 b(In)25 b(the)g(example)f(ab)r(o) +n(v)n(e)g(the)h(co)r(ordinate)390 5226 y(v)-5 b(alue)33 +b Ff(y)h Fk(=)d(5)p Ff(:)p Fk(1)g(is)i(closest)e(to)i +Ff(j)j Fk(=)31 b(5)h(on)g(the)h(\014ne)g(grid,)g Ff(j)k +Fk(=)30 b(6)j(on)f(the)h(medium)g(grid,)g(and)g Ff(j)j +Fk(=)31 b(4)h(on)390 5325 y(the)g(coarse)e(grid.)48 b(All)32 +b(the)g(di\013eren)n(t)f(lines)h(will)f(b)r(e)h(output)g(but)h(y)n(ou)d +(should)i(not)f(exp)r(ect)h(p)r(oin)n(ts)f(that)390 5425 +y(app)r(ear)c(to)g(o)n(v)n(erlap)f(in)i(the)g(output)g(to)f(agree)f(as) +h(they're)h(actually)e(not)i(at)g(the)f(same)h(p)r(oin)n(t.)307 +5541 y Fb(\017)41 b Fk(Carp)r(etRegrid)31 b(\(whic)n(h)g(sets)h(up)g +(the)f(re\014ned)h(b)r(o)n(xes\))f(kno)n(ws)f(nothing)i(ab)r(out)f +(symmetries.)48 b(So)31 b(if)h(y)n(ou)390 5641 y(ha)n(v)n(e)k(a)g(sim)n +(ulation)g(in,)j(for)d(example,)j(o)r(ctan)n(t)d(mo)r(de)g(with)i +Ff(x;)14 b(y)s(;)g(z)41 b Fb(2)d Fk([0)p Ff(;)14 b Fk(10])35 +b(and)i(y)n(ou)f(lea)n(v)n(e)f(all)h(the)390 5740 y(parameters)26 +b(to)i(b)r(e)g(the)g(defaults,)f(the)h(follo)n(wing)f(will)h(happ)r +(en:)1869 5989 y(9)p eop end +%%Page: 10 10 +TeXDict begin 10 9 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 -137 a +SDict begin H.S end + 0 -137 a +0 -137 a +SDict begin H.R end + 0 -137 a 0 -137 a +SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark +end + 0 -137 a 456 154 a Fa({)41 +b Fk(Carp)r(etRegrid)35 b(creates)f(a)h(re\014ned)g(b)r(o)n(x)g(at)h +(the)f(cen)n(ter)g(of)h(the)f Fj(index)j(sp)l(ac)l(e)p +Fk(.)61 b(This)35 b(migh)n(t)g(co)n(v)n(er)545 254 y(something)28 +b(lik)n(e)f Ff(x;)14 b(y)s(;)g(z)26 b Fb(2)d Fk([3)p +Ff(;)14 b Fk(7].)456 370 y Fa({)41 b Fk(When)28 b(the)g(IO)f(thorn)f +(requests)h(the)g(output)h(lines)f(and)g(planes)g(it)h(do)r(es)f(kno)n +(w)f(the)i(symmetries,)e(so)545 469 y(tries)i(to)f(put)h(the)g(lines)g +(and)f(planes)g(as)g(close)g(to)h(the)g(origin)e Ff(x)e +Fk(=)e Ff(y)k Fk(=)d Ff(z)j Fk(=)d(0)k(as)g(p)r(ossible.)456 +586 y Fa({)41 b Fk(When)31 b(output)h(o)r(ccurs)d(the)i(lines)f(and)h +(planes)f(don't)g(in)n(tersect)g(the)h(\014ne)g(grid)f(and)g(so)g(y)n +(ou)g(get)g(no)545 685 y(output.)208 851 y(Morals:)35 +b(Comparing)27 b(1D)g(output)i(on)e(di\013eren)n(t)h(re\014nemen)n(t)g +(lev)n(els)f(can)g(b)r(e)h(v)n(ery)f(frustrating.)37 +b(2D)27 b(output)i(is)208 951 y(usually)e(m)n(uc)n(h)g(more)g +(informativ)n(e.)36 b(Using)27 b(symmetry)g(conditions)g(with)i(Carp)r +(et)e(is)g(tric)n(ky)-7 b(.)0 1242 y Fm(References)0 +1324 y +SDict begin H.S end + 0 1324 a 0 1324 a +SDict begin 12 H.A end + 0 1324 a 0 1324 a +SDict begin [ /View [/XYZ H.V] /Dest (section*.1) cvn H.B /DEST pdfmark +end + 0 1324 a 0 +1341 a +SDict begin H.S end + 0 1341 a 0 1341 a +SDict begin 12 H.A end + 0 1341 a 0 1341 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__astro-psu-edu) cvn +H.B /DEST pdfmark end + 0 1341 a 100 +x Fk([AA])55 b(Departmen)n(t)27 b(for)h(Astronom)n(y)e(and)h(Astroph)n +(ysics,)1915 1461 y +SDict begin H.S end + 1915 1461 a -20 x Fj(http://www.astr)l(o.psu.e)l +(du/)2868 1378 y +SDict begin H.R end + 2868 1378 a 2868 1441 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.astro.psu.edu/) >> /Subtype /Link H.B /ANN pdfmark +end + 2868 1441 a +Fk(.)0 1507 y +SDict begin H.S end + 0 1507 a 0 1507 a +SDict begin 12 H.A end + 0 1507 a 0 1507 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__cactuscode-org) +cvn H.B /DEST pdfmark end + 0 1507 +a 100 x Fk([Cac])41 b(Cactus)27 b(w)n(eb)h(pages,)921 +1627 y +SDict begin H.S end + 921 1627 a -20 x Fj(http://www.c)l(actusc)l(o)l(de.or)l(g/)1915 +1544 y +SDict begin H.R end + 1915 1544 a 1915 1607 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.cactuscode.org/) >> /Subtype /Link H.B /ANN pdfmark +end + 1915 1607 a Fk(.)0 1673 +y +SDict begin H.S end + 0 1673 a 0 1673 a +SDict begin 12 H.A end + 0 1673 a 0 1673 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__CVS) cvn H.B /DEST +pdfmark end + 0 1673 a 100 x +Fk([CVS])42 b(CVS,)475 1793 y +SDict begin H.S end + 475 1793 a -20 x Fj +(http://www.cvshome.or)l(g/)1397 1710 y +SDict begin H.R end + 1397 1710 a 1397 +1773 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.cvshome.org/) >> /Subtype /Link H.B /ANN pdfmark +end + 1397 1773 a Fk(.)0 1839 y +SDict begin H.S end + 0 1839 a 0 1839 a +SDict begin 12 H.A end + 0 +1839 a 0 1839 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__gnuplot-info) cvn +H.B /DEST pdfmark end + 0 1839 a 100 x Fk([gn)n(u])47 b(gn)n(uplot,)550 +1959 y +SDict begin H.S end + 550 1959 a -20 x Fj(http://www.gnuplot.info/)1462 +1876 y +SDict begin H.R end + 1462 1876 a 1462 1939 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.gnuplot.info/) >> /Subtype /Link H.B /ANN pdfmark +end + 1462 1939 a Fk(.)0 2005 +y +SDict begin H.S end + 0 2005 a 0 2005 a +SDict begin 12 H.A end + 0 2005 a 0 2005 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__HDF) cvn H.B /DEST +pdfmark end + 0 2005 a 100 x +Fk([HDF])c(HDF,)498 2126 y +SDict begin H.S end + 498 2126 a -21 x Fj(http://hdf.ncsa.uiuc.e)l +(du/)1413 2043 y +SDict begin H.R end + 1413 2043 a 1413 2105 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://hdf.ncsa.uiuc.edu/) >> /Subtype /Link H.B /ANN pdfmark +end + 1413 2105 a +Fk(.)0 2171 y +SDict begin H.S end + 0 2171 a 0 2171 a +SDict begin 12 H.A end + 0 2171 a 0 2171 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__psu-edu) cvn H.B +/DEST pdfmark end + 0 2171 +a 100 x Fk([P)n(en])e(P)n(enn)27 b(State)h(Univ)n(ersit)n(y,)1075 +2292 y +SDict begin H.S end + 1075 2292 a -21 x Fj(http://www.psu.e)l(du/)1826 +2209 y +SDict begin H.R end + 1826 2209 a 1826 2271 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.psu.edu/) >> /Subtype /Link H.B /ANN pdfmark +end + 1826 2271 a Fk(.)0 2337 +y +SDict begin H.S end + 0 2337 a 0 2337 a +SDict begin 12 H.A end + 0 2337 a 0 2337 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__erik-schnetter) +cvn H.B /DEST pdfmark end + 0 2337 a 100 x +Fk([Sc)n(h])52 b(Erik)26 b(Sc)n(hnetter,)803 2453 y +SDict begin H.S end + 803 +2453 a -16 x Ff(<)p Fj(schnetter@uni-tuebingen.de)p Ff(>)1920 +2379 y +SDict begin H.R end + 1920 2379 a 1920 2437 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (mailto:schnetter@uni-tuebingen.de) >> /Subtype /Link H.B +/ANN pdfmark end + 1920 2437 a Fk(.)0 2503 +y +SDict begin H.S end + 0 2503 a 0 2503 a +SDict begin 12 H.A end + 0 2503 a 0 2503 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__FlexIO) cvn H.B +/DEST pdfmark end + 0 2503 a 100 x +Fk([Sha])45 b(John)27 b(Shalf,)h Fj(FlexIO)h(libr)l(ary:)1236 +2624 y +SDict begin H.S end + 1236 2624 a -21 x Fj(http://zeus.ncsa.uiuc.e)l(du/~jshalf/Fle)q +(xIO/)2757 2541 y +SDict begin H.R end + 2757 2541 a 2757 2603 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://zeus.ncsa.uiuc.edu/~jshalf/FlexIO/) >> /Subtype /Link +H.B /ANN pdfmark end + 2757 2603 a +Fk(.)0 2669 y +SDict begin H.S end + 0 2669 a 0 2669 a +SDict begin 12 H.A end + 0 2669 a 0 2669 a +SDict begin [ /View [/XYZ H.V] /Dest (cite.Carpet__tat-physik-uni-tuebingen-de) +cvn H.B /DEST pdfmark end + 0 2669 +a 100 x Fk([T)-7 b(A)g(T])42 b(Theoretisc)n(he)26 b(Astroph)n(ysik)h(T) +r(\177)-44 b(ubingen,)1602 2790 y +SDict begin H.S end + 1602 2790 a -21 x Fj +(http://www.tat.physik.uni-tuebingen.de/)3054 2707 y +SDict begin H.R end + +3054 2707 a 3054 2769 a +SDict begin [ /H /I /Border [0 0 12] /Color [0 1 1] /Action << /Subtype +/URI /URI (http://www.tat.physik.uni-tuebingen.de/) >> /Subtype /Link +H.B /ANN pdfmark end + 3054 2769 a Fk(.)1848 5989 y(10)p +eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/Carpet/CarpetWeb/doc/first-steps.ps b/Carpet/CarpetWeb/doc/first-steps.ps new file mode 100644 index 000000000..d5488a5e8 --- /dev/null +++ b/Carpet/CarpetWeb/doc/first-steps.ps @@ -0,0 +1,2719 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: first-steps.dvi +%%Pages: 9 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: CMR17 CMR12 CMBX12 CMR10 CMTT10 CMSL10 CMTI10 CMMI10 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -o first-steps.ps first-steps.dvi +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2004.08.05:1643 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen +/period /slash /zero /one /two /three /four /five /six /seven /eight +/nine /colon /semicolon /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam +/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 74afc74c.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 +% +/TeX74afc74cEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /sterling /percent +/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma +/hyphen /period /slash /zero /one /two /three /four /five /six /seven +/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question +/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W +/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: aae443f0.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 +% +/TeXaae443f0Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa +/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi +/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf +/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft +/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle +/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle +/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash +/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow +/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p +/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector +/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta +/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon +/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginFont: CMMI10 +%!PS-AdobeFont-1.1: CMMI10 1.100 +%%CreationDate: 1996 Jul 23 07:53:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-32 -250 1048 750}readonly def +/UniqueID 5087385 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 +990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E +6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB +DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 +59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 +D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF +8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 +6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 +1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE +03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 +95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 +74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 +3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 +47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 +AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8 +42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8 +40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837 +B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53 +95601766777978D01677B8D19E1B10A078432D2884BB4F7B8C3293B68BB78100 +16724E495064BA0168CC86D413CB48560D6D318357397832F7A858CD82030C7D +8A4A1919716E8B26AFF8789AAF489EE4E0A88DC477551A87C7DF2856189E4596 +FE015956AFE5CC019F5CA6323A12B763B7B08B92C1A2940D3C566C43729E5482 +63C6DC5E834AEB4DAFB5AE8F0B8931A4687C94D11587B9071C8D81DA14F12776 +53A1985A3EBE37827656BD4635E03F09C3231F906874645E7DB3E59045A59D67 +E745D8487CF73FC50F64060544F624F357BC998A87FBE468DEBB38A09449EBCA +D041D7C29225ACD16CB8A59E87924D15A9125F064710A6CCCA3AD3103D8FCC94 +CC3571C6F9192774FCFE5BB42A14B27960903144D28BF047BF4C77646EA7BF6F +440D4EDEB712C63F2E8080419E42D1D58EED685EB5CDD49F80DB6E5553B519FA +C6A39A093155802F3EC607721F390307E91ECB597ABA60A537E3F8C045BF5DD3 +D88CF6518D37FCD95D2F295D902D617440D23516D962F47750A682A319ACE1 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMBX12 +%!PS-AdobeFont-1.1: CMBX12 1.0 +%%CreationDate: 1991 Aug 20 16:34:54 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMBX12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Bold) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMBX12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-53 -251 1139 750}readonly def +/UniqueID 5000769 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 +B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 +AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 +7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF +20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 +B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D +68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 +D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E +26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D +F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 +77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 +BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E +C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 +30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 +148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C +E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D +E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 +337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 +0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 +472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E +A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 +326A3828FE972BABBDC761978EB577B7EFE06865DD3A7668059A126B063900E2 +6DD36FBF3B050E0F14DCD8FB0A0D93F30588A01E56F022E88E99DDDC2AB8A953 +6D943F1CEBC66F7EEB259027A42DC747639B16D2B8288EF43501803FB65EB77C +075A59F0A8C2BCFA0CABCBA3FF622D06B99F18196DC4BBCC264B39D51CF7292D +E60447A04B22582FBDB940AA3C867D3872AB2767A9056E6F9FB3DF4E1FFCB960 +88710709100E7A44067DC5E4103222E109E7AED84D18568B59D7215DDF8F9494 +17D730DEF1A9FBEF4C99F98901E53E35CD8B61C8D0A81CD471B2266E47729003 +145E31B533C0F5D84640A458F50BEBF122FB257B6229AC0ED5B65E47A9FCC007 +8DC3F3775D9047DF0059EEE4D2DEAF3A42D8C36D4F413E8717EF2F3C3CFF922A +3730E5BA1FE7EEF81C3AD7FCAC4FDF043ED536928B48A8DDA54C7F37BC234665 +D01BD9B9C7C98321E649C1036B2EFA7116DE41161BA156BE71CDD85EC8066C6A +F37FC82B6D56EC79AFB23D2580DDE7A6A43588BBEDEACA6949A7172ED8EE13B4 +B3CD8ABDCA42139058372C0FBA26A52E3FBFF2D9BAFE7CA0F22BE6F40C1EBF4E +40BA8E2E23A4BA38C9DA1BDCE62AE820A41BAA9A84556EB621896308F58989FE +44DCB1DC9D181B22DAFE5AC6FE397E77FFC4674195E1B332B65CC922E361BAA9 +BAEA7DB3AB7945EAC2A1B48DA0E780789C2C479112C90DE400C2F8FE22A8707B +6680A4C9211DD012407C66917501FA39902E3FE393CB515FAED4C892AE96125A +4F1687B8A3FEF53D89D063B5ECA8F8B58A5EFD842DCD9DA17FB3D691A6745C4C +CA4400377687152A1D12904024DDF2FC802C21CCFD0953790CC8DD335704A24D +909BBC8322633985F79D61AF228AAA13869E72277A57CC61ACF28EBA081D916B +0CF53A69F0E19DA4F2BE7C04F28A5179CD8D2237715C4AB690F8F513E0657C3C +E0CD581D68F565678EC5BE642FAA0608A9B4B8DE2701267906AF73740DCAE4FE +735912385FA01914A4C662E5C85D0CB3EE56E1847A553F1D47614206E0E17E97 +8CB2563F37D64D7AE95B4CF115FB0C3CE9EBC9A94D6A349029D82BE1B0547866 +FCB97992F1AE29619C26E33A434244F9AC4C8F94B98CA6A18ADCCA3392101098 +A428861588076D543243316C11248C3F980B021EC8DB08BCEBE3F208C889355C +78C480AFDF7DF8C0C17DC3DD987BA67BBA80C8125E20D48FE73BAD5B74398A69 +27BF90E3484C289BAA4DD04D30BB6B39268DCA7C9C676F442F7F5749A7049DB0 +0F331114597E7B85D3BDE1AF33F42F606EFE20D002461F01996FE7C5E500C6CE +B054384B21F2D3703B64105AA616B226BA5D9EB1CBB37716F9419F561F3336E1 +54FB3484C9F6F1D57A738F2EE7B1981C6B14B0C64073A1930631A2731B28EEA9 +65AB7561B5FD9F0B97B3C7332FB97879F743C54B6A766149770AFA3A3967D288 +0D9C060EE198271ED5E3B26E02DB27E9049886C1DAC569033DEBFC390E5B3EB4 +A044786380D375EC461249C6BB8A234A7E5880B7860E61555E3C89771DDE503E +B78B5DE9B325B35E682BB351F1A6657B0A3D6E426816FE9CCD19D3624A61B581 +EAA7ED7C29F3BB9CC5558BBAA95723A8123BC4CF55459B54279BBE6911BBC6F5 +31DA4C88149E94E6FA1A9321B52F8F78842337FD6E5B969064BAB8F3600CC406 +B9E72FABB4E56D282B5D89868259BF551F7881E8AB1CC207950A178E4FA1466B +F4841E71938892A283A113AC884D8E40B3213C04D77CDE4F845A959CC6728CE1 +269FAAD253B1CE956F20471F7E0197A467F33C39D1B29DDEADC1EA402FD28D13 +AC0444A7785B15F2822FF13525500444A75809725CBFCCDD0F5B6BF5420A7797 +29B603F16B228AE5D2AB7CF1DE7EC56A7687EBE5825D3F62CCC6E6CF60D6A09E +A91B419366961C98C706B324095A2E2F7B9BAF58626788E6BE5CA67DB4C50936 +93EA3CDF3A1A3355F0DD337CB8474F6E2F83CEDB3C18A1238F0088C627028CC5 +A3D1CF04ABC807AEAD0484136291D5031FAE2B4281A9BBA61B2DE3F37991AC23 +B049F2AAE9F00851CBADA724E76ACE3600B574266A7DA81EA7F601B679E28A34 +0ED005B2DC1F63D40CDCD0D0876E4EF8C6692773DEA8B61305B364DD6C5AEAF7 +75EFF0396D89B5E5F400121442EFC940852E8CF339895ABC3525BDD09D925B9C +B83D3141111610FF6A2E1CB030B8FE3B212BE863B28A19226606E147315F32D4 +474B8AC1735B0DDA653223423405D8DE81070543EFA352FB6347007177D8E41C +9BDBE598A8F621629EBB2C5B3233446573C34369FF2BE923D2788A823A6197F5 +8DE62E1F90358A972C9EEF536336D58ED4345C6997DC9ED00457B2B2E628693E +193778CB0673C44E408259ED2574E7D83470903B3AE6EA3A92C36E7D5FF1B35E +C4E0580D51F830FE29CEA16B3D99529D07A05DECD8D27648E5338AF5B8384FC9 +287ADBEAD54F87D296E0726F5E4E4519237C684820F6F6B04DCA2A5F28171D11 +25409BC857C62CF335BB7F617B520EF95389494F5F0791713C75AA83007A4FB2 +C9A1231558B04CC8AC1EDF8835171DD0E1A1D8334F8D4395345B16470A40D832 +65AF84DDD9706820E0F748B2A9E99419B0A6B150D64FDF7BF3BE6115F703C45C +EEC368C30EA993E2FE3883EAB3142A22C93F4E75BBCFE7477460E1F50DAEC7B5 +69CBC67484F544624061EB660307F1256FCB7C00A5875BC9AD6CE560F0E88F8B +E08C22F152A34D8B6A5A7B8DA9E0EF5576727BD729B752583C47EB0D3C804148 +194D3D1609BFEF0A220878F91EA2A2C36001AB76A209A2CAE5DD348C3F03C9F9 +E3E54B381A7A040A91F445AEED31DF4B8299DF97BAD6109481B7B1C768EA0207 +105401E08EFEC4B69DE297A1F306DCB0C590D8B2B570608F9392922116F92EB4 +79DCA8F908D4E64B1747655FC2115495D4BCB26348238A3CD23B0BC59D0287C0 +EE46A73225D2D05BA2967C4F3FC252BE2CDD21035DA65BCB1916BF7E594AC221 +0813D837AEFC5F674311E3FA42CA3237332E22CD2A33ECA5629AF45E68D2F84F +FB6CC3ECD43E9D133A1BE7B242CBD99D24407520479600164075879736DD7779 +23A2B34FA590059D184564276E5170EEB185D4A0E25FD39855E154A96234319C +9B420C6C95995B89A9C46C835F5084EDDCCF865FACC4A26901DB2ECA688D6C07 +C32956F9552B1BBD468A5AC667D834B1C864B229B67340CD5D22B01B24F79849 +3E1124F9A6CCD49E56D4D9165A529F1A8EA9B61169E335FFC274FCC99D98D4FB +468232F84FC3DD58B7B142291A2024A803C0D71C2A10F3C5A048EB2FA15F1445 +9C8D8F3F7E0CD459BAD1D53C2C358AAC6D0949485EF6000A5FED02DFE7F30847 +74300F971762FD3FB7231B9CD92868AECF5933FE7081BB095C72F2643DBF0D76 +103872C32351FC5E9A7A229BCFFCD80EE0D2C0BA8A6EAC1F7AE4E7194CC38A53 +A4714FB527FFDB199C97C6BF19FC9E8A1A5A725FE5DFC92AA2711454ABD92B55 +951F6CE78AB6022B477D996AE0770F2A0600F7CD9B21365F5D389ACF63A47148 +983FE541998FB2328F245E07577DBF11AAFCEEB626134D4900CF7D40AF0E9588 +38EF6314F33BFCC98868B32223ED4EEEC2DE2ACC1A23BC75B6071344F19B4B7D +B5A88F63FEA1DDA7BC4029EFFE12D281EBDDE805FA5C53E93A4BF54237077209 +0E7CF8A16E2FA4ACF3DA1E5AD6329968BA2DFE2131A5C7E42E1FDE4D1A8F9BE2 +D64068709EF404D5F1B8989C06DB5CBB3104D3C57A51B1C02C2AB2FA45E0F180 +F79FDB477AFDB19628980810C736073A01CAB49D791F75B2AF387C1300BBE790 +2D0C3B08FF794364DDE78E7AB5F610297E7A4AC90E5A097670646492AF9973D7 +026F330A2BE8F7EA7A65C5E12C8498EEF9EF0596C0B1C68895EE38B22AEEA36A +2226B0E5ECA6D4B33937A4580C32135DA04B6882D326A355F2BD08D92FAEEEB0 +19C074BAAFA2FF5F91DD888618B342F76DC0540DF5E0869C7593B93E01A20AD1 +93BAE247C022C8B0C168A8687E1278564EC2E7A9B5353CBA13E3CAA7ACB741BA +0094A2F8D4A2E94A46F8A1441F6C8518B8DD628F2C7AD949833BC6BB3807C47B +06916F18EC5B0568236626890292FB4413006FF2447C966BF411D3AADF2BA814 +EBFE6AC82EB140CE3905D53C5F76D96BE6EAA296875B84A36CF5E7F9F085A057 +FDD0DBDA97E819B189C34A76B2C7334AE71AAB942D215E5A1D83A472BB84F04A +A47DC5DEE2FBE8C2D1E8DD894EB5384D5F5F74B8374F1DCCF9D4AB1182709747 +162BC3F52809226AB7BEE6E3C19CCC43CBF84FAD6A21B31C5C67148AC7F4A2FD +DE6ED7E38EE6126672E1E239EFB8A42761FC438ED656FB91A05FA5DCE995C221 +FADB1B912DD99FB9D3C2A295DC63A363E1622F87C5378F9E24FB18ED9E254E9B +66112E59EBE1E07AC73125EA7F7E038DDA57C6FCA81B2FCEF8628B27D62720B0 +9C9DD2D3684E20D8A2CF2A1357DD0256EC8E3413DDE9416490B863AA8A638D1C +4AA8F249CBA0C1BED0FC5DA55F6F1F9B005FE82DEBDF6ADFC44436FAFC1CC06A +29E50B099CB1E02CEE87D9A74A59459703A8F2285E795C7C80DFFCBAADDE3493 +1673800C06670733C377D5C52BDBE6E110341ACD7C33875D64B96743FB2B8D9E +FA91541F2DACD0C29DBF74F25D2EC1B42D0E4F8C4BD8B62DC93F49C26D6AEB82 +5124DE1E13889F13BFD4896E891561736D285B44C87667FE19FA66F5137BC3EE +13E6E2235669F45EC2C435DDC06FF060C3043ADA30AD849752D8691FC62EF47E +E2083659764C57816987E631F10D8A38BD7F2580BE091248F63E10BC25FF487B +E78B83244EAF8B975C8E1A64C0BEC59051E8080D435C6EFC926664D3C3A94F64 +206237957C02FA34BB46BC685173A646B6631D159E418A9AE7C682F0F840FF4D +0EF052630F27BB6AD1284193A35FF4C7735217017FAC5F4A553BEA8EE86AD539 +C33DE0DB15BC65CE96D76943AFE6B93292EB5AB3D52CB3EB5793BAF4C68B3203 +AF13D02A744788B0EC33C79BF49D6725C377914D320E6C95883EB5F46EB8210C +C86494E59A02240085B5E48E7FDA8EF7DA555F8B15F6E7750A0CB0DAF231807D +CEA2BDD3947572E1DA338D39CE5E82090D3DF1647AC46AD0EC9D2A98BC0EA65A +307ECD88E0AA7BE72382D877A63F39103F9EDFBA01DE6831AE4E0BE631C32EB3 +B49CCE6404D2BA960189B74B199E308EEEE27E63E384F39DE3EDB8141347EFF7 +782BC0F1D0BBC1B51C23EC112DAFBEB74694477E34916006F4AFED8AB4A1C7A6 +6B139E3CF78A2E53DCC783305B7EDEC99602E38A462C1CC3DBD546C4FB3BE547 +9AD1EFCB01E8958D97E46EFD4A08FFF6137FBA035477838D755A87215925DA24 +1260BC5E256CE4E59ED96C8723EE8524A9DB23EF0923E2F38FFBE49352478279 +17DD5CAA32009DCED721AB4EF5EEFF41BA43D61EFB397DA7B45E2D6F637AE61C +50F76DCC4F8E73142E55F0A9760DFF7505B6EF44AEB1CD406225D2FBEEA1A66B +DC3D8F85B520987D11D777C97D960EE07C3B6C8A77CA51A1694EEDA4706B3318 +F221E7DE0DB4B91A62B0F1ED04B7A8470D0709639D481FC70DD410F6CF016A88 +1C62BE8A3C5C9E83D77C8706F4A503DA39CE44F088338A2A9045A3BA070303E8 +3E3311987414FF0B50B712D373308B9A8FB57E9E26F8CBC967221EB3A69CB06B +3D31E834F39D4DC17FBB28185F54735FE72A5FA8D11CEFC63142C88869BE4F79 +739A5B8667D288575268931B83B35DFC61F443D218C7B894E953700CD515F36B +EE73FE06C4F487741B18477F658524500D6FBAFA5E369CC29AAE71EF4B5B2AA1 +051FFF8F7277BE7B0AB7EA54BB274065D703BCC02C84BB5DB89E780E2F84ABB1 +65C0EC14BC116088C10111396EFC0DC0D865F8B292322A4E8244577208F2D4A1 +44720132B0727A54BBC88BADCEF5D8BF8385538DECA18D842302517E1EF6330E +6356F635FADD4C0D479D02C7F6560B9B07759E13D34FCF2587473C8EE26557CE +9E445C35A14B8479EACC4BF26123C9AF5964343C64F7A8B563BC584462C85DAD +399B2D2D7BC70F53B2E86B8B24ACDA6E6D4826C676028CCC276EA60E03FFB116 +648E994C19EF4A1A18B53CD6F02C66B7485856AC183F01D5678CA9E37E8DEE52 +805FBCF13427D9D56699086A39AE55B17112E16A54721FC67E56B045E1EDD238 +5B7A9A9594075ABB5AC597849AB494374326668960288281A343E73FF071CD54 +880C24120538BD664C253297E13C208D97A3A29F059868065ED98F15A66D0F83 +892BE8740630CFFF706642EEBE3DFB3C6640D304E3BC8C4F89D134E724290DD6 +0E403C317BADE2D3176EF099550F20960B326FCAC0D1681EED54F615D48B154C +793BAB8843A6E14DE5B80F51BBEC5102F5B7AC3CCD9DFAAC10D480CD789FD8F4 +38D449ABF4D7DDD1E4D1316D8926A337F0B132787DE4AD5BA0F7974CEB916A3B +51FE3544160EB0C80EB1663E75674F3B48CD96D1987093F37A42DB341D24AFA5 +C3E15AF9FC572B8A8003223AA540AD440271BFCA7639B382EA5BA6B495EFC656 +48D9EB85D39DFBA9CE6E46B63E94B97579FD1769A47A85E7A28C430D47A3021B +9F661EE2ECF5E19B138C800A8F52C560C50AF2CFB637E071222AD9DD1D54C638 +A799E663524776846388238C5707F5DB938E24DD024AD74A95A6CA8F78BD471C +D693911FA2A076B46FF7BF4F0FD2986B50A1C691793EAEF1FE52E50D2DC63DD8 +84E5DE98F4C2A4FCD3C07395698867E490C1BD3DAE26D76FFFA12C932DE45B4F +04D2324E5714FB2CA60BD319B15007FAF5AECAFC4EFC3CE7C53FC181250C6F1E +093794C9EDFFCED2557BCF2E20C635D6BA53D1A5D5B4D521F514A64B3263BA72 +66C7684378E2B53E29C8443CB3E1F5F7CE4E7B45EC9E1C84AA6E9E0E0D92D6D6 +B8677E87F9902B4B48F2F0BD3DD8ABB7D96C7AC9FD874930F590B9FECE52150F +48E7053D3CAB1BD7A2832C486DBDA626CA46FA8BF71736E631B5250917B6A2A3 +0D4E93B65055FB4A6197192309E28C295A8E98C15F92F82679F718191D21B478 +E9AA44599043144A522493EFB9394D5A938E2EF6ABA420D6CE45E251E00526BF +4951257E01353E1BC644B2854FAAC6D2E6B02B41CBBF53FD38575EFD6449B649 +00AF0B2B98746454C7D49E1D37DE767B965AAF7122D564BEB298095B979B994B +51A418F0A5315FD1099A02B97175A352414443B78E619940B6B8BEC2AFE5FF4F +68A95F71A6CA77ACFF6E6045C34926208B48797554D9C74955A07DB1DE34B2B6 +00B0BE9560D4186DDC28B8889BE03639C916AF16750F59C3BDDB18FC787334F5 +634A4DC7CB1B5C0A74E44576E51FA2271DD71EDECC165C9E96E6004FC8B37DF6 +56B33D3B12B66706C17014697CB0B58E5B94AEE42933830A0C6459DD52FF94E5 +19D392B1078DFA65C725BC606BDDDA243171C28DA61CBC22D427585F285F0B6D +C78EEE5FDA083E7B245D79FB5215B6AFC3E9F098EB47C2F63BA597854D7DD5A3 +FFAB6029AAA4A812333C7F896F1F7CFDA0D790375A9F1FD7A1C80C3639939427 +EAD48E9A243934C964BF1E86633476695F3C9D6D85E95ECFF5B4B28993508B9A +004B70AD715E553356185FB460AC3BCCC747AA95C63E3553842201F88AA276AD +705295E472240DA7D3C54056F4A31698015A20A45FC2CC9047FA6FE149394BC0 +05BF0F15A26C322A215BAA37ACAD34896EED735FB7FD5992819103B8BC0F27E2 +C2EC4579BADB77E1C275FE29AB2080BC4F310B316CBA6103BACE178C52D1FB2F +B0F5096E5ECB89BA02E217C8235B12EBDC853247AE066E786029EDCCC7E9C6E9 +9DE286BA8CEEE539C2D10D0E5B9F7DD1BEF9EF5F7C52C26B699AD244CC903E91 +248995ED9F8F38B6F550F86A4B990509FF588F4E2B2EAE62B895728E385D01E9 +6712D9E06CBF2A93E2E2B00C53E61B047C6F21860D27FCADBDDAFE2D357C622A +5E878A609C5997E08560E3A4E34F5068DD4F8F9A114D7A68E353FD54D4001C6E +E338A30773F6081616260F47E51B9388B1C6784785AFFA00C03440FDADDF9DE7 +8A1F0687908D935FDCFE65BF6429FEC2BC4AC65D1922AB39F7DE4D727B284628 +DAD429B6B9327EC45A77C1868B5F3D63C422FC561F6C210C834AC7EF085DDDBE +541E6C4C244B14A19B0C87C4CF98E4D637790EF3C999B39859AA9EE2CE6B0CD0 +EE1C12A9CCB174C6777E3C5779A5E01B24865C4DD84B1E27D34A7F4CD10F8214 +15DA8A1A98C22E7077E0127ED84D27793F0B8190AA593BE6FB111CFE487DE241 +AD03DBDF15C6F3E3A38D332B42554B84DBAE2B9DCCC8C7E7A18DFFBD2C661CB9 +06A2B00A5508F0572B7D321095F5B2850920567EB7E3DF22009CCFFDF8D42B7F +658D9D6D43AED81F0ED5DD1DC052D923428061ACA674984A0072EA610081D3F8 +F7E876501CDB7E568E0CF96B378C22EB54EFAD553DA5A1F4618E2DC7557BF04B +C19CEAF19BC0D3342E14DAC41ED8C64173719F7A881BF284D9368555B42D76F0 +A9CC63E14D0BC49D734930E62AEE77A44FF1C0101EBE95BBFAC5405A169EFFF7 +2C9DB33663A6CE271E89F78AD5BF38E5A2AC984E9AC9EEFE6376064393559BF3 +9C8E223D27BCE960977D2CE0205702A0AAE02F7E318685FF137BC70AA976C775 +AA3A62D6B27D99AD12C59D9D6DCD165EDFE3D5E79511FF154630328E280DA6FD +E657E3274DFF4EA2B6D2A4F2B7A20E5D7B48A8CD07C67CD124A92341F9A1640A +68044FE3CAE4B0E94C1CCA0899F350E8551870878CD6BA9D78EFB900C9618F07 +0E55F956DF0C1859280A4FAE6F257CB0FBD115D13DD7382CB1E72837E93218D3 +75819A264A109DF7FB3728449CCF5BCB9DCBE2ABA3068115CA6FE015CA4BA5A6 +A2D8BDB89DA2F3C5D3ECC6490127D06855D1E5143A92C357CFC8D723BB42F60C +83B3F4DC88BC3C1628F1562F6098E1EC27DCA5DF416502AA0FC2D40E23235111 +BFF9 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTI10 +%!PS-AdobeFont-1.1: CMTI10 1.00B +%%CreationDate: 1992 Feb 19 19:56:16 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTI10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMTI10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-163 -250 1146 969}readonly def +/UniqueID 5000828 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F +21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 +06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF +55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 +B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 +0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 +1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 +7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A +7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 +356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B +19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 +C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F +244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B +AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 +5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC +D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D +993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 +2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B +E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 +309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 +F42EDDCF39AE522A1DC2D80B2772B05DA60F3DC15A815A6BAFEDC399C7956E75 +3851CB3588E22936FBFB63A58300298B11C45D82385C083D07AF133BB1BC941A +FDD9F34D5E0B8087EF2A58C54D8AB7580EE3ED58AEB83B72CB9028F472ADBF11 +05A77651F118824F6CD00209EFB60C1D32D46A78E8C8DCB8B0E742828E3B7D17 +DF5200D68189C91FB8489CDEE8BC223C4281DDCA5F7DA80BD5C2D66A14695EA1 +5F05E03500579ADD440ED2C57F535807560C6FE3873143D792734FEAB93AE8DD +633BA6FC51887E252E8CA463340490CA6634BFA6F5B74354D8087857E9E1724F +3FF689C0CEAFE3E98D5590D95FF236DAEA305C717390262787DCF2B5D539C589 +F8BDA7F1FE3FEF7CC7CF3B4E33451B7EF31FC38B01ADCC35BFCE72843D2F9E35 +CB11A73E8D78CEE16671D907E735103A94CB0462BFCEC1D0647D0C6097BA849E +FF60BB827CF5B8A7D71C74418E6E90E83EA97FEDDB89AF3CD82C30646EDFF0DD +0FEF19F1BF7993439A91B14CA694FABB7EC4BBEE94AC101C413CAF56CD0CAFD3 +069AF507AC635507A0299E27C31B9820711E997D98195572A64C2E305C409921 +59CCB19119EC5A73C1CC98AFC46D944D9E634321BECF9969E4F40691A148BDB7 +D858953AA978FABF4AA88EA60C65FFE7CBA1D6E647C11C29D3799DFEA39CCE2E +B0349F6A7F19BA37F8360806D7688CCE15E160FB401ED9A3DB8E6652FDEEC161 +444CF0478464B226A01EC4B7DF92C7AA7763485088806C9B116B0FE2A1D99BB7 +21C0C0C17C64A44741911CB4E1BA63455D2F5A07E1108AE8E8E1CF5971121DF7 +7173A9B97152BCFAC5D380BB478452CD474C058C37DD7FAB55E116BDFC359F89 +83668C53ED1E3F877201EA068AB1483F7FEBCB914DCA5DDED1960BE01512D1D0 +29B7CEA5FC59231C0365715E7E70455CFAC735BC9A23FFC6947795CA3ECEF6BE +32E452490C1B29C434B1181235E04A9C345CC527E37B26720B67B04400798B09 +D711A814519AF422CBC8B29BD21B8E512D7FD8481EAB9198C7992D06629BAF04 +8810FFF7ADE59F42787673CBFF9A7780FBFBFF84B094AAABF81843EE63EB4982 +485DF12E7319DC52ADF0F12F9A78168D466E858C171CF899F7F3FDAA93674515 +BB485EF88A7B7D89E6FAC8890BAC50477930209860C4EA2DCDFB4DA6DCC543E6 +8E2327523B409FE3E49189CBB2A11FD3E4BB0E66753C2128B625FD62B302FDA8 +D7C4153D9FF4BF315DE56D59E83A4ADB8DD26B83FCC628D58BE3FE36B014D9D2 +B4F014E1BA589B3930C38AD1F6BB16F84855A249B6136CAEC08FB20D678C6CEA +826BD965CE23CD0CBF26123271686587FEB7AC55FD476702651C7A5FA6B0E450 +88C4112A19F287AF9B041B9B6FA3E4EA4C2B39EEF476BCBE12643BA665638845 +FC85821F0C613958DF2AF269344E8064EBBD3C9A99A7E0276458B6DCA480CC81 +9BC6F0A54A8FC117B19D98A10730F6C25DE29874906594F8A5EBCBBC2CFF48F2 +FDAE556D16ADDC870CF1C9D6DA29C5529D566D937E3DCEA7E4AB797532A0411A +1798C230B45B61BA963FD00936BCE43A81B5677CA8C3FACA5FAC17F91C34FB68 +CD61D7492A8F5289ECC59DB30FA719313491F7DE190CD2B259FCA498AB834519 +7D161DBF1F34BF2B5CAB0B0651D81B087055A1AA9F7DB1903A57BD9580A70B36 +C44E397338628A5A303BDD5D1E20FE464E76552248CC6F1B6EB944A497BBEA5C +9C448A35883FE9ECCC56493852389D4C4FFDF4B4E21FBE602DF9503E58106B11 +35CA9A3CE723B6F662D9DF9970FADCA2920D527E7BF9D1266D8F6757CCCEEBA9 +3D9DE4E1460FDE45ACAF2D79D36F8FE38480D3AA1320F1E4939E231ADD1992B9 +12F7999E12FF7C992A9DAF141331BE1BAB8D27F25216FC9FA3B85A10241E4470 +01039D758FDA33F5AA1E96853C0B48070280AE5CC4EF39DAAE0DE551E2DB256C +B3E9E5B2E936BF9824F1C14626E5B589D0BD56D149AAB199DE147B8F943B1D50 +FB1757A96C37DBCBEF052FB42850BE8D5524066B8361646BC8C642BF370B9291 +25879095682AAEA6CE0E6931095C6BAF7DDD66560FC235E1809A6CF8228A7451 +35F5218A857649FB04E9FAD40080E70FC3BFC3D727C5447D0AE04B9587547B7C +C477D2C7C670640A289060D460FF593EBB897B39BA7D1C1E620876A221BAE9D5 +D42ED6B6ACF8C8F92CEBFCDC5C3E9D14F1175EBF65E40BD23D5B45290133D634 +E606E6BF5C94295D858ADBB5DC952E7D05A70EE02FCED4A6B758251B390C9609 +56D3C5139175A07AFE6CD8E69FCBD97C7A0B5F4ABF3B8F90317D114CE0C64976 +44A8063D7D2C8BD712E069B14449F03E765B80315BCB990D070362F418683AA3 +989BFA70A0BA09C8B937BD316E749025B4CBA49CF244D3ADE123BA3FE68ABAC5 +B2E1AFECB73344B4CB18FBCE6780517D0D2FE3B09551B39C433EE169D7A3F74C +D15D79BEB5D42E4E85BDDE5CBA8D254FF22011E0E458AE95E6167556A286BC21 +6D217C536917125735A3E52B71C136775FC4FFD08747A960FA069E2A92731E56 +3DBD4F1809510007887A8AC62EC793EA0B0AC68047E8F0075D70CB461E50194B +319FF3F63F6DCAD2377926717FCC249D94EA3FEB008F74A678B78364290DFDD5 +D557F95815799A88447BE2C9FC49F1568FECD8C46F95B60472A6D5B6152D80B2 +E812420B45D89456915A30984C90E1782E404C46E986F6305320DA40A3BF48DB +4F3E9DF0406B48ED4B973C707AE6A6DB8F2DF4D31B0FC0EEA946E245234F9C5F +553181AD20CF39A8BE532D35FFC849C9E5F6E719B3E35E63838895ABEC7D0545 +3C723430A08508308922AAE98CF42008A01D7EA10073D99EF71DED59ACA6408E +BB8A85915F40B6DB0B0061DCA7A46375BEB2E56552FAB992C7463AE0380D388A +9157F6CCED86B0680D93919F33A13B656441E31E96218BB5441F36BBC8CD8329 +28179A1A79A2C5AC246AE1D3D1972F0C4EC1617656C02DEA551E63EE06571B80 +1038AF7068344EDCCD7AEF83BD513D2C451E41C82138380091B73208E0A99C53 +38B55A415F9565C578BA6037B06AA6016577F1751D64C1F88BB95DA148C76301 +6C95FE08A2426368A298D73E5EFB738316E163FA9F8600490B4F2482DC737376 +CC175E1DFA11A079858870ED9F62AE641720C1C91839F4D37827D493DAD94E51 +0FF4B62F7ACE1E01B28A261FFD232B8B2B7732D1123295C5F92F01F29CD2DD32 +BB88C76379DB50D037C694F1D8C87A60C6E4E259589580F36197BCA9B4349CAE +7A731A9593F17A53359C9455A3DA0758A0B673A6756780F6CB7DA25D93AB4E66 +076A0BFAB1E34F98508FF05E3582D730FB54852561170D8CDBEF5DC8C0E70D2F +1E52AF61A666131882FFFE828EBEF961D5C8747A535F7CA25367AE2BDA892629 +D5F5118290C112AD41CDF88565C9FEE52EA7B9F9826D16D37E2C6F3AB32F91AD +E9E2B0D6BA7C05263197BE2EF961EE9FEA489302C145D54F03CE180EA91DB85B +7F4C5027D75306C291834E27F6097A4EF455A1A411C43857131B7F52D869B728 +0D6C7B46AA68E00704ABB95D7BA6E40ADD0B93B195F72F57CE080B4292A16AE4 +1EAF970508F398F1493D7F84FACFA581BE62E6ECB06FB47E9F39B35556FE8AEB +5D45C61F77F9974ABF17786A96BA4DFAE03ECEEE022D8A1EED85971329ECBB55 +5D829690560CF40C8E6CA34227ACA5D890CF24C25F4A4BB9B6A6B7E990AAD272 +57B7DD0391F8284DD0DE28546829BD2153151D66A6FB5AC458B63C15CB01EE68 +38F8D5D3484C2DBEC38E3FC3E2A510C0B4B2334A471491091B2406BF6F8E43DA +E1E689704CB9AAD604108FF6D05C075B54CE12564D1817A5D4CF6E79AFEB3C4E +C46E9D400895C6C0DA82F67B2D2940387081C334943F15F4667F9EFC4CD5F555 +FEC285697CD9CA5E14963AEEC7FF228434316AF56F9866A80424EF07FA4A2457 +F3B6DFDE70DD3B263D61B8C84F626B0E1E8D4F365B2DC1BAC58A082A8E15FCBF +5C96D0E232CD3F0185AB07E68D9F1A016B923CE91EE21C78CFBA9BCEA358CDEE +B46E5B9FB34EF2F69FA141D8C3EA0E92480C47C2A6072A6737FF0F2AB65B2412 +DD9F795FB0E35A9D3DC9888D2973D15D584959C2231860F151C3A7E35C7883DF +E338EEA241B15447F2243D17B688FAD8591B27C72845236F0435CE1F4470C88A +C15F331E3D2A44F041D787F841CC27244F31A4C88C7D41C750B4BDD8DD8F0F2B +FAF1F196B0FD86D9BA2CEE99E37D9CC1C4C160B22C6FEF4D795EEDD06F4F0D14 +DAE1D7F5CF0307492F0A41A8F91F6B11C48160F40D24A2CD9FF2AA08CC24CE6B +8DEA85B667204B8887B0D545EC89F02D21433CBC99E2DB036CA690F8D4958358 +5E9A92C52C75B390DC5D4AE6D45876A5A35844AD4EB03896F35FB7C9ED3CFF13 +D1EE84E5FE2C022E8468CEB011C0AFA57362EDBB3DFE1586CE6035404DF0D530 +D08797C9A4FCE0EA5F26654D45B10C6BF220125EF30C6F2AFE1718FD67BD04D7 +6949B2915D2044B4BB3FBEB963F216CB60DED61AED1A62490638908DC4D8FE89 +8031791840FFB2C5C20C09858663 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMSL10 +%!PS-AdobeFont-1.1: CMSL10 1.0 +%%CreationDate: 1991 Aug 20 16:40:20 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSL10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -9.46 def +/isFixedPitch false def +end readonly def +/FontName /CMSL10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-62 -250 1123 750}readonly def +/UniqueID 5000798 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 +9429B9D40924DC059325D9D4CC0344F3F997A99E6CC0676735EBCD685AAC9142 +08DAFEC78BB41AFC2F1C219910BDF41D6279284EF600B69776CA15BC8A34347C +30783C52AFA60FBE3E353E2AE354CF87B558776A22C776C7A0B5AB5CE1F941EF +C2D9CAC37294BF407A671F10E4743BF842143F4F7DFEE643BA3BBD8BB9E3F24A +BCCF7F0ADF8BA500620C81033EAE8C4EF2C1DEF13AC575F1B3BBB66F093D3B78 +5412B82B67FFA087AF57182B2230F9F2137180CA58A7D9B2C822FF04BE6CD01D +43B2CA7058C7B953F6D9B5D6E91ECBAA5CDE1159B0E59C83DBAD96D6C8C8BAB1 +374EF652D10C0F3EE7104472C98DD3572AAF2D45A70BF7061447E21EE3C3BF23 +DF39C2D1B35B42CD5297BEBE6BC94F7C9DC6E61EC67E4F677256FED9064BD3E4 +B51A71B1D27CA4E5AA9E1D8080E6DAB5310711EEF87C40859FA935B19524AE83 +63B163FA8397BDFF443227FEDF7DB27DC35D89FB1C5E435DA0619A5C88AFC73B +89A2DF5E767C5B536BC7167A840A0C32BD57A14DE69A7D0D819AC36FF32F908A +5070F32983BB007437E3500799DF5E0AD3710A4C0000F0098D5BE99F2EB9C1C2 +C444FD9552D0DCA098A94B3BF176F511CEE13DB7EFFAED7C47B5ADCF8D4700F5 +7A5FD1B49560969BF5C44F3749370663A04776F749DDD7B50674D93254426C4B +EFE264BEE7810EC93784B7C01A7F29EFD92547E13A2C7851A2E709FBD5B87850 +4A44F08F56A542DBE072D2FBC58D9E6468E1AB858DC35240E30D31C7AC13D6C5 +7D2BB634BEE96FA0E10F842B11A789F72A333DD6DDCB1BC23227EBC406E50B40 +30AF0C48E6359AB0C46898CDAF1118E46BFF8B00F54EACBC2AC262AB898C42B9 +2E080C10DE923C1E45EC0B7D763D80C9543651FADF6389C92EF4A113933BFB4C +E6389AECCE95D0D45DBAACC7BA5803A0DE87416F940F8F3BD1EF3B9C8A6727D9 +B5E8C867C3E03C91579A8CB58729B9B1B0C5257DF76B3AFF6ECBF96C615F921B +1D30CBCD71033C4BFFD8BFC2A9E626CA24F62902AFFDF922022A2F59EB8326C5 +C2E5C34DC1FFDB588254CDE857AF699004F26F694105CE4533D65C90FBB6C726 +A67CB28D1494A6B4C1F7A2C1E18187E21CE23855211295A200FB4544DA7DBDFC +7069FCB658A8B6BF016A7B25402EBC7FD5D5ACB4FFB029E0935283A8DD569E31 +F897A6CD94075335E4D7A456B8865A37206971472B3A0FFBF0B58AC6CE29AFE2 +C19B9628F1BE03D1DFA46E8B87AB533195931997D584CE8B80DBD4BD273E0AFE +4BAD797F028065B4F5B091EEEA6A8CE012B9D2378CB05FD521DD7F31E66F6E7C +564EDD55390F7A91FE973FB1992C6249D38694CED5774FC3A73F314AA28754F8 +D29A098472DD9DEE1A01EE839D45634B330A82BF3A23FA5D62D44471C69F3F08 +10A984475125BD1D66D25FFF3F23A28F34EBDBE4D7E9D8DAB6AAC9821EE8BD3E +F249BD0B1DF458D69640F4A7DFDC9D4CF3D277A9D2173357C60FDA0AAA18FA08 +A27B767EBA731E81CEE8290E81A4BB70B38EE6AAA72D82183EA6049D777C71CD +736AD721C58B6B3B621B64A833E4BCF0004721078834098BE74AA81613088D73 +CCC3F95ED1F4E4ACEC672E58EDD03362FAE451E2FB86265D92C51CFA00CD0E9F +47D507CE95B0F727FF03F6F135B074E3CC93526D1E2081BA80314662DB8D1FD8 +8C5682A0953E11EE77BB35794EB49A733CC8D276C2628F4590DF05FF02571820 +CDBC6A249A3D687B46A0C1E63A27EDF0A955C6391F27D4B6717CC8CCFBE94F88 +A9A771D803F3D42946639B94F1D474A6FBC4F858D4AB6AE1F20C3C88445A0246 +44730F8C5BC4D87A90C2F0E083CED05B7FB5B30ECDF5211905A717E38E43506B +BE252828D99B9350D099D6A26A23FFE83406FB18B7D78AA0AF99CA16A5FB12E1 +BC80391642832D374D6965E50621D418303FD0F833F7DE4050D577B0C96EE3C1 +5A990FB4F70494D1FEB699BFFB6C628C01DE7EE9BD2331B8F64C8ADC939106D3 +348621769CAF4D039E459F8F7CEBECB590694E5DBE75F0D156CCE899C94E55D9 +CB0CF9F6333269672DBA1A809053F3215B91F06986C0DDE941BEDFF69369091E +8E0922066052386DA36811B904AB9DF630828D7F65D1335D79636CFB06DD3A70 +AC088B84406B00DC788E2E7FA5F7682FF7A543F527D6BAF81A26D456DF2B5B4D +E2A75185B30BD85E59971F46BF27A44BF1ADCB6BE609BB9579D5581B792449DE +675C335CF1C3C972EC18E9FA358E34EEF495C70403410B4C1B9B1D33689D8449 +5C6B4C8C54CFE29972ECA55910705D9E5C438B23C69FE8696403B7D3C435C0D3 +E7361633204D3DC13C1BB86B0E3C5B44FEF02B5E4220734DE3853C519B3224EB +52999C702596F2EE11B1461624540345D0A19484729CD373CBA2262D6E2B856B +08F83BBAF6E4E8D8FCBAE69D600DC69E353AC4A0AA968E975A4869B3D3FD1BF4 +0C0FA31E59D3DF0D0B750757FA264739EE21C1E17B7784CD681848E94A73456F +7C530E144AAA2D227DC7EC8FBE9516E848E9E7436C8F2641CCA71D44D123E0C6 +064A0B8D5740F4610F9E04C9F838F54AA620017AF2DE291E8D9B0549CAA81847 +B32ADEBBCC91D107D9BDC7E476647C5C8716C1B74351C3D7B898386320743045 +515B4E027EEA7C5CDD92E5A5EF14D1DEA1923A6AF8D4EE2D568FCAD873287D48 +E7CC131981D027EC61635E864C9CC9EB41B364CFDA4CFCCC555810B49A6C1474 +DF7E0FA0A26E1CD9FA6B267C19698F4B320771D23DB65236F6283D9EF36FA1E4 +17C8B63105CD03DCFBD53934CB60BD54785B97F7196DDB33D1255E95792DA6D0 +774A39D60D12E24A25D87E0E5DE56AC8434B2ADBF921C14B4DBCF05120FBB1D2 +D7C27DB586F7416A9806AADDA2C3E8C35D90A85A3CB33BAB01286EACCAB8F5E7 +9AE82967BEC550CAEAC4EE4DDA0BB2849C88CD3E385F76EDD743E190077DF36C +35FC5EAF0FE0BEB51B9E96C084F9837904EA6C6505011085039CA3F8F320802B +7849333A6648A4A0501E8235B7FE22BEB7FD0E18169DDAE21302D41274FEA66F +34F76C871479EB56BDFE2C4C392CEABB9338DC7B646B2A9450E1C5F4695870DF +8DE484D364DECB01543FEA2DB4B3F920DDF473A8B0F1D74FAF5D7B727695D136 +ED2D164F50BE82FD5C2834DA827A78AD2296BBA19AF205F20D2FE7F1901E2FAE +4F88858047394DB859B89FC9439EF9D6472A636D29FD537D0C03321754BEB67F +B8BB1CE6A0C67819CE678C053279D3E3B7907034F7AA864486E08A1EC58BA760 +9D580805904BEECBCE53CFD3F5AC8DCF0BDECE30B55C4CC2E2AD194DF84E26A7 +2CD62EA8AEBEE8D3AC2BBA9C80ABA771162440CBD96026469E0CD15D239369CE +A6E71FD89CC58AB2D0B9442E5C4EB8FAD6DDA534C8007721730ACBAC8776EC91 +3D5176A6951234BD40C7BF5A9EB6D742D59905910BCC2DDAA02F6736882E3591 +C3EA87EDC929AE2C7715D8A8C883D1C103FF115D636CA8C511805985332D5A91 +3870FBC16CD5D0D3ACCB414FAD2C464BECB6D077B59AA46BAB6E42F9A0766613 +FAF20E2B223B9046B4C95BEA66EF1D37F4F30E9DCC88D2DA27240DCBAF587890 +B076985C86EE40F900C0243EDC0AE74384BF8E038659514DECC40148A71CDD1E +A0FB4C2281FA40F497FAC4BD5DDB3DA4F72AFAF7DD63F597EDC93829410CE362 +958775C70D83179565EAF3C2A8FE3D593C41A6A60C78231289689703A28DB625 +CD8BA6D34D0D21512279F308B09BAE7D09A6915B8D2470BD3C92FEFDA360ADD4 +998DE22C5A8EE6A9174928B337BC4154FE185EAEA6D073AC65B0A87D9CA9CF48 +D990E84DF5EE641B09DCE79221720A6F88962B52573B4B3ADD3AF29394396FE3 +0FE72A5C3EB21A3F57DCB05D870D47E62E36C1EE86B4873DF1576FF9267BE163 +FC8AFC3B17E4C540CF78C02A93C2831CEC7157DF1E52F32429DEAAF5B4FD63C2 +BE2DC6D9F04F586DA7F8BD877157DF58F2A96A67063CFE69EE11EBC80481DD59 +5D27B785BD2BDA34E761B7A186FD2575F5097FE4EA5A6EFD0B8217A37514B991 +017D080672647D13C0994D43268612D3B295234901EE176EFBEEF7BA971354BD +A727E2EDEB7DF8B47DF726CB664594072F15A61BC9AB3FFB9F7E37BAD66EE3E4 +FAFDCFB90C3ABC16068081D63D0225CDD260948D872B0AF83E56AFDF9280B3A7 +1BFB48783424CC9E46A3531F565B524FC6D1597E62B71423DD71C31DFC096435 +24D52B1768AFB2BE10F0D5A3C55F2F19B31BC71CB84AEF323560994DBC10AAC3 +75F08093A710C518DD62842AC81ED3569DE5738D9EDCE2E111F5A9D66752A736 +DFA4E01B07DA6B1C7CF239E5244103A6DB79F6C3AB925171BF050082A81307EE +E8BE84BDD97B1F4103D39E7E0F338634BDC86CF3885B9BCE0313816E96838484 +0767E5FBB55E86341FED70BA3185EFDB678F892DB727E0FF9D04AAF0B27C6432 +6F4C4E7192F8BB47917CA209E8809AC4AA83B7C287B39A7021B4E8320D25033F +7999611F9E6156ABE9DE212E400229C7A4B2FEDB7529B1FCC7033D3095BDAECA +686CC7A62409EF443D655741758479E0BB1EFDA0C1DF1F83129F063E4A906BD6 +79D4DCE5411C1C443062ED4B7E2916EFE5A0A0A761B99838367703BB0F70CAB3 +E304D2195CE2BC3092D108CA6D292528FED6BCB5053F4B28228EB785F79A5CB6 +295A630E9DCCCEB35FD287E9D598D0B668F28C2FCC98F4DB8DDA05852AF74181 +6CD518C40EEE78EAECB87A55CF8840FDEF36EABBEB8835255EF45EABEBD0B8CE +1EC4390462CF55DA7A405DAC2AAB45D41B404D1E98B3BF205C15AB1A59DF0144 +E7C1F93C2CA249511A66034F834FBC1A72336AD0F83A76B0B25794F8F93695DB +8D960AD71CA09FDF7D8BBFEA279F259418F10057B74C8CFC42E877D97EBB3387 +88ECAD938E6FF0EEAB87DDD4E365427E35DC352C30C88934F78007044385BF12 +75005729083A31BE7D56F5576AE3833029C5FD9ABA0DF583E575588BFA11E2C7 +5FB9B23AF8A6B3E789809475E9E4C1181ED9B5ED7966B976310DFF8531B822EF +367674E5F5C83AD775B119C75E8CE9A7E6185CD0C350FA0D17661C133083A9B1 +2F8897CECC9D8A4B896FE10CDBD6DA30F598951228D427D77653746B5F70ADD7 +2C0D9919E48AEC1053ECC0203AD886E090803D4347F19032927BEDCC10342A96 +7FBC644B99837182212405D3E87658062E564E350BA2DD7311719C6CA9F230A6 +9105283D1AD5D13434BCE3232DAA488E8B2D99C5E270D6D2CE21FA0E17DF63CC +32AA3147E7C1DB635066F4341613EF6BA1F1E88A68AE7F33070DE49C04F82DFB +F32472E8B1EEDF0186CCEE5E8A8B3D64B996FE6B28DAD70005CEEE312B6AD9E9 +FF3562E4664547A9279078593484FEFD756A8BE37DFEDAAAA2E6D1E47EFD6C83 +00FFCC6F463B914113CE3B4F0440DB923E47605C606C1CB80631B908B3D97BD2 +2DA5A13F6642BDFACD245FC12938D78C086DBECD0B576D99151FB277ABB709CA +4EAC92B612250401A3981003AEAF057C566E3344CDB0324B706FBD44FA33CC59 +6CF71D05B082EE0EB0EE0387EDF30E2080FCCEB351BBAC634BC2999FE94CD191 +3582F084EBEFFAA13DFD9544E6498D15B7A2F420875B2BF50AA293313BACD87B +1FF73E16F50ADB50232A8FD537E24EE956A8FCCFC2D533C47E95C49BA0C3C01D +2D6C57D455E83BC768EB984E9E5C7293867E2FF9145C09F4614449A74967CA72 +54BB6CE1663ECCBC6B362D1FA39061A53BFAB33259836CFEA813D893EEE72DE7 +534BD2795249F492A1B3B4659254BD4E8FF63502B0B4D0A3FD91A26127B02002 +6A0CB9311B6A9F002CCA6FF47C0EB57E646872DB4DE98EEB1A512DD3D7D61322 +53242F4D61BCFA210BC714AF89D3454EE1E71FA915B0E7685B9EBA6A255D994F +98A54E6E4A5A11E37B244A6EFD42377318C9306F66B4719EF2ACCFB1BE8AE2B9 +38BAEC8C66087647FF6EA21E57CAD6E5F07A7B841DF6A54B07838A42A643FA74 +6B7603876CE42097CB5F3ABA83E90F9E8CC660502F304042177587266600C8D8 +0C97C4E68F4B31EB586893D3BE8208472B69FAA8424164356261B027F894238E +C848F252C6C4ACAAD250138F7C4D8CF462B7FDDA0DD119134ACEADE8EF6C485D +281F8F1C8BE7BF730F95A97BF5CDB6D4FC46DD273417C3C4F8118152BBD25781 +02C467504345C4313932EF9367DD8A639E149307BDADE6EBC2DB7D8AB794E858 +12D0FC8B103E1AEAD9D01C8272481A45DE464864C6CE500E769A0D4B1589B755 +A478DBDB2CDF70D6A1BD9498FBD435F8133FBCE702D708268B101DA1407E7CED +6456C5E958091C19C562AB3429B46EB9293DFFBCFA57F333172042C518446238 +91192C5378B3370324192B2E6938D16D57FCE13642B31749A78938D4FD6CBD83 +7504286BACAC0B4688F425E5F6BA0534517FF93461F55550726394310B728D4F +E718F22DAB0C1A4C72318A167FEEB088668FE8E63DBCAC774A4485581B745A0A +A62A3AFDC241DA276AC37948368BAA8C6A73C0463016E0931F2A49550FE14FC0 +A9445CAE2BF8E8A0759515959E4E821989A96E260F8FA3BFA9707B177B4F6D1A +3087D9C45CA603E5EEA0FC89D251C8C1B20F93979685B05B6A8D284821D8EA58 +83FB334F6D54C57F8AC7F1CE52CC228354E655FD2BF64631328B940036ACEA18 +DC6A3671688859E666B4569787E6BE9A6998ED8DA360CCECA6FA556F4BFB88F3 +2E9A023EC3B837C03120BDA5F2B1FB6BAEDA67216FFEA6FCC9F7A2359122D361 +FDF89EE24CD742992D9FBA2CBE682FCC84BB77A2115A1096CC8B1BF6B1CA3173 +33BCCB14061FB1B19FB7A63D7075BCA393E300FCF51F5E4E61F91320BCB1B70F +4A3C8330D2677B373BBB7E5FE6D7C116C85C2F80F1C8FD830C33F2EF9827F2BC +95A23CE89D2605B4B488820FF3CA01FAEB701C08A66772E63E9D1AB24EC1BD6E +A95578A114D27C236480B4A3D081D0FDCA448064D1DEC6A69C1CB1587214C498 +1F8B25C9BC9BA5BFDD11104B9B10512E01E999230637943FF4EE2588EF31F711 +123BC5FE9D0F8B685699808459FA75E2B070504FB8F751920133696FF3DD2BAC +3C69294FC2F17C1ED7A09715E4CDF1A400640CB152F4DFAB82D46D9C73846505 +6503CA88C82B449FC8498E94F59E7FF96BEE75D7FA070087E9D2E5AFE9632ECA +F4B42D02FD09B4F5641A3CE6FFA057614BE30BA69003ADAD5DDF69E149213440 +C33178362BAA1B7D96B614518E5CFF521C4950C137A8177D0D5AB5CCB41CE908 +D6EDC2C703DF3AE17FD94533387E15D7D00D6F0781CA95AA345515E1E9C186EC +38719F222D77F58ECA30EC071895CBC372964B9A658F3B2A6871B8CB0E88E598 +A0A07B0A2D70C04DCDA0DEB9F5412535780C89724DE516AA92BC2D70D95351FF +319F58FEDFBF16738EBC3A181D572560B8F4F9E9C24031D30A80128564EB399F +A41FA31B6EC7C53301FDD0D071901CC84BDF227F4C49A0A8F40B468982F63155 +C186070C4D8633BF90338456FD89DEDC76F17386AAFFBA0EE1DF410BD81EFC21 +F8DA25B5B7099BE1FFB47CD2DFB9BE864B78C055ADE72F79EDDE2CD76D6BFB44 +9F60CD307D74FF3C0769226A2E101F0E07035F833DCFCE27E08203C1B536F195 +AE7E168DF0F985F738F65FB07C869A3F910E5E933B906B93D0F1231A616F5B93 +B32F1BC18447DAECB6D81EE786D682ADD6392601CFC399A3C9F3DAA2BBB31C25 +1CBEEE8413274C58D09AB617B6CEC570F0DE316EFD331685FB5F4BEF4174FB2C +70DD36A82A47BD7B9D37FE5ED95DE4B4E83859CFCA8E40ECE618343D85880613 +FD6F623A99C6BB0FBDBE03EEFE9FB5B1F0537B6E15B039970EEB35DDF8C0CABA +C1BDE150775B68BCCCD34A46A27B9E4727C6E48BFC6E52275F4EB63AC30B7910 +32BA9897FEED0C4E996DB26A00489128EC4766906BF826DEA02E8C72A6C70DEB +A95B497F58760D81BC80186DFE013061613CF676D96BB3E570887914D00245D7 +288D2AA609B6A635DACE6A003CD5C0F481A14483F131D100AFC2737FD5CE954E +969C8FC0B9E1FF885E9DFB35A5FB68E98641836F98A6582E1FC412B1BA20 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC +FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B +984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384 +46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41 +89DAB7CE91F2FC0CAF6DDAD09992D56F72299068192610EE3DE5DB7CF6366B4C +D74F414484DCCDBA449BFAADA39D0F27574E604E31CB513B18E3821A33076151 +C2BCB6E957C77A0AECA48C587ABB5E8C7624D56B32F80BBCFDC874AAD6EA5119 +C9B06886F08CC7DE5400E0F52B07483FD4BAF26C1556CA27B259F845681D61D0 +2D28B185C9F052844D9A5F91CF19210CBFB21B55CDC8C684448E9B5A1D249E15 +56632979760E2CC7075DF794E06EAC2C8E770828837AEBDFF1A5EAE67338CA7D +F0A477DA679EAC876B6E0F0300ED4D9097E654F197198FD861ECAD138AD5B484 +A28E3CFBEB4CA387F488BDA739EBD767BA225E1E0E7CF5D75C85B4DE5437481B +011B4B5C9590CB8309079CDE324CE4C2EBC40CD2A6B6F20AF0CA05B89586EB58 +4210AED367DCB3FC3A5845CC77126DF2DAEA475CCB4D94EA9CDFEBFAB137AB61 +D03EE9555BA9C6065EF9ADD376F6ED4971D546608D763570B9ABD3F692D505A6 +49543687AB7A8CD379693F71C6C859796B12E9C834E18DB0FC0063D502AEF1F6 +F5324EBC13AB3FEB378BBF9BA3A9CA9F2DC6C03E2D2102C5F245242F736450A3 +2BDC1E924E1C6F28DDFC3900CDEFC793B94EAFBAB1D8974A95B424C6F9D71EE6 +AB1414BEC47E836BEEAE29C8AA3A1BB09067CBABDE9701D65075D75A43BE26D2 +B0153E6EA2226BDCC9DD52FC8ACD2437BFFA60C48B558A3481CF70EB9B4810DD +9DDC306C60835972912D1C8B91E37BFBA6D073403B7112D28DAFF0C7EC8C5AEF +2222EBFA58B67472EBF5CE8986EE3681AB1CA8D16D9A2D6E64C3EA177A19D756 +655231063A387F1BC3EA15A1670867D9025A82421D1DAE6A674D9909398E1199 +49738C66FFDF170D54A748C8F10E22CFF8F0AB6B0C6EE870B589D3E3D9E548FE +405D01D18D8D883151034AB0973A3E52B2394C2DB707DFBFB26BB937B4F16FEE +5FD39DCBF8FF3B1A6258B0860829C1923ED50520680FC6AA3409F9BCC0E571A6 +9F9EE2C2838982303318BA603014762E1354039D59AA3A0D6B503AD545050663 +7BF58018253C2E99CBD1868FE34CD15C0F9ACC04AE1DCFA5B0ECFC5DF9D80D15 +4FE32A9AE6E9F87C93076E82523007C23212A8260C8BD482C7D23E30FEF4ACF5 +9A4B94EBF83A4F1B6DB41CDB54EC245E1EC5C4140CB4584F7B6056CE06000501 +FE9C79C1020C6A9EA3FA140CF0B55AFA82F6212024919EF66F56906D41A3B519 +0EFB17D31126A88C873DB1B7A25DC4F296C85F3047F9A9511CC4B32A3789D505 +9A3ECA5740856373192BD49BCA63C46B7DBC002AEBC4F2484BF5DBAC1F9BA370 +670049AB6F2E3AA634257257D168D8082D71B7665CB1890E68521CC7D2116F05 +21B3F4DB70C46070366D3EB6FC298C99DC41E03592BE2EC8AD4FEC813EDA5A18 +6EEB8E07EE584D6DF1F16EE21E6781D640040E2F3D71F9C58F4D0E9A3A34447D +2E408FF2D02FFEDD33B4ACD8ABFBA9B66373D00B05168B4CAE9A6D8C91B7BD7F +AE12BEC836733B44F11C516FE27E76190339CF63132727F9B89BC7D6599AA439 +3FEECD1BF36B7656F61A8E29ACB878D911F7A71E5A901BE5AC2F3690271321F5 +F449605B69B0468043A9EBE20CE4A863CCC0B8E283CFE6A3DFAA157D4A82327A +E2608D0CE94322C23359177DCD061CB606F0961355C418B76B8464FE1B67BA9A +76FBADDEFD86B2FC6787265104A6015D351CD7F90FF07960959715995DC1C933 +0F25B64AF8ADC5B11FC9647021D1E6DC9FF8E31D6CC6BCDB299A8F2D55DDF895 +1FB07798DA62848ECCA0A1D1B25D4A0A9BFB3AA76981EEE6C9195D9EAF6788D9 +0DC2DBC0F26CE50D9A610D168EE7BEEF19DDC6C9DE03E6F8C479148F0A383BD6 +546B6E91DB135DFDB5BDA10DDBA1800461CB74D777FE7ACF982157DB92A03236 +DC0ECB3E0E18BE59EE8C643D6B9B93E3E2CDA858A9AB0CC8D11B640B8AF4F85F +8676E8F2AE9BC9203AE0A7BBA69560FEE8C0BECEF7287B0FC459BE49114632C2 +48E7C5E7F6F0D8B05C4C73A1458773B98C53CA1DA273D4BA5D4B3EC7C0A9A268 +55A040631EACDD42E957B42C0F16397179DE1EDB4306501F994B95D8906BB961 +884AC16DB6DE37FABF47FEBAB1889B5969298A4CE1883ABA08D185782BF7E358 +245D7446F7B7D39D4700D388D7552C77CF611AC3F03F1ED5BC00D83EA9B4B873 +05795A8D6429FEF89F51095B7E7DBD1A786024013CA226272D4EC78EC535575E +14BBDF50E7EBFDC0BF0F8EED69D7C3D5F1D7BE8E1A769B3824EFD5098711B136 +1D09D7C22894430E0E3502BE930F9537738BACBE94F0803A55113297AE1EFAF0 +73287BC008475F9D80852C34564E3E8D8B13A3CC9CC9EAC19C70C907A3C16D07 +93310AB5CF482DCCFC02095BCF401A447EA5539DFB2C1B41A176791A7BAD7270 +C36A9A58102FAA407217960BDD5C8DDE58EFB1F270F511A93812E932CB812FDB +2A4EFB93F90C29A8A2195FD4D219108BD7B5B08B7FB3D1BF98A8588537E88CAC +5196388E84219061DF0238DD44F0457C0A56DF926A1F0E7A702BD7DC296F7A9C +3B5445C38E1ACA49DD56A305F4EA99F110BB19E1AB584413913A36B64400AF52 +F753FD399165717D843F67640CDEAAE00E02BBA23E92B36C6CDF9C31B2A9FE6B +1F44E26ED3890E41A380A3FF31F75F3829911955F95272427FCB7ED6F9E0B6DB +A82C21D2E38A5693652ECBD1E93E44A00E730A5C0F9480D46C012FCA9319225A +123D865C801DCF29A27AA4BB9997DD56D94B45EC376FAA0AFE593EE3621EFBE8 +1496D9E0444C70752C44876E1EAF456C7232FA1635F62414CE4C5898439723DB +9DC782CEAFA03FE41BC9EBB023A739A7E587E3B8CF64B8BA49677F54743A22D8 +F44AA72319C81EC45BE9924AFA4F435C79640D1BC4DAE1D43C228F8090594808 +6AF5ED36281008A49D1B259F8E34A26B7B98A6C1D6B33A529AB844CAE4A91C58 +4D2C8131A2A8636A494391783DFB5E8462772146EA33790B0332EF0AFA1875C0 +FF76F48FE3F1FC3A474B48B6816A1438672A670CA68DC45F9302656DF972607C +7A94001AD25ACF95A68480D893CE5F98559455CD63A26DD65BFAFE6998A41482 +F27BF0F09FAA54602E70B6C2D0C3AF11EAE02B6C9A855F63D0688504C71F146C +9470695028D98A268F5A49ACCE9767E47988A9360D6628434A9DB0406BD31BB3 +55476B7F5D42D0E70E242D1359AB078C8ED3A06AE6CBFB72F15547EA6E0139EE +6712C2A93549116867CE43A9DFC048900FE20878E36159E41FD6E5E75D1C426A +09ED02B1666CB47B6C124B003DD8AA5D1D51AF3DF6529A2F4540E7F4384A1114 +0B38D48DFA5F7FEE6FA00FB8AF2A4E4646C1D0D819152DA147B895E57E584474 +86B6921A5D22A16EE5F5B737B660DF7968BA456E5EBEF34270A19964B40429F4 +16083B93233C17E78A5976E8F673523DB86F253CCAEEDEB8FC70768881121540 +16705583769033CDDB1DE142C8D117BF2D817A24C84CDF3451937658A92B5F49 +6E3BD4C91C94C13AC8213AE3F20A6524C675C34FE2317E0F0DACB97080A04634 +721978D1C0C3B9F087FAEAB8DEF57FD1B0FACAC1BE30FD1F7652F491104D5BCA +6D79285DE55CFE3B27B939A0414EAC360953CA32FCE7BAEE4976AD39CC7AEBF5 +58F9850500497A31C70C16BCBBB56CC418A93EAB6060D5A80C65728FB2CECEBE +2FC02F4981AC1649733F2469BBA51DC2CD078955E3E14DA9CFAB5C3121564F3D +33293B93F015A7A23CA470539BB15931E427666BAB3B3EFDF1F7C91ED9027628 +A313E06A021DCB73A192691C810F6FE1DBB9306302632CACFCAB07F1FF911F62 +4DB2ECEADAA3FB343B07BE4BB0EBB3EE66615433BA4B4A4F8B6C77279C0125DE +9E9A6E78728D05A1B1DD2B84405AE9E0A8D9B48F98C1524AF5AF004FB323CAFA +572C80F2AE60A3C109623E05C62208DCD91EF74D6216C4BCD1C2C7ADC592B0C0 +44A372CC4094481C30AB534237CCECF417CA529987B4DF62FDF0B99D4D0268AF +EFCC1DEB65582D49B17EA94B936F78D2337D1FDB666AF779A3D799B387FC3CC0 +074F981DDD0F8DCFB7D8163B6B13C5A0D93240B7277E97E6E97693F4C8F07E23 +29F893C2E350611D25DFD1B6511AED3B34625BCD4ED830CD6BC5E1CBAACDA7BF +7B30419C9ECF6B19D9B9D38483DAFBD5726CF73AA8E1EE0E28F530115E7C87D6 +0DE4734946B992A1CB10411B9C8672EE7CD9654ADC9D471EAC5203357F521F76 +F5DF604AE47CACC8AB4C6BAD6D33164CD1435D2C3286FDC33C0B382CCD5A65A3 +7A6772A974E4BF1810A1E7EB625D43CCF3D79A2CDEABBBED3E03A39FACF792A1 +B3C606B9A9BE04F46872E1FF7B189EED094E5B772719E6C9F1B35ACF8C86ABB7 +14F8A3B6BC29EBADB1DC4628F52CC28B69F2E93849E19CFF6BF9083E7946F27D +813B46BCDB237FCF770C085F2667857ED77714DB10C12A2603B784BA9EDCC76F +6D78A6EF5755CD6124AB838BC30A617B5A70CC56B60AFC9835F953955DB4E9AF +36577B0F06133A24F1014E9EFAD6B3C61A6B5DFCB261168F0CC3672AE0BC7DC1 +52400D7DB600F6874711027A43504F50DB6640BAC057F66E5CED2930424E12FC +5E7C06AF7B6CB754DA19F228D8D7FCD42CE7736BA4031ED7CE66A9A7E2F63C4D +06E81545538914AC860C96EDF5575D97138995D710EB3C3455A45B37EF9ED205 +E62DC5B97CA06C85F68A2BB997220ACEDD7C5663CC5046BA35D9EFDF89321A3B +15DB5E266FC6B718F749BF053219024F142AB08ABB4B5CA4FC46F0BE33FEBD49 +1CAF4D4D88705BF8104364A3747C22C0F534E7FE185C6344F57860BA6F30F26D +54B8220576A16150AF93397D065010F51FCFCA9F25B299AF585117047B83A2B1 +8DA384798970A750EB9A0D48E234D1ED0CBD2881A6DE1F30E9F65B98C489632B +CFB54D7B4B6C66A3DD42BD361CAD9ECE48881D740BD04F895F746D3CF067EFE7 +6F32C41EC405C6755569AB3181E43277CEFCB1D1D0BF0A47AF276E1A5358D129 +3DA5EEB617EC5F047F8C702A7DC2C6F5833E1F474AEE2DCDBD997A81587E091C +D8F9E9F7B37FB0637D46DB8851CD09B9BE943E24C8F084A864DC105BD482390F +0C2AC99FC5E0B80C975CAE19E743C3313FE308266B9F716AD419DBED3AC32FFD +261D5B8B781946BB3F740217BA45D88F0A421CF0CF3F62EF0F9F8D7BA064EA3A +0B7707568B9E735F30E11C29370522F3233268211479A46F8155A90F4726927D +D3A3D83A21E090B8F6F7FF784D9C385E8D15DE80C3CC596027679C26C703A527 +A445C32971CBCF21E9F86CBBEE4F7C3F16CEA170DDBB8A9B6C14F4FCC47E7BA6 +A8E42A8FB6A528276A8CE9924177376AE430EB4239A0200EA3BEC776ACA8363F +6620FDA2B6F92108B349C8C044BD39C360134BD2A269E3449137442FA1817847 +CFABF3160717650B9AEA0437157651249D7E2F2AD4D02611C3E46270FBFE4A9E +9A36E4BA1B4D78CF662B74AB38127DED2814251720ABF916A18887FA66F26994 +2AF2EABEEAE826CFD438D37ED72CACCF978CD0CF59E18CCC0900C377CCE06BA8 +123F4959D8674334160A7CB516B608D6477955FD8E8EE0159342378EA68A6275 +81B6810503605F81227CFBC99B2EE5B3B6AFD0B12742A12DD7D0A31F1CABD722 +E24903FF815E01A681335D70D5B8ADFCA363411DC101DDF53E6EED56E6C5A3CB +A2B0914A2E47A9677A0A5D0B3109AF55A823EDAA6A568BC2826534ED563D549F +DD4E4F578F3E46B74064E9B710D324965EB68812BECF707ABDE547995B48B5DF +16FE03BCE8128529602FFDCA6055FAF3B604DCB4A0D3F7692237837BD8ADCC08 +722CCC3D26D648740838C5E05834089B3CFA5B0AAD446F416D8B5B0B448D17B4 +2C3ED886647BE375BB21C4235FFC39968B835A1104BFF01642F08C059988C2DF +D780994E379DE7CB7E8DD5923B5DBDFDAC249E10D1C570AA2B295C145DA331AC +8F5A9266044FD85250CB703C9F51D77A48BC34BBBFED37C8A2BF3BAEEAE61B00 +53AD07EA0D7C9D16F745BC9FEC8C28A048FEBBD89BC50D26846BF0C33496BDD0 +C9F4F453FB7F4B963964A342C9DF7649AE7B8DFC525E05FEE7BA8D8BFB7D3705 +B2290D51FD5E45CFABB28F6335FE47125A9D9938DD0894F5B7EA224CE04FFE56 +81CD3B6C1D11163E91B47C85185EC13DFAB9C8F90D487A3C5F90746FD58F4556 +0F6E23709307E75FABF476DF7D8E58447056F9D4F87DD43C64327DA7A74177B8 +4C59C7E25D8EF13EC769E5FACB4A227D8D0FBABBAB5B35B9693E314C6BD805B8 +E626322570EBDDF24104B5EAF96F29E7D3191DED0E245E2F36E3C811B3AD89C3 +4501F20FF8CD2F55B68B21EAE312A2484441DA8CF84745F96A229562FE8C3394 +094A13602280D1B14F2610267832251909C75D440742C38E00F9825DDEC2C31C +AF80EE42E75CA755AB7229073C694D2CF2536FDE08E19D02A32A80801DB87B75 +260CAB10F83796A963F624BB0BFC897727C43E4FFCB8A6CE5FCD9993EA2CB913 +DE5DE94DA9ACFBC9BC66BD4B642FAFF612D804BDFBAD470CAC2E6F29313E0FC1 +B30A319F3B5E57255B8C050863477E88317AE92889E87DA63D6650596BD55F09 +3C49EAF4035159037FA5CAB06C90DC70A415AADC0C0C596931FE391C13100105 +BBA0D04726A561B83E330D1F0FDBD53CE9FE901AE485117C0B1F1AB2BEBBA68F +66965929CD0A61540D76696718F1C146B51671F2F42B9947FC9D380CF9CF5BE6 +E6AAFDDF9AE42FE10E49C97EEDD35C24EC1C35E217FD0AB2D78EA8E3758B31B0 +562937747411FD02105A77AD598F7DAFC4F125BCD5B8B3AD92BB47CAA5424A2D +2DEEBFA8F09B5A1B303BA84392348ECDD98B52BAB49470C914CDD33079F094B5 +5D8D1F35FC5122E134D2476B1EAD5A35809D83A6DB7FE011069927943854BBF7 +85BA25D418A669B075530FB3D4212934C46BFC0C22AB20883AAD710EC22F4647 +0DF5AC66FF980CBB11F689FDCF37E8EFAE5CCBE81AD506419119BF80A544DBFB +24983149DD58E10A4696007DCD06B6B09B1B3A3B01C98CEDD9E19258BF0158D3 +AE4CDA157E23930D86D54E8C187D338229B90507911084F18F2E98B22762650A +372C591F1972078512BF9814269EED72570B98C7B8F59FCDCB3AB5D889F86A05 +5DF4A8CFE1711A3E5A880B546A6DE4B105A05299E111D4321BB7EC9CBFDFBB2C +C55003EEB86E0AE25C748BADD6CCD47E392FCCD186FD98D978AF29EDD2CD0046 +4EF977188604469AE4C4FE0548721422428EF59C52E2235037A788C0EFAAA709 +62EEFD6D43D7CC92A0EB4E6C5366D93E3017DA415D2B785E384963D99803EB54 +C5EF81CC98E97EDC17A5AD312A114296A0FAE02CA973D77EAA4AA4603035C2A1 +289DE3B9299A9236716616D94A96207A43EC2810E011F12F870E51B2F4246BB4 +1EADFAF7CAB75ADD29D488CAD4CF93F4D156BB34D931127A42B450ABB03F8FBF +1F167D4084078FC52801314CA4352A913556F5BDBA8ED21FC35D5AA0DEEA725A +C7CBD7B1F6A019DCB44E5D01DB9F3E3FD13B061BFBA386A0DE320F50297DDE62 +1ED7C609E6DFC0AF71269D0B196D6A324D6B0F06E62F5F619CAD5780C2784235 +71C405CFE8A3DC7D0DB2434DD52123A56041FEC0524EF3D2D4244FD977E965FB +B20E843FE6367B07E0F5C2D8EE33EF7D702EE36B0B4C6F67826F8B894632339F +B3AEC46A8E9F1C10E079BD6745576582500E77AEC87F6515C0B1E5180B66EBC9 +F496852754AF655DF9F8A23AF6DC34A7D91C04BB385D7EA69785E531E4768CC1 +B9480A3D14033509AA89C6F684CDB58E9640C1585BBA92E4791D1D6BC261EB8A +2F0AF7B7B049AC14362AFE6E0C84543A50ED0F6DBAB92705763B63305EE4013A +169BDD419CC36EB5C54AC805275B1D3F94466A4198B07EA86C40470A2C213E6C +82DDDF1C9A7CB3F9D2B5E044954B8ECA69D1CA9740F1D8D92E5520F33BD8FA09 +1B596E38500E80D5D7A7EA32A81D16CC83F31D3F0E8C6E707F6930994026A5B6 +DB3E55537D01E255F04B76083CAB6C82F5B0DDF21EEFF601FCEF44558DDAE2E5 +5E3ADEDF2BB1C8DD93FE250B1829369B5CCDAF908D35AD79D8E2013BAEC1597F +AE020CCDFD6634BA07600D49F526120CA7698DE44F932EFCEB41E3463230C9A8 +488933C97EAADFDEEDF37E3217AD882030E3373433FBBFBF1A7A332CB93D965C +5FFFA7F50AA595CB223384A7C65B0268D9A66B4D7B07FD8ADEC8A93B067015F9 +138E1D08341B44D305431D8A145F3ABB361D3272362F32CC451B4D6AF9D7C8AB +C7BE31CA6919B5ECF7599653E9F7F0169FC3B77E7033DDDCD295E71B747627E4 +F8C1374C162AD302D6266C44557841C203E55EE9134EC853245B0DBB9CC1E882 +4641B51C6D25523C1CEE3EDAFEAD9546DE64887E0FAAF5652FAB6760ECFA30B9 +83FF7B2E96F6271BEAA0A27AB16EF99AEF54E4D223EF7488602095FF153698B4 +096F6A32C400A413A1F79319EB1BED6B96B809C2ED91FDB797B398A4348BC725 +E840B39819F8BB14C513F40911BD0217FB927F46314C512E5AC58FD0FB050F47 +05667F9966B4D49A3B3BE6C595B123C3E135E214B4A8BC1D4FEB2A0914799D8F +899C07F644FE5237E7600FC2C9E56BBB4C7EBB57C8D35AB47E47D1ECBC9A5F7D +DB0C03097F557841A90B96980A7ADC64DAAB5C9C983F269A7D68B382C571F90B +10839A278D2B66144DD827F1483DEB9BED9D564C7417BBD74D38EC5A5F980FF7 +431ACAF8B1C25E97BD2E618563FEC54E6216D8C889375FD52843258B0A4FEAAD +8C9FC3BC264DD2A0C5DA603E292A0D2AE2015840DE198C621F41B82C06496CD1 +20D66D5EB12AFB2D1EAE11DB7BBFB4D8D01C52D0554A4BED7E7A2775CC5ED363 +BDF308DBBBD0991FA473D67CB7402FE577E6E0FD36EDD49BB0F2D00500688595 +A73113B80D54BADC72706C2D25F4A4E57B14990AA77611F50F2E82DD0B6FEAA5 +A111C01F11E894AE310AF5A29489EE5E2D525BD56D000A28D1D9F3A06A829B89 +7A63793C9B9F548417CFD37511E60B53750CC474080BD2A1D6FB047A8E69FF96 +42BB69D6F537C873EFF26BD2AE730B5806E1A4CA34AEE509318C7B74AE905F23 +BB6B6614BE23AFE70CBFAEA5FABC5C552D62CDBB6DFA567E37B47CA5D58CDF9C +11AF40E8683E1096AAAAF605BDF6DDCCCFB5ACCDE07A5ED05A3992D8B610A2FF +84BF85CBDC72C4CB1C13F5B99E5B5382A96428FCE80FBD77F47745F902C4937F +7F2372D562A8E0D21730727598310237FF8E0B5777F5468E651F39F9CC7AB803 +722494797C2690D07984496A8B01C344920CD0D69336AA9E22F66597AAB9DE36 +847E1408CEDB4EDEECEA5FE4DDE93599A73B7748D493BA5FACC4DEC1F3E041BC +3434C05F9CEBAD4216351AD2B91D70A284EC0A3DAA64A21CEC0AF197679DB85D +2C3E2850F92CBD675C60B5D7E98449234B7F055B88BB778AF8A6D087288EF249 +B218BC47F923F9678D1F59CF473C6BAE2517A7549AAEB683ACFAE239C6307DCF +2F5F4441E66587158F3BD7F8CBCEBC98FB86AB6425DB3853C2D20892774D8EBA +24E5C1BF43F1E7715AAB440060EB67358117DA2E50E94F236177E05138F31D09 +9123702425C088A2A9874766D9DE8F2A5BA85A50BE7F0E433586C17019344E7E +AA21C3005A05EA097C9610C8CDA288966C124180A9C02229AE30CA07CD3D49F8 +7FE20D96966FBD8EB2FFCFFBD7186C530A171A959F658D99441F2220CE047ED6 +15872106A563F7D9A9EA96F63EEDF1D3BB72A0E25BF2CE11070261FFB7FB4D7C +C75DF9E8B671D4C1A01D7F6E4B6F4BEE015FC5F9AC46DD5D1653115CB7820BD2 +DBF46CF8F4D1619BA29EC07988F5D368DC5B3EDE01B84AD865FFC678A8FE075D +BAF67811FE825D3A45A7F672A3A870EBED0A901DC42D5D645A2C90E12E9EA244 +23E73E6D5FFFBC20E661DF6E014C064FBFEAA09D471F74D8506998CE7E30FD88 +AE5B2C3DA67F179E86CC30DF06945186A64CA9DAE60C36F6643A8C567439AB85 +489BBE34676CAC134777145ED15CC7893E96EF9A2599712F7FECF13EAB5F6FAC +EE2CD519B3A2D70832C6A70A910C0BFACEE1685BF1D1F130D309A125B352DBFB +743870849A56054C8C80E9AC9A4B8EA3F53F052A81CE02EB79A269DF90629D32 +1D0AA2B37C0D0EAA79E58E77394E2D2D13C0D89ED9B80A6D6986ADA0F66970BD +B13DAC056B7C6CF640806733A0B5B3986FC6F7D5F256EDFF419EF0DFB8E96F87 +49F481EC14247B72DF51F08C8E7DB57F34C1E141E22BB7DC480DBFB4B496FE14 +D82A0E32F50668D5B523BEB8691568A434CA7F6FC74872FB41464B005FC97546 +C1D724862B4D377E35192C8A587821C108CAB632CDA4FFA7A6A432FD20776965 +494A2AAC1B2DE27CEACDC36DD8C24C50F94750DDF8F1513EE8B74F810A7F73E2 +17832B8C656A3002427FE13BB6652F8C560236522F827D6629DBF4A7DE91A7AB +222BCA357F108E23708E166421AE339EE8D39BED32FE7F119EB29BA3D387FCC6 +A9E8BB446B93F30A61551EAF41D2691AC64051AF9C62B5CA634F292971B2A52F +DCA6631A785B5B8FE4315565128E4355718B13EAD903BE849C49870222DE6CB6 +DBDC2ED4FCF3213B6AD2123DADA51C5370B292DFF210D48DFDD0F177EDF5F4DE +BC815FF64ECE48DAC060CE24CB4FF4DE718313F8F5D7471FF457062943E81E48 +DA5BDB0EA68654CDF60CD24909AB0C28D794D16C29D545E4776D9E67419DFE23 +FAB5E4DB6834EFE1AA2E911420A9C0A4A1091A205453B1AF2B92F66DE1DD5D27 +A659799F5645BF801B6D5ACEFEBD7AD422BF4A53A3B46CC532E87026BED785B4 +9EBEDF146F38220E3E74D6232DA55FEA2D8BEF37E836C57946AC681877B7E497 +183F6E545967A4911ED99586E6DFD24C043FFA3D779D472756E0C9A091BE37DA +3CD5FEEB37C9CDA111963503A348268917A42DD084BCADC8F23A7780ECF19797 +15BFDAF5FEAAC92DF90D41DD3AC5995616AF80751C2A3C0C8F318EDD2AE56EA1 +CCFC33C34AD2D4BD047DB89EC699ED3293E2B3F8B381F8152BDF7A0C41437D53 +458C177E7C5E62208E06A32AD8B08BE0FD9853E3BBF28DE6973A425F52102C0A +E5FAD08FC438D06A83BA49BBADC0AA1ABB9481122B53F8AD867622739277C3AF +3424751610E75ECBFA93EFDAAB0131DB927E7A88ADF95AF9136FFA2805DB6DC9 +63E0626D7F1E4498B86D2FBDFBAE1E815AA1B7CD45170BA89D3709729EAE82B6 +0CFAC4DD5D4C7DB25B65BDD7A2A977F476F74061D57F3BD805EE17F43E22C054 +D4A5796BA414D5F9A8513EA4988D2587D0CE2A322F1F3C36A8ED33F0D627CC74 +45EB3EE8AEA55F969882AD1446B300783C52BA25D1EF5E0627CCD8A95E0083C7 +50327AB875BBFE2E6775CAEF79067983B9C80B354FC4FB39F3561458A3590A0B +193824A36CA7FF408D5DC44583D603C44579DF05F583688F59DFF1B9F85B4822 +DFEC44AFD63E20F3DAB490ADBDA7C179ABD2E3E2EF5596B37E39448CC9B2E7CB +176B3B1D9012DFEE0D8419B2310AFCE83058F683834D3347A8D949C5A4ABE2E3 +3E6CE33BE935943E888ABA165FE509EFEA2ED3AA547A51B20DEE975CBE89F40C +7ED26D45BE8E0F0F194749B600AEB30EB7D1B149A595211984CE60CC61087D2D +AED8067995C926FB4A38D9CE9E6DED10EDF9751AC2D8EC7CFE15315ED97A11AD +00BFE386240B385E41859B0EF0D3BA38D2799380BCA3FDFD6DCD96A3E0C7BC05 +782CCD39FA6CE31660C91DA7468E8F09F6EDBD8BAA3DE69C6300E084E21A3334 +5D01889B87FAF43527419B2A8A62A6CEB60EE8EFC7D905346E6FD7DFD96BA184 +114CDEC8E8261472E5792A589ED4B93BBD7DACAD5CF6F9D5E418D9981A4075B4 +7B1B50D2A177BF089E183B81D17FF69F342A929925B80D475DE83614A03ADDD4 +B1FA1F1EF027CF48EA9004BA981C600B0F6EB3DA0D092E780C6ABFD7A5B2155C +66B0D68C60473C23BD1A259B64F0E092A0952F887B0026995721EE18F3A5CD80 +D63B8196CEDF3805FF412CD4CF155B266BC5D0127959842BA707C5359DA6AA2A +8433BFB3DC903935E394487969D06906905D715FD4A21F07C646E32E56DA847A +FE76852B14833131860DD3212217D7847CDE40D3B0825DA9BC1C8FC598124AE6 +A1AC381B90C5B770AC1BD39D7F567819BDA0E14EA1218E494E90008AAE44436D +ABCA08FBAAC3B57307817DCAE9EBE36E32266F5248A69E469B479716CDC5E104 +1121BA2CA11638F29BD6F25578A4F16515E90F5180A1DCC72FF3178B7F570979 +B40AE28F3FD18D24B630138DBE04D9944A9012D9410C8609E3D32AFCD0ABFB33 +1D01046E538DBD89E98250F661AE8C309BC6A9D249317CFB6E2FB10A6AB42ECD +F7D0651B65E1FE7B2E9FEF10B7A94E0C3DD136F85D96579A01B2483C0161F7CC +53C5D2FB83FE098F3996A8A6536B23A2368FCCD9475E3E8AC8AC01902DB65275 +3BBA04A7E8AF3DF2BC3B7BF942B65605F8E31A2F3C19A1E14BC05678DEC03E32 +E266993924E7A1169AAA80494BDBA286D29B843E5951DA16EDB5C357D7AB9564 +2A00004C9F7ACAFF4D97D169EEAA8C640972832004AF45322A1AF43BD769B323 +EF68D83CC874E4C95A08D026177190C7BCFD73E9F65781B8005D25095E1E0A7A +A5650B34FC85D676318E9F043A024EE98894E742EAA53020EFE38FAF320191D2 +23496DF2D9B374BB643CD27687DF2D32EEDEF0BC159C41FF6540C453220C4D5C +0CB6CC9484E95561027B09F01CB3D6E6DFD32C7479B56A8902B46D29ACABCFC4 +095720FB96758B7EB6024F0F6A14B0CA7B74E3D6E773A901523E39A3B9FDCF31 +D0F41F13B6B003FABD50EB692FFE27C2486B6E6E3BCE9A18A68BE7A05344457A +8CEAC34341863F1D3FEB728A695DE226794C56FDD09E8C0B6AF0B3E3AFBC5E2D +76D4B0D8B7D0C3923262F1416B21F086405F82CC41C8636701734506D17615D5 +FA9A829925B90841D02D24327CBF1D75329FE213BCD1026ABF8EA98C19CC36D7 +F9D429D15468CC08CCB2080CE82C3EAFD2C965EFCFBDB7B462EB20D6EB239706 +5BA53C0D08CEE85A5CE287A7AC794BE3AA47F1BA9BB3606499A7D00014B70383 +56F71EE693D805F99B6C75CB5F727139C88F2212A335BC7D3AB3169E86DEC401 +0249B7E332EF4A48FD0EF30B1BE6B00C8C11139BFC05C72523BC7BC6538668F4 +6F5E503466BADDB8856DAEF7762726969A3367BF089024DE96BE958B2059E305 +E244EC47A04F7B182B7BE3D4100C0E7BB3DCBC40B6FE3CB9693CA414CFBD74E2 +549A89B9CCCB473112F55E24A07EB37F432BABC8909B22B4563C14DB51062897 +F19BACF4776E50E9D99665392A63E9A341F89703F3FDA3B1BE2E865B3A4BECC5 +5825820E6E2A9585B7F331FBCF910482BFC95995D3266A7493A5F96123FF22FF +3AA4C30D942340BFC3E92224D94D51EA626974352F1F6D7AFC54BE3D5C50E18B +4D0B883219662B94DCF4FCE2C96A983F0D8193CACA59B579AE704270FBA7BB55 +DE96525733C4C1EA776767E6167191C7163133F8CF60784369DCB07E0D7244EA +578AAEB5A9F9C1B1A845AC88BB79ABD941931CA9FF92FFB88D2F5E3ADB218D75 +03E9B2488F7C5E0307382A921FE485B004809F0A7FA4AC17817E4E843C878FA7 +C3F081865569C84B071DD95716908B3E9A016FCEBFC50E0B28EB6B3E18958A26 +288E67A1384CCD0DB027EA2F72D1C5D6221D98A37DCCB851E51616BDC99CB8B8 +61E8411E7AAD6E33B1C51FF1E00EE0A27D1357BB269E7572AEE6E7722D6E5FB7 +16F6DDBFDCC849ACEEB3F83109677DBE07C461C33ACF5337E1393C85AF7F8135 +DEF4536AA7A8870137EC1D91D95B57A3F68D92E41D8FA8986C14A84A1C5F2561 +EC15F27E3A542DAFA80202B6418CDCECAA4932E9A1ED3218A790D6FFD9D89174 +587827577EC71E26F112BEE3C7415BF884E437D5A551E6C54FD021CA28938944 +6821C0D94DBE88CF2ADDBCEAE5D1AB35BEA4A0B26239943AAF1F4602F8BAD9F0 +0AB61FBF4F291D8D26E03AEFAE3A237EFCD9B5DEEE95989C0F5571D050B38162 +99A5860E2A6EF3DCB182F190DF7CA9817EC0AA3C9077C4ED0DEE384DC0AACC4B +0BEC2E7A6F5A62DEFBCE3360B5165DFAFBED364DFEE1961AEC127E016BC565B5 +2023EA6C5551E64C454D2DB7A3EF07D4CA4F3C9B9A08E6390339630D7719D383 +295FA416F5FDAC2C563F0ED92AB11D8972B902AE1DBC3D3D17DCC06EFF2077B0 +BA2226A5EF618391225E02580426CF35D00CC95A43B6745F5BA1AA6CE7C365D6 +E512B08DF7AE89062093BBC5BC3078FE7222706C207E48A91479DB88F26397AD +841350C686DE39D81B397AE005FFC24CBE4785B53BD56A2014AAA82B81286520 +9C03DCBC5ECE61419E4460D5EABA14CD060BCC56335C32B1B88E126DA0F450A5 +94EC03EFE8C6FD1A7C05CBE70E189CB320519016C15B7931CFBD1E0D8FB96911 +C2440DD2023CE6067A8965D7C7DB85CD7CEBEAEDE39FF5B3F13ECDDC3B00CE07 +89351DC194A9ECE26A3B67183DAE377409D685460B6BA691ECD6EEE168A0B5C3 +E06436B8026F9D6308AE11B37D487B060F5C6ECC4CC08C9E7A022BA06ADFDC90 +AFDFBBC29194E767AAEA640B4E5EFA2570BD9AEF8EF9D3A1DE990EE225C2FAF3 +5C38782EDD7E1998159ABFEB4B91453DA8382E86B622B08592E8BCFD020EC8CD +6952F0D422CEE5DE5F6B49D38D8D0FAF0A01327934FFD582BC29E9D9F4E45546 +DF4BE4399D54E050B79E01D34C74D72155A4E0D9775DDD3145B2B3A5FF0B0820 +7AD1F5E08FC7B7FA1B4F04EFD9F83EF42F2A584DE64B4700C59D8FF3725ACC36 +2F8996FC26ED7F0FFB8E7ECBC4B6D27DFFB3811FD6532F84091205FD4306C17E +49FDD7B4807252C5B2CC214869D837F885352EEF78ECA23E64D62A9BDCF1ABCB +10C428B8E7BC241875E5F58F090A8665CBC16126258A216524F7963EAB8C5BC6 +8A509E39E1F791DE2B11AF975BF1BD2288C3095B3F9B6827256394B9C9C872A9 +1060215069EAFD87E0B72D814B87E1BAF8DDA1C7C9A0C951F08508D66C046A7C +1D5168900362CB548633CE1B65134CF8BBE41638CB29B32E4DDB7FC8E27689BF +8A455D9F00F6 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 +0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 +B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D +AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 +97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 +FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 +20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 +0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD +F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 +3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 +A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 +5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A +45A24ADAEC63F61C9FD18376D3984449A1F998C318A8FE36D0D5020E18A49625 +0F3BB603BA1F3E66FF412F6A32433FF8BD2968D79CE4273AD0E0CDDA5153C2BF +F8A46A2244F9394A49D339F763F5A7411A3C29336B21CCB01723705AF589B078 +3763035411FE36AB5D744E81379106890688CB5BC41184548B7FEBA08DE7288E +E6570FEA20C51FACE8E8F824BB61A4A038AB817C47B87391611B77928B2565A9 +3B27A573C05D36ED01D8F27CB2C793370FA9B90021B5696280A55F2CB6117B64 +293EAE0EA5A243F56FD007773CA35DF71B3D28643C25210CCE25F37A5095D6E5 +9CAFD99DD1DB0D7EAD454C13464DF6FF5DD42339797AE5AE467084550FC00139 +6EE818C6365007B2FD6E26285B832CFE6EA7E99665A224C9813C036CED262639 +3FB39C1F05FF8F31D2DEF37BB9B883334F51EA1243332FE1E3FC91864C8AEA79 +16A726F924AFD84F2F4215FB795FC41DCFFC835C90B9E31D291E47AA4BB8C05C +620F69DF31E91A0FBA8E217CDBFAD7C4D480EBC1EB396029CDE615C227A367AD +72834BA95539D39A38EA0CA3CF7F1123F70792CF315BAAA38BBCB6DFA80B4493 +5025F33C3696DAD6A0ADF584C71BCB1D29E523EA4B81FFCE15F3204022BBBEA0 +A9483EE8EAC07D581162672A0D66199174821ABD097561A263C0C0F24066FBE6 +0951F31FBBF2675141F3FB4457CC2A94A40191EA0AB2A606CF540BBB8887B6DE +715EDB1041EBB9D05D0F4A4672F534397B9529EF8743BE88BBA10C81E0A46259 +2F2AA7B638E20C9C8A3A827977AB58ABF7525BE15DB66CE8E9B81457552073B5 +85DF3FA70B5231C447C5724E14730B90FA35ED1B5723036F1658CA8E19EF5A6D +D333B78E91E4D7032EFBFD40A5A2269B0DFD9F7C3438DB58F94B507EB93032F9 +99E5F15D9F5D8CB031BBBFBCA8A15A617ACEDDE70DD9C2D9EE21179FB17AD913 +B4BF577A9046994689D1BC6A6985FF5F5A67D699C2FD288FD9E5BCAD5453EEC5 +68287BD7B8872726C28CD288B4DED2246B843577173450B6E5760852CF2E1727 +01FDB0FFFBE12CA13ACF6434AEF4B59EFF3E0DB1E87D35075B1D55AC12633167 +5A83A39056C077EAE6F2F7D1DDED300BA43830B8034F0A6AEC562D3023270601 +6C594D0359DF6F230F7B80B54EBAE4880AF338956B813E3B8DB8BC778BE0F612 +7D84939C2878B43EAA45BF10E257F22C28C2C148FF48843D2B52626148E3CAA7 +4527B9F246C17BDE21C6E7EAB4906BB6D9E84906CD1832C4BD9E405AFFE33AA2 +AE086C25EA26BC23D68986639366B99C87359915EBB76D7162AA667ADE4954D0 +B1E18027FAC2468CB2FEA2568E23DBC201E9B6A1151FBF21129A088D89E3E728 +28B2785C1A8B2637F368A93EAB459F80506435BE23A85396969E2AC4E0D6E4B0 +8B12EACD150049EF8942C108B96843159D4408424394B33603F565D1622FCB77 +51E9A5D061DEDD18017CD2B1DF1394B1944B02AFDC25B8DF87C73771C201B366 +55D9E26FD091501DA8C009A25AF7D2CFC697EEA0D29A3207C42DA93909C75543 +B633A71924238E42ECCA63C26AE73F04DBFB8E6FE86E5AF48E21F06D3A7C12D5 +2E27E292C53DECEAC5849F11C910F3C0FFA8E9BE8D4301ACA5583FB62F635962 +731DF265D9CB3A0B299AB24E29AFE7F127F9E0BC12A106F21E04B71AC3FD5CC2 +7934E6FC44CAFF87E0BA39DD8BF8813AFBFAC1436525F3A2513FABC673975E1B +321EB89D4E5E0BE59513947310B00B6BF81D43ADF9B3D8EA1DFC8063DE284579 +8A46D36BD199718B233D5779F145CDC968E83A4F5C70167110751D6C0E766D6B +912FCE96BE10D62C897C4DFD4CDBD92968639B37F45E260BD71F5787099530EE +7FEAEC22C769CCC47D9CA1A4D207B9924303C3126803C3590509590FAFD72997 +502A21C25B9041E46CE23E0772A12A14CEA6F8962F0EFA0BAC414BF838150050 +B9A1B525D314DEF55D7905A2416501AB6F90BBF393DD044DC6242207726D4117 +8B4CF2E8B88921D0C15F06EDFD337A3500957CB4AE8876D4F4AEB990EE3DA7FF +67BCC9B285B02EBC9E61714C94A2DFCDB59FEFB7FB51B9033D339DB3BE303D12 +C1DFDE558A90DFCC9C35DD060BD24F0FBE1954060529D826B0B172DE5051DD43 +154649DC5466B09C9F37216AE2C983656E7DA6C5D8C352A86DE04C6DE087E4EF +3698A08B76E409CFC4B14D220161FA8C3B6289B397C9D39C527B25EFAB6F0E2A +A0C0173341AC38E4F67E1910A66A97D37C02A998EF8EDB9A84BD5DE317874AD4 +3778ABB1FEE00F15BF740E58F063A07E8BAC0E690D481713E0817402D1C05334 +B31436EB3AE068B1C784D1659AB8A318A474F0253B241C08E7A1C267DB616ED1 +F2F13E860575AC64DFB133B7A01DABDB91A6923F99CD769910E25E195CC4FE85 +5A952A1F13DC00EFBE5A614C96C8F4240C6751D1E7142BE79F309A92E43C2E9D +554A598A8985E914B8156D065DD56E04A06D392ECF7BC4CD8472EB8FD058CB07 +5550EC31FD5B2CE1272C5A6C94E319FC445783F66DBB9029E1B3FAAA7402E204 +AB3633EE95F982FA7F295794D2AD3E960C4F62C824D7D9CFA1623F5273D570AC +6A11201216C66FFCA03AF54133677FC8D42909BF200F2E6B786539CADA41B862 +A9F4CF0F76E6CD341CB1057A08ED7B3FF6CB10613431A143C1FDF5DDDF45F96D +E3B90BAEE6F1E28AF7A7721025F8D26664DC85797D2EC34F07AAEFDF2F3BFC14 +09E82034F38245155CC13FDA43C125CDD70A70238C40DA1BBA0971C5D2B4DD09 +15ACBA579C66F3D3A117C3C3746EF963B58F1F09488D879603C94C026FB5673A +F16B47C365311AC8DF2C72F60BA235F460CC95F898E8AFAB7088318689003F71 +9ECF94B4543328FEF00CAE907D360D1A211DE800D7C3AEFFFBCC80516A9C17DE +3F0522F49A24BFC178A3114CA1D4ED0214A8BBD5284FF130CF698609416F2DA6 +D9C98A57CBD37E5151614A771116A9D20AF84A0F1AD7A96641E588C4301CA2A2 +C876FE26EE65621CECCEDE90868FE15D2E7B066CB448F3B691497ACFDBF13AB0 +F0F565B5C22EBBA7DBF3BF0F6D3A3834FA0EFFA650F8201EBEDC5C47ABD8F345 +D7C666186BF98F989C886BEC3BAF08BD37411DB4ED7441D92B1DD155AB3A1F37 +D4A61BDC513F6C506C97D6541A89EDF7C68DFB5F93943F8402C3745C49B725D7 +E18BF1A4C10AE7CB1F9AD9A06F66F81FC6D2E9E896C51B6DCFA9549BDD3FD46A +096B6BB8C8C713C233FC2F0E608CA27285CD380FFA54A63ED01FA6E4A3ADABC0 +AB5969BA5D42B013B4BFF3911956F26FE02D019B3847EDD9F9C0934393F46110 +2F753FD8BECD49D3176794815B82E527DBF0309EC6490560937AD2DF28D82A2C +66F2F6A2B7088E34764C90B76239103C2E8CF563AF743B2544DDD39F6F6A5D9F +F342D318204910CE20A435667460931A7A8C1BED76A7126689CDFFD458B0B8FA +0CCE233EDD0AF004C488A77A365EA310BE478A7932AE0494757B0A011FBC165D +8218A5A8D87F2D2E3F6164D9E7D073B01277F2E26A3A9D33767952C1B0219664 +FF7293726AE07C1B92C80926108B1B7D5BA4F9740BFAD282292A9B8256E1C510 +56545EA574B2A77EAC45DBF60788B59115068136E15CCD6026D62ECAD858AF0A +814F431320E6245EB39A74F332F535760CF6306BE87111B5C44C11C938667DB5 +783193A32C1FC42FEBF7262BBFB376917574437ED4FD29A1912857146295D20B +796606C8B07F6BF3B39B45C6CF49229418ECE7F4E0355C648B68DD070D48B279 +CCDA0FE6085BC55FF27D02997085B04F471E8BDEF7862BB747E94E9ADCCCA4AC +6FC5322B9D9CEE6C0BA7C4B5E68316B69730E55224E45F1C7D8FBD1E065A065B +113CF57E567A3F4E519D13403DC8D7F89BC16E15BAF2AB6E4BC5AEF95CDB8C66 +5BDBD99500D16A24E33C9C3B4592271E54613DB8AA8A3F3D79D616E6122A4162 +E4E4C35B5AF48F5349DCD620736C670FAD2ABCCF10030E81C9A57E858F0DC669 +3B6F9DD553EEC8B7C00E021F1B812CC9359BAC282FC6789BF29A46A72DF9117B +ADF9E079C3E93DD754CC27A839DAFBBBFB6EA76D8A07B498FB292913E115780A +9F6F3ABE61E626BAADBEE15381CDEDE9E11556BB4BB31C51C1B1D39AF698063B +8466410F352D450B4201A834AEB6A1F1758194614E4059868B6926C0E724CFDB +78E38BFCC42DC0888BF1F4B3D8C0D3BEDF96A7CC488865358992191E02B04144 +A082858E6FA5554EBC0FEED0480F2A3C5795ED7AAEC93973E64755043A77FB3F +C985B9C2FC94BE21A05D561FE9348BD95E93E8CF0627833EB5EDF5BC4E6CC97F +1FC8269D8092DC590686BB80F53EE8E452C61B49A7BFF5C353E0111D6EAADD85 +89AB80627A1D744D6A6EE0B34288A4FC74178F6A947C0BB39E3081D4A2FF018C +E406381B86512BD9F3A44E4980382BA8AD7A08123021B19C1C1F2750DC4A3858 +9DAF269E154502C2AB86616A70298D2B5E5F7F21C32BCBA6C7CDD404D30527D2 +DAF3E3E4D8C969A9C9316730974BADCD6CF9CD8C2A2CFB426E484CFB9C9EAF03 +1CB1636C28EEB03FD24D6AC61892F4712C0640E4FC4A18E59AA5B69578881600 +CF320CB6575CC03031EA337ABEFA117035B7AC0E6032D272AFE5678C5604EF30 +79BBD24811C8FF2E952F978D8DB866F4F5FCE78D545845FE507E06C151408C62 +CA791C15D57FD2629558430220F64DB5D6F88C8B27A96FA3E5BCADE1E052F87C +AC5846DE37DA5B06FAC2359FE0F9A78E9B4528947C56E438304A2EE83A45ABF2 +EFA34A745E44EE7F57C72AFF58CA9BE25E197F96C25C744F8EF379FD83414DE2 +B2CE967635057A96CB95044370FD52AAF4599F846B78842B067024367F6A8342 +C27AEEFCDC181FF2FBAD7E2E1ADB502DF56DBC1BBB3E333F8D5691BD8D55434F +273ADD6CD134D36BAFFF565BC0820173EB4C3C06F2AE63F7F1147A6F1CBA65DF +9B1314F8FD39E7D41D2370FDBFB0CFC3E0D7F5DB6D85E712A22E1663151B68A1 +581CA7AE7A9C6A82758B848EEDAD40F0F665EF1B9CF45B136018C810925A6E0A +5FE7E0C6562F1893D2CA9700AEE804BBEDFE634A79ACB617E5E0825819AAE090 +E78AC15F7BC65C1B58906A599F1E21C5F2FC836CB57623892458C1BD0B94A489 +6FC504DC9BE0F92CAD20958FBAC4AAD3AB1A3061692C35AE1F11D338D20F64FC +DC9605AB930D9D1C2B6ACBE4F6BCD6E9C29C41082BE202C410381EAF514C21AB +222C4F8B7988C75889B0CFA5CC1B3E286ADADBDF1C75082252180653D5406C10 +CC4EED66605DA0639310AE6EFE96A5E8BBE3ADBD1D1A90F9670E3542BAF0E876 +B1F8224C2E79837E20D44C1B1F3CAFB8D3C785D2A65DD0E1C13BD66B030F9B22 +1ABEA1135F489E67BC8BD933AB828EFAD0C3C866CB0608FB863D798E5A5377B1 +19D7128265ED7C17BDF9DE5832548C5F58D9719143EDA3A257DB57FC2D9AC18B +5E0FFA10B72FA46FF43DE30B385C9AC4916DF31EAE9BFF4E7AFB50B13F96C6BF +D4988A16A1120CBF28C835A32C7B36D1A4833EA8981FA9CBD1EF9D4256652EFB +BAB52397D7B0CB363E4AE9BE4D5E5F385A9069F690B7EE4911BE2132F2BDB8C4 +7D524B1A89D04035174608A815052A1C485B7DC301D5F370756ECF6BD53D82F1 +AD04C010C0D4D215B43267B4ECFD7092E0FEC22155597709131C868C89B4099A +9E210FED9E0F290E9174E188A8DD5392D68C622CD9818CD4A707EAD47470225F +77A9D2DAA80E968004E71CD1E37EA04E728F3C8BA47AB1571BB59E9DB47FB24C +F8A2153BF455D65E96588D5C3A7141A210A889A3C3C1A9BB7FCE87B0AD1CF354 +5B8DCE8ADC780954AA892C670C9785C4D88E6053D88F43F9757B12C40E52929D +D891A73C685501BE6758078F08FBE573F93793643B8D7FF6440A22AD89E3E0CF +97C9618B9BA9DB2C960B64777607C5D1EE82FBBA1A5B3680712AECAB193C2026 +60DF32457C70822828D45F317095C968C45AC6F01D9897B03159E1975D4B757F +0C674B3961EF104603634E8D90E18BD15F15E3F029BBB39B6ECFA6FA7D10B3D9 +0396A14B5F1E731BAC583D8F994216C225B13459EF7E18D79284874A6566BE0B +CE887598D975CFA3770CC8EFB67BC4DC6783F1AC2E826EFEA33C341DDE1A00C8 +1F4C969C3FEDC8EE70BE61612BB447225B9F9174247D430B219E8B2632CE8BB4 +DC418F1B8F68D690E45BA4A3DAF40F8D2EE69AAB03774C2CDD5D215DE3D540BF +447291271A910B3B44512E199A2AE2481A4557424C7A4245A9244233B8C679B4 +AA1EA48DC839A6033CAF3950B249FD08C22CA9AC911ABB80D3FE986E93C352FC +D5B5903989AE3855298A063FB3349BCC1BD45AE8B04FC6195816EAFCFD373A5F +6C4C1F01FAEF637452704C7568F6BCDD96A135ACE024D9DB4401F30B93CBBC2D +0065639B11FD8DC3FAEB5ABE3DDFAE85F5B9A5AD8A6B86BFF06B51A435A432D1 +87EEAA434F1B92CC6A305995F0C4B26C1648A3B38A3C3CBF889C95A59056E998 +464404B49C3214C8246A2272F25ED65F31B58372FF2D192439D0A45B65717911 +528DF977F05FBE9955CF978F87B421377D011B26CC8D0D53F02E5F50D9632133 +EADCEB9F40D81C2F18F475E2480C21FA98F325FA3A89080FF395D3D8E17AB863 +E8A03178B82DEA5E6C773B6175E02D48BDBE014941F030E80E09FA824155E670 +EA63B8808E63EF7CF97F286C2DEB774C9E4963BE7D035C6F2BF7D5BF8523288C +50055B844591FB870836FD5FBC828866C9D4963F33F4D8CEDCA505CD93601F0D +1FAE1467ED835E3E4C4A4FB65BDBD8F12E1D5CAAD48409FFD2AF73D89D0357AC +58C065D91FCAABA6A1E9527A59CD0D149F88239AEFC82FE5DB4EF14D810E4B70 +3E7A379F110789495B8FCAFAD2667E970EFBA5AC7FBF695E2BBFE06CCD19BBB8 +BB9B1CEE55EDAB9CD7F03882B95514986094FCA796370D34D6E11E0CE5295630 +8983D25CEFA5B03B3C48CBD3859B0F8238DC696D2AA61E61CF87887C0297686C +177A635A70517FDFE02ECCF7D89B4A3828CB70A7567FF4DB62814C864FC65F64 +E6C93109382C7E5601E67360E94B9F17785320721D6462C69D898922C3B28285 +1BCB95134E4693529BD1D5E071DABCD4BEF282D9D28F13059AFD3EE2700140EE +3DB6E11989E80F3FFEE40071257D0EA79E98133E0C27500BA4147C3B6098FC1A +C549B8B11CA5A4809A19460EFD62F3C662D1B6A179BB15760AAB2976E38FFD21 +B0040C1ED1E193C26D826905A3AADA8FB9829E4EF506B26006B582B6B6DB9C46 +6C4347D766DA3B2A57E2D5A9BCE41FED66E2F46C9A51D984601323CD498B2995 +5E8FD462ABEBA365BE3C8D12761079D0514FF753BAE8381B9D0135770F6E7FD9 +8A37C040FB6AC73203B0AF65D7BA8D3E2BC17982DAF6D9C6A8CA54457DEBE309 +46861B355E09C3F3522C1311C410B74A950C561644727D5C6BDD46CC9101D5C6 +E3688887D3A48E818D69265EDCA330D84AB961AA1EEB8DC98FDBC20A85CD225D +28C0DFFA5A9A12EDED2E3F27DBD540B33E29464BCEE21754A363D094FEFC2C3A +15E5D7A5F9455CDA0A92AD4209D364373F0A70FD914276990327459B30B711D2 +A6C178F71D5EF68C68253FD063823D9C4ADF1437B9C607B43AAC6FC8553BFE7E +B6DCBB6F475434C0592EA95BD0A1F69FCC147164745458D7102D90DE4A647826 +E09982D59FA2E1B23FD1338C5BB48A44AB3F364EE3A74CE032783C19CFCE4835 +02AFD15137BA2D1AD05B5CB536CC826BE09F45D8368F41282E88B746F812DC31 +6D6380BC473F0D71505BD984EE04AD85595F3760497CD44E9E7BCE6469A1B7CA +0590C4B1ED5B8AD47444DE9844492151304099AB42366A919CCAF315398036DE +D410B85C1789AA150EFB4BFFEE24802F29721F4C423F128CB13A52BF897D728E +9AE95E847EC1392E3DA525045B6E9155384CB5180F0B49CA07FEB167C3FE1079 +9015F9107318529E4E0EE78B528ADFECC44C4E8DBA62DFABC9E72A6694A23C0C +DF50EA6C570B4B0D2DE608377B7E8F82317789DF2476D1D4783C39FF5EB4AC6D +C40B9DB968D1B925BE24ADB334862EDCD62A10952D28E3C5C1FDDB0175420FF7 +40C2D91DC58E1CF0A43A47BA1BA9C12CE6B02AC6FB8FD5AD738A289A1362E65C +01035158DF2C3D5BFDC6473BF1E4677EA40A23A16D18B6D7022D14111F8E2406 +C5229A9F891BE263F0A915583E6377A0B023D6F8D35E788CC1144EA3DBF68D81 +6836E7BFD1FFD0DD589B95E97336823B5EFC1AFF6FF659B9A720772EFA717CB9 +4EE8D85228474F3D5CDF0CFDEF99874E9D62E5F5FCC1597A91858FFBD732E5A0 +5FF3E125B02B1EDBC9E322AE48E753E8D30ED5CEA418C182A6960A246681B8B5 +39EADF34C7FEE4EB3CAFE157BC98337D8E18BD5B88A4CCCE013C00B8F8897226 +E6ACD0A31BAE70DC7E975244198711A5B211B9DA710838FF5D87C3980F833F52 +871DF8D7EA74D0719F2E329B277BCA003350A45ED58111838703D3E322DE1C2B +B27CBD2A1834BDEECCF5E243226D5F0A44521670F6F6BB9A2277546BBE872B0F +0A6D3CC3CCD86D142CE0A2BADDC12A02F30510A41143D5020B58DE90AE7919AD +BC7332B5D4CB7DDBAB72DC4623CE70437875405E36A3DC5154666C89579828C3 +3FF168A630EC5DD66F32F9FCF78E1BCFA89C5645C941D62C91AE6F8828BB0573 +EC0A6C8E7B3303A87BCB72D02AE151FAA8DE5C699372C3DEC66C44DCB1AA975B +CC2A1CC433A8DDD08F95A2202767565B3E4CA1ADDD516F37B5FED92C8D20D065 +706DE9BCBC0E47258C9EF1986ADA06273DE29C3BA7145AB7412FED41CE8DC33A +90C7692866EBD606E96194A41649A3B9B30CA8BC82576430720870634B8B265B +AC7403FD4C61960D73CBEB01DBA0DED6792873C49064D14E6B31BBAEA3C3975E +C44AB4926C973CADCFECD266BB699100FDCF1F3C1CFDB7F6AD839F325476BA84 +ECDA187D4F2257C750686E602A17094ECB47C54DB4E468770BC205CBC41D57A8 +84794FD9200C429A437FD53EC9CE767BB01D32613BAA13A593CEE44FFC9C45DE +DCD1CBD3BC1C7B8F777522C9A6FE7D06DDBD56E71BC8CFF220C6305EE202ABC3 +CC612B277BC158A38958B2BF68F1E25BDEED65D1D95FD0608A32425C89009AB0 +B7893E908FFBE38E4E0A20C1357ADB58CB261BF456FCFEA45A4F919523629EF4 +B41104655060BBF44661F5557989BF37970EF3097A5AB9F2F6C116DA721634BB +C0E37D0CCC51F96FA4E6C4611021120E4960B7DAC93E4DE5670ACC927B2C06F8 +36173A93F04A9FD99B6B4CCEDCE3B6AD9D268CDE761E3DA251DCE455FCA3135B +B270517ACEFE44312EB0D9F113E26D67920E45FD591415B449F0A9FF02343A63 +6609C990B444FEB8C42A0B0DE7F954291C1ADEAF91FAC6BFA3D2D7ED9FAA3AC2 +B92AF4A46EF0B9D6C9167798CA1B027C0CE191F77A2C82096BEA50E281EB3797 +A3A7B5B10E9F48732F1DCB23B03F533CE8B6F1A3A04A02D7E0C133D840D315EE +39B51251B550A1D88D055088382E3BB730E25FCAC0EA0EF9AF7B4B01FC63527C +4A73B5945CF90363A9E00762CC48CDBBC8997DB95A0BD429C15755EB48616FB4 +6CABEF95AD3F3BB50FCF754C3452E394B6DA0C14D17FE0A0707068F1EE989E31 +D8981CE702E17024BB0DAA233796578A53CFE08A570FA907CF23E3DEB70B0714 +BB79331411CBCFD02794BE7AFC1A84583F13B3BE1F393B112DCFFC5B29A745C0 +FA980F18B0627A5948F2B6EB016406BF0B2337858B9029637F07280A811AC9CC +0B9B08C3C5D0FDDCDE6E7043589DB481B2EC2ADD9A95A3B1DE93BB13EC380317 +D8D2FD555A94951AE1689A4A5C52875399DCEBAA001D9D3369B8ADA80AAC8718 +369914EE26A28FC7530BE6067763E42F3A6DA059CE1BE3B07ECCF362D5925DC0 +65CC11EA72C749C680F3434D82CBEBF0E3C70196267FA08AEFF88F46FF8A3C2D +1B4C45504BECFDD0EC7EB39B3374B23D56C59D121ACA8085CF860DA9DD89949F +1FF41E76F22C052918D2D40E812CF441C06C7744C7FB6F8AA779C2D4068B372C +0B4B2750A472309E5CD745CF25233B4D8309D7015CBD82407C860F0E60A7B753 +B3D828CA69FA610491A16AC0CAAEEDE48DB1510D3381A93B0E04048425672BEF +B65E45CA9D44454373BE2ED6735423E3A414EC4E516EABAF634C9E9810774767 +1151005155B475418E5B027412D853E2B520979204ACA7F628995590E72D6BB1 +775E3DB5A2501DAB999D0837961FCFC940BB989477DAAF7FEF4655E59B3D16E0 +209981FDF1E33E899FCD7FB2F8F8BDC4CAC083907328BAF25894716525BC6648 +C11AB5C2056FD7CE9A563EC5F619D01A4395CB63B798431E74002682AAED2A25 +9A06CC30D5C2B8A6795BC216DFA9DA95296EA21FD28C1797AED59CAB43C39988 +DDE1BFF9483C7068CD5895ED7B181162759662E81316CC0958128519FD120A5F +D62429A4E4313738ED4EAFFBE8E8286CFA1C782FC7141742EEB3AE4603A23944 +83B5C72112939D1CFBAA645CE05A9EACEE5B3E88C91DFF352829C2F330AD7087 +A70A35D1A26F8D55549097548E23A511A32886F9BCCEC4C823F07FB723E2D29F +FAE3F5B83884B6F0BB9440DFD204D4A69FECED05825F98AE018AE9EDEE6E53A9 +ADAE8891B4893D45F47B2299651C222E43796E3DB850162947F862D6D7C45677 +1E231120301FC99681571746E007E53459B85C68095B840034833BFDD5050091 +FB2432AC4539703DC65B3304770DBA78E6CDBB376826456EEDB2B03752EF9C6D +F9688F76855F5848FD0991E55C124FE04A8D303D2C708E01396627FD8480EC47 +8047DD9A008D18DE9D1847FBEAC621C79C8D30F87E1D7FAC5DE9DC4315530CFD +995952599EEB9479E5E14F26634655EB94E245E1E6A2AAC2001870E7E3387086 +6400F430066C7165563A6CEC86CE1AD83F2137F44E32D99F337F04525F88AF61 +8897F6E61674D282E8ED69700F127EF825304EAF4127A1D91D3D7A8CCF3B4B26 +05E498A79F2133E4C3C2507F0C013F3A932E306518F2DEA6D1094C77144087BC +6151ECD430DE0E8E4CEE2947D1A6C4C5A7CB66362EEC3D1112F51144F27EAE83 +4F171FC917A1D300596CBB0ED4DF1C5A7C76250A6BA0FE7A999609A280E47C96 +75F2289B4B9E05A2A5DE3AB20D0129B74F10B1A4F0429D172A74471FF9740802 +535470291A441AF5A4E874EEFB203CB570C0FA1978302FCCD249ABB2699F56D6 +B85ACA9E1D6304643B809CB8B86AE6CF9EB15503AF4DC518C05D24C7FCD89EE5 +E17D7B185CBD36C99DF26339D41AF089EB62294B8D45EF629F7A2B74305954BA +5EB8B2F86AB325CBABC83B6AB7AD1289F8B86112A3B502172A23590267AD3DA9 +E036EFE3E2C10E7150DB58001B5D8A921A72F5C33522319E96AA05393470D815 +D861FE1B4034832FAF47069AF4B818A9F16121EDA1D24BF7463343246450B070 +5B899EAB2B1EDC1A133E2ED444EF6A71F961658A5C46161BF9DD3ECE80426874 +DEE96AE9B32B5AD8B7F5CA142AA894C250035D7276332151D20412049AFA6DC2 +9F4450F40601E64CF29248A2CE88FEC9D6FE607540CF45DF6E9EDBC4E5022007 +3A2184F0050FC610A2CF85BED1FB7C1E48D436D84F666D96EA1090FE37D1E506 +DDFB7CE42CAE40C2443ABD6B450A11DDBDAE65B31D14B32C40B9D90477A766FE +F4EF89C1E985FCB73DE5A7D3F6C152D8D2A0E955C771FBBD28A9A8C3CAB40294 +3693AA00FEE07D4857E2F09FB02AB229D1982FD2DA50E625E532C496282D3BC9 +587C9CAED53936D6FF2772899BB79A4AC0F3692E256D9E3CB222AF826776B0DF +13B98663CBB0993063AC96E3618A918A3F3145DFDCBF3F1F9E1FD75E6EA274F8 +D4158BEB332DA44D86F2AFBE3DC04959C4280438B8B9486BBBBD42C2B0F17EA0 +E188A8837B58D70B5EFE6B559A53E58F100A97413F5F17D8BC7910BBC341C538 +AD95A5BE0E021D1E69018ED771EC97B8A1F9F9933E15D8A788EFC576E16E5217 +575ACD20DAA7FF073C33592CF1E874D72CC3DA2DE894B165B1D6355B46C6250C +2B0134840D019F0C81C4826C73952CF0B1199E0E7D870592BF7432448E3D8692 +48F687FD4217787A3803BEDFF9D89540820D8697FD0E5EEF26E2E81C013BB742 +4940FFE3CFD2668AEA6C584621C413AE37D6A6704D8BE8EB2228155B48E74CD9 +F3719E66EE1CC5ADD8FAEDAF2D9F4AFBB5B5A92A609F3103E8169710291B911A +A05EB4F4BE723C5CE8BA4B6F38E94044CE7FA15C3EE183AA8FFB71208C22F8C5 +73C8A443C44317EBF7C9242D063FF3C9031A33748261DC5D14D84E8D01087EB0 +43FE975B8DAAFCFA4B7CF1274085B9B42F6CEEC85D86EFBF2721F6661E4B1CF6 +C7BBFD874CD84B4592CB5AE4D26C5179D5667E42CC5ADB857F21D62DFB669CFE +7C2209C449732236B760F9B3B1635FCF47D03EF76628E7A6851FD8F4745D6A98 +B57DB5844C5CF4CDB14539451EE8B3F2B9AB328EE2F0B848DB1FA9245EF3845F +65137378C9B794AC8DD3389CC601F7E5BE78B97DF765C403B556E2F21C367C41 +3A9F97112AA5A5C711AFA2DAD65B9B86BA5F4AFB1AEC9F1B77B0D9EC1CBDBCFA +883FE975993A8AD7994FEEF7D5C48804D10FA2340647C3D2425C9328C325E394 +D88AA4C8174FF8CFFF7B5AAC2052F5D6C484235FE3E2D82F3655A92EEF3E2393 +C49F7966F34126A12E0CD0FB8A525603F3239B4992F0F9D307CAE5FC33EF467A +5350163F0EBDAA3E519679B57057117A485F1B41FE5BDB83E5ACED0B5CB29F48 +BDA164C1DAF1EBAEE24309A241473DEA179A6E80D6BB18536593ACE3DBAC9FD3 +11B1FDC76C06FDD9C03BAD521A961469F5DE3B7F42DEE865356494D718091E4B +661CB74A2C3E35227A1657B37BD17A373221886A1AD25E6CC1AA210C8B839196 +AA6FED63375D72F268F9D92A0C0693C43E54C1260CC1D27DAAAC92829650921F +5387C380196D3E58979202A651ECDFEB36415C61B60AF74608219A2B11E25126 +6FAEFA27CC356A1A753A8A158287CC627F5DDBD349F4F9A1DEB07B919C63D012 +CA290783510D7ACC9DEAB8B5A7FAFEF5A53CBBCA0295FFB7CA66CDF3FCD977A2 +EE24D15AB3697D6BC040D0A779454A490031953B85AC398D27CC26A261D68055 +1AE8B556B3C40CE1817523E99B0BB0C390AC569D6EC02DC9D3926E7A51673FD0 +AB53BE45B34E87149FC99107CC7CB58CDBE7E2BB4BCDA689464C0758E512D38D +C66D57C6BD02BC83321818324FCDACB5BA1701DF424F45E0A1CFC6C951E73E71 +390CB2F6E15DD83E0C8B207A9CB0429B5667EE2CB45AFE9704E960E9569BACDD +4B05AF6F10B907A76C504EDEABDBB40436E4701725301854767DDFC9EBCBB12D +579AEED0D20E003B3897BE36BCE1C79C229E980E598063DBFD4CC219B2A86993 +460D1211CD6EF37BDFC59486C6D29A9D332517E62809D666958A0C9A435AB84D +8203D0C79071BD7E30AEEAD8CC5661FFFF666A8DD552A5D805B82797BF0F5F05 +C93E3F96EDAB59971A5F5C54976D2D3D701A8F9AE81C9356C0B877563B8C68DE +62302E62F7E2F49508E5597661169DD53F1285DF058352A32211D96708416A85 +C86BD388F85B81393DC3F1437D11DAB4B1D2B7C262E53DA36F6F13DDE097FD5D +E76BDCEBCF035FEBAA30BE68F94B325620EE9FAF6E14776DE628C3F76DD04549 +9235BD8D231914EAA96818A390DCA0175707C097EBA4C2F6C40D00B2D4BE2CFD +034DC2B046DA73797DC946E0ED122E78C892F4ADAEB185FA67DD54AB0D726B48 +79FD1B32A1C28367265E31B738C49C12B801E4204FF390125037FA111F64D2D2 +6B5B005E1534C9886FAF82A4653665AFD71D1351871B65E16C105127AE6FCF5C +1E43678AA44570936B3E77B27A11EACD5559849948D279B76DEF6D33E1910993 +B4DD2E40B18A5F27F79CF0DF6BD0206D179BBB1DBFF6D0ABC888D99B3E9A0D97 +160745D94ED749EA86E0DC89A9EDB63CF235D9F8B6BEC7E1AECB20C1B9EEFAD7 +70E210339DFC7D595F9E70D030F2A1A39A4827C42D97A8BCE1BD0F63EEEE9A49 +B172000195C937958D4CF837F1D85D86F6B28798C1EF5CC3C79C4611AFE79BE3 +F983BF637FCBF40B4C40815EE7E519767934BB4DAB9A0B0D9DF91319B2FC8267 +E005981D5B8A0E1BF252FDE3ABF3ED24232248905869E5A81BD80021D9033FA3 +F6EE4D32469A51356BED9429B280E5B3D87CE8A27194D1EC0000AF45E22BA088 +E504209D3097238BA21AD8EBBF7648304A924139AF0037914DA1C1BCA53B488A +8C96381FE0878B320C9A97E8F1AB66FED18BE0D974B014E1FC09C4B96151F614 +C6D3A37044BEA1E3111A34FD7C3614FEF2E80E2306D6144D2DA9E4D58ED4406C +BB50BB35E201D5760A67F6B13148028E333682F0101276E6686BEB09CC56D231 +427E9D75605B8FBC4121126AB4F196D22C7E17589FA0E85BB89362E096C5D563 +7927B84129CB96B1F0D132ED2A1D8D04733D079FDC78811B0FA5BB768AA3B899 +74FADAF242C76F172BF05EBC0F72389D4CD4B51F7CC9C8C134BE95976037B0D9 +87B963A2CFE99CADF8ECF9258AC5526A13CD315A413101A418429810E6EF51A1 +CD6349DF32D8C0FBB11AB677BA9F3DB1C83869A4ADC714293CBCD27183E06648 +CF5FDB2BE9A09250B6031FEB2BE88CFAAEFC340EEBB4025A7D41E69385A937FA +8AF05601B1E94C950FCF843DE094FDA8ED480C6DD693A661965F76F7BBA3D13D +BA0983CC7EAA03210CA2047400FB6F90DA2C32A4C60A54D84FEA5E5A4D489180 +58AE7E8C9E5BB330574700CCC43A7A02920874D560CDC1FF5ED7C9D9D8B32905 +8EBE1D5CD48AB169D188B53633FA7D6883100B0D3214720C5EEAFD3ABD3D11EB +B7CF506372F042039BA0DF7E3886B23F1F46FE99E7BA9CC10E6EFFE7B73374B0 +C1C92D8F0CC383C12BBEF8DEF01DA770AE1EAAC4EDB60A7C5BCC6DEC81A64412 +3FBA9A52E24F2AF2CF218271A1093B676BFB63323F0FB46898A3C65BC0246704 +211F6F006FB349377613E08588AA4DC847B5A546178CE63642044890A857D86A +CD4D66A6140A407339021F012ECCB21CB8F585574DA9A748F6F0960B307A6A41 +6254F54A3E0369780547DB524295C078536DA6F0F4771CE9EEEB770F0C49FFF6 +7EE6AE8998457C4AA331C73BE96257FBC1868FF987F60840BC2C30D046B43C4B +4E8C18DDE87F99F69A6B1A6EBDD9A10868285C8DF369FC5421D154E31F5DFF7B +C771418C55EB2888BE96E80FFD2B212B3D0B74A2D5538D9C1D2783C5E5756249 +2E38309EDFCC6AB901506A165949E660C7081984BD5C1587B48E0B051A232319 +98CD460903634207C0599D62255C27E01D3CF2EA4F566442EB466E958E2C0D6C +3EACDE49F5FE802865F87BC29CAD97240023612848A79FDC3FD6D885155D50AD +1A47495DE4C69477894EA66E111B6DC93CEF9417CB7A173868D425233EB19650 +5C0F27B5C2BCA70F762B17BC8C6945E687C9E08F69FB48C4A2F6D3B94E201290 +A2F9391814353276CA71DE1510673372F2DA9602F4B90A8C850B2629CF79052E +6FAA9CFA3DCF615C6D280567CC00A3C5F4B122954A4744F076941AB2845D957D +56B30209C2A5AA287D93E9C3F85B92F9708BF6E947E85F5D5827B5766C3CA618 +79115CD207E6E9307F5F12767A579E49E69CFA37C6C9A53E462749998931FA8C +E6CC38D67F507568EB01DF1EF09AD41F786A0B7F0D28F48F9C8D8C7D6E058406 +EF8614FB990F74A409932B362CF2057751E3BBB9BC0AC7A03AB1654E84748A31 +30119D7F0D405F15E4248F6E11247694CA182325A252F0C0E516920A3138DEC8 +28130E484A3EB074BB646B81EA50C75BF9519C078DDAAB6FEECB1DD3D87CECF6 +0735F4F990B13E4AF4F19AA0E3A07835FD7D53F7644F42AFE3190ED788891A20 +903E93A28D030550C6BFA18C1A2085841CCF3D049D5D6085935F0E7A863FAF2F +4D9ADCB9CCD20CE0E541A0B849DBD339F3A8392BF7B8CDFC788133F23A82FD26 +797F5487374AACB6B9AFD798BAF3FC3DA26950C871B32B5468047D12752037F3 +D8AB4DEB8F3F3314C458E1E45DDC82A22B18803CFB8C67E3038217FE420E6819 +3AD914B8166A7C511A043B4A72C1E4513D40FCB55EC7B35B7FA51F51C258F7B5 +08B6F30C915776F4DDE9A7BDA4EA7E86DC067912B5D3C47E32611DF742186E3E +70F87DAE8F3825A6EAC0EE445C2DDFE088661ABE3EC0725C64D60AFECFE33FDC +1B8C929B2C6F277A1906177B5C6021D65F9B89A2AE42DF386016898F376F4949 +758285BAAD84848C6FE960BC7A324A711261D00CF789CB38BC6068AD246EBE50 +8C8B1E0645D03C9CF4A13CBF36EF9A2CC7B1F83FF5623AB775543C63D7FAFE82 +B89A4E0F7537E271DF8B6CDE9734D5792A7EA3F9AC01956A4423549EEC052B86 +D55546326A8D4E819B9D8B9DD35B405BA209B14A582C0FD30C2DE04E492CEFEA +ACEEEF25D5FC076EA1362EFE4535E342A1D0706EE00324691720F865E1C8CFFB +E40C82D32E8861CD8D14CBEBD2747FD21A2F39580D90072F67E6544C83BC1411 +AD2D9FCB7F60C7DDDD5FE437DA77312D8411B36C17290E7E8C7D510EB2EABB36 +1A7A30D1C5CD8D93EBE72B8FF07822AB00E42930978FC88E678B9A334E591777 +06BD6331C27C3763CF47B04278F3D19DFBDF608B9D1501B4C206D01593C57A13 +5517779D7F6C7CE4EE8AEF6123C8A0BEAF8A33E449579E32792D9F1590820F5B +A88E1568A4D93746227D6F9557C28D643B986C4922045CD3C05F980B22EF6ED3 +302E98E028504CDE790F26C82BB9067D98A82009661B7C9AF6464891CE787B55 +4A6427357E0C3E387BC34688E3DF39FB0BE8108F7C247DD1777CD37DC6F46CB4 +C66900AEE6BE537F53119CE46949097ADAA2A04FFF7EDF46F1A7C018DF504660 +7C35D866A829C690DF52754AE981C83E22643E7F2BB0084D1ABFAF7A9EDC143E +674528FDD471A47889F7900469C5DEECA99FF824047169677C251A659A9B3FC1 +08C6E522E097B6EBEB7FE56BAAC797D8FA002EA86274336FA35556D1A3965300 +B78C5029045699D6B80C0F5CE7A52C07332ADF17F9215EA233D3B34FDF158CC6 +905E60DB4FDE9FEFF75E9B0839B2B8309F34C838AC844402BBE5942FDD3ECB95 +B59AABED12012046B0AB2FE3785408CFB3955741C266CBA6BEA82EB8D5A119EE +48BA7922D273196A39B9BB0D9002964F66F44C48BAE04B28DFC60B5E1E096440 +172407EB30F8842A04602185FB73F16BD16BD66B515D67367067F22EE1F08A8D +665D67420D7076F5C59C5FF52DE87A38CA8E5F62D6371E22A29B5B54AD23C93C +E8635CFD439B08FAF7B8D72638DA1A0C99F61D6257E52B4956E75A34D2C168A5 +A3BB5EAC545908DAC7691EEA7F0577FBC8A600C1E821E9B73215FE20739E9099 +8ACF17ED23CC445D7BD4D2D9820FC9379C790E0FE6C5A3E21F914989A4F042A8 +9B4712722C1F5FDA319C9B9A2DC05371DB3F77D8AAF47D8DC716D9F4F5CE724A +C0962C55D16F1E1859C256F70D4F7950B808962C26E766234C3517092FA9CA77 +56431D2EEE84D887DBE22E3B7CFC844708D48476F522C8EE2E5589EDB9F65190 +FAEB43C04BF3ECA7A95DEF7A6DBC5B28FF289FCD2692904E7A37D97BFC3F2236 +0F7D9751CC837EFE6DBB6B4B6F735EE8F61D636F98BBF322C1D42FBA3737F68B +96E7B6BBF44D8F93A759D49858CA11CE8659C0B1FF0B0D28D4BCB8610543D44D +3F096A85EE4C57036FAE0CC40F100D750748005C7A84FB1F022A75795221FCB2 +74B8ACCE3421352732F1865D70DB14B178073BDFBC8AF2BF79DB48B078C1FFA6 +A52AC316F8BA68E8AE37BBB3E480FE8FDD6832597F6048B6474CE8C522943A74 +9DDBDB17A8EDB7C6594E +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR12 +%!PS-AdobeFont-1.1: CMR12 1.0 +%%CreationDate: 1991 Aug 20 16:38:05 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-34 -251 988 750}readonly def +/UniqueID 5000794 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C +68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 +3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E +59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 +51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 +DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A +AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F +45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 +821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE +96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D +9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 +26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 +140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 +1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 +1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB +377D3061A20B1EB98796B8607EECBC699445EAA866C38E02DF59F5EDD378303A +0733B90E7835C0AAF32BA04F1566D8161EA89CD4D14DDB953F8B910BFC8A7F03 +5020F55EF8FC2640ADADA156F6CF8F2EB6610F7EE8874A26CBE7CD154469B9F4 +ED76886B3FB679FFDEB59BB6C55AF7087BA48B75EE2FB374B19BCC421A963E15 +FE05ECAAF9EECDF4B2715010A320102E6F8CCAA342FA11532671CD8D247017F4 +80F3953FA6A64C2753F39AC37ECA3704B5915361ED1A124CDA39E5F743A992D1 +5B0EA869DD4815C2ECBA3B4DECED6B05BAE9FF7C63463A3CBC2506B82FA8C9AA +F86F320B0CFE0A9AF55CA46FF15F95E9D9E81C1FA0857C0224EE0E2A5721FCEF +30D43AAC8304E4156E6AE717543A79ADCB8F3A44F84EEBF8AF97DAA325EFA234 +CC099A2C065D3E10261977F5E90DE0955C72EE1B65AF720FEFBF52B5606895A5 +96158609A4C49A16C351ACFBAB56997B501CC226248A8B4D24B7ECD1B9E874E4 +B23DD10CEE8ABB8E87594A4ECA7ACEB6D4526F1DA1210D8A4EE7636B41E16F79 +6F0CCD5D304F07BF955CAD2ABEBE7DC0E40DC68FC9FE60A33DF9EAE3F467434D +88C723770BCBAA7034DA0C0FD25B568E5F97A492AE95A7B893CB2BFCE42765D5 +BFA77F284C508BC609275E75BA1DCC92609B08D9A6CD3D152F8E14FD29C0E0F4 +CA87655BD992EA44629DEE5843B60B5280429221F218B9EDD385A34DECC6EE36 +FB99C0C4541544507F345188E8A8DA0B2E96CC53CDA170334423B4DA12FE02B2 +2278BDA8775265E624BC22ED3018A15756D6EEB6FF3DF46924088A076CCB36A7 +1CDA080EE7633AF2EBBF3619B1A24063C200F4F660DBB7E027D84E0D872EB188 +F2856FA40DFAADC2B33589A09A616E10C8CF9033A16B30BDA1DD07B2AC9FE513 +DDA6FEF9F0E410D12FEA970B82AA0B1636C5E56464719946326FD757D6C8666C +9EC2165FA58ACF326DADC611D93F3D1D64E1ADCD426F51B11DF6D3073E679DFA +D18E1E5934BC17E5F4E3F1F22EE4DD01ADE982624B890D5C10DBBCCF2536E085 +347A6280ABF6D8F7FDE0F1A0CAD86A08148A2ACE13A5A9F8FF3B31660C69122B +B87282408FC5F9C056913962A6FE7E3114148872CC9EBB1CC95AB910E33C38C7 +000E7A45F9C775F83CAF5ADEF88E4EE67E225271E4D5D754594E228D0F17F839 +19846309A4E64438203C1408F9E0AC24A443D41E126C2234BEF4910303E8D9EB +0772A85C146013EA88D83847594D91060D040FD6C042EACA55AA3DF639A2724C +23ED23222B4A3D61AF253F45D5A80C220F63BEF811FAD4AED3A6998DDB34DC64 +42A027E8BAD1988C441BC291637354A16DCB593E985FD7ACD563A2EA42B75083 +C4B767E15603E7B200E6E11CE61892CCD3D7615DC9A335E5701A5D6A36306D80 +0EA31AE0ADFC4F25536590DA27A620035BBA61AB2CF6A521BA6143AD83771ABD +4D8208B4C2C594E35A9801A5C513E1CBE55B5F274CB686C284AB22C086220C89 +16E1188DAE33D5163B50FDF52AB8EB3F4AFF1FDC0B2039FBBD42627B54954A15 +C2C70B5636711F8DC8C169AE0227C25AD970CACF54DFA5204F5E9E783D6560CB +1A526688725CD790FD0960FDCCAE63ED38C7F79BDD64FB05449BCBE2B1F3CD3F +6312E1A2DBB69A699116DA25FAA096D00BB0B5EE423106E84CE36D5712F00ADA +B54BD70668D37100695736587D562C585D5A3616E91909D1CB9FFBF635DCF010 +5970DFA168CB77899D0F13C04963ADA29F40B3BAD5891B80B183E0406C9A83C2 +B729166909888C20ABFE8F1F18AE280034404499BE09126F309AF8CE8D44D747 +50602DCA970A989EBDB15FFB131EB83F11325A90417335722B9EF30EF914B305 +977FD68160BC7D776507FB91AA612497F19E2A8C2E0AE4D5ACD187930B6AE576 +C87E28E2DF7B783E5B011268486F2FD4E78981E0A37B4EBB06D6D9541CB82447 +A1EA2AECD944951EA8C7367281C764EE621A2BBC55BC94EFAB2A120DC0D225DF +6ACADAF7FE71CF4E9E60C5E3C12C66445DC6230521BC8279DA3DF28EE19F08CB +6D7B9B4379057FB70A98AABC8F8B31BECA41CBCE0F969E6392DDFF5EF592E9E6 +B6D04970D381B1F654890447CAE06D76E08861E589F1CE4E2FBB7377DA4C0936 +8B1B143A008F948C54415C00E3D3088C143E7AA33B1BBC0192B1930419CBF128 +643946F579B492BABEB5FF5344178C6228E248C30A432EF963C89C934DD7F941 +8B5F18C639B5AFB2304A230C398E47D59EC0D5BC6F7A263D62E190132251A709 +B05C4DC9C25B96632CE8EC9698425224E57DDF235BE00C08FFC4ECBEF043D7D0 +913B6F8F71E745BDF4AD65015FF0A16BA26E747C0EFAD81C9E223C0327D1FD15 +C4FC3DE6D4D8E99D504BD5D966C62CCA25ACDFE4D8A400093696CAB3932DF964 +6CB53329B317CEF79FBBEE270841C77E730EF1C1D60CB5DB80D82190B8FC25CB +79C19156126766C00E01C1866FC770A2427751B79D9CE9CD1A5C5A4DD0C0A9F0 +51029696BA84E57E92D29477C7AFCC6DD1DC5BF8CED0667C22677F9D7765768B +FE05D9847DFC7A8B1A9B3A7A2F8DE11D1BB946BEE4250834BD3E77087C38F973 +8D5B6076EED6EFE579B3A40C6CD0AC1F55FF2F5FB7D26AA7DD5BA781352DAB59 +C0899D93D6A200B46363C18DBF0E022CA522EC8B58D2B9C5E2D07619F5C4EDF3 +A799A694BB017069A1B25B10170520B7C94BB213DDB44A5B46648D24398A1393 +1E08DD8A0107D05EFB3E58A4EDCE5BB13EBFA821B16A3950A0B32F4A2320D69B +3311D2D5C8419E4AE8D74CDB03D1531840C5515C882E76AC8C1393B2B1142F5C +CB1881323C9A88246BC295EA05AAD126B6A6F399786AC3BCEA819A798C399930 +65824C283DE98D6AC32C21CC1E4FCD07CD80CAD93CBCC77B6500D449111111DD +40A38F73F1C63FD25B9245620AF3EED4BBEB5EE268AD6362DDC9ACE2884A9D64 +68EFB4EFA3659F4F113C89B4D7004A851F226E610120FD5044F1709A646B7EB1 +301BE718D5D98C5F5A039A5A08E68AAB9B2935E601E7822CE739C89085E02B50 +582C18527D3D2E1CDEB423DAF7B4890FE4974E8766D1916D98EA6D985C8EACBA +97E947C96DDC0949F7D139DCCB4EF8D59CBC6F54441EBEF39222C96EBD29C04B +5AF641E8B2DB79B7080F7AD81F479084D1E89C54E901B48D19268FD0EE1AB25A +2D9AFA5413E6B173ED6F54C4D1734A40DD61CD2E874E59FEA0E4D63591FE3A0D +2916CF64A54E5F86506AB0B66CEAEF59A63BF2170CE68B9294ABBA57E9735675 +76303E0878DE1834F3B2C90EA21464823600C03648C6F4617BEB25BAC9F04EC5 +F677EB0BDA2746FEA5D93101CAE0ECBEC2B036B330978B82FF1C77CC2C140504 +A9E17B25012681BCB24AD5426BDCFD117F329AAFE0351F7AE5347EC69E5185CE +1338F4290B9DAECCEF19227FB696F52851620FFD267FA544FDFC335CFC675A35 +243AB4020C47F4394EA51A6ED0002D0E635E4E3C68281C6D23F59F70E14BE60A +EF2DE2EBDE4C409F56DCE40CBE71D221A43F1DEFFE0EF9E723FAA2D173A206E8 +82E35FFB0C8EFC74C77B6524DBF907F3BF87DB7454A107950F2B2521480531F1 +359C8C024E4D652BF2B6A619CD2CFB29AEDE09ED9FB79C2AD97351553426C481 +87E353CD26CEB4A17BA46329E79694947A92077942495B9760E78C29255623ED +100A749C943777F03D5FE21FABFFDFBCBF741ACCEF325C371276266C390F9A16 +A8272E096511A56A887E637E15EE84EB4730BB3D18F9461C79DAB4948D4E13C8 +7341C5FC3480329A0BE56251D2B25C84ED6069059B354631C314A03A11B6A299 +9C052BD3AF064BA64F0D7CA8D1583EA5BACA97A53AEBCF3D3E6453FC27C3FCBD +FC4C6E6B327B0DC61ACE71250B7BF344F0B4AC77C8FDF6A747F4056284C33343 +71D206F346790E75480C3F663806CF6517168942BDC9DA7C8E8ADA8951B3FBA2 +1BBDB6AA8389D3CA5FA9CB5EB104BAC7845BCCC3C152FCC20CB93CE4F3408489 +CEA23C04898CA14B3178D3403F70C23BE754B2AB0D2186C87F503DCA589BB66E +BF0ED582D4DB0DF842CE4164B7C925DF4E50D3B21AF6F8921F265AD65730443F +A7407F55C0727DFE5B033CB478D92577E599639E4F0551A4660470FF70D87E1D +8FC1DB689A2465148D3DEC9D7712FA16293E3FDAFD508B1CBA825FAFAC161FF8 +42AED83B9AA5C990180D455375D028816329AA52AB725E4958EDD852E2C84095 +1829DA85D95DDC8231A49FADFBF223CF9452BC8E92319563DA451E88F4D65C4C +9CB61C3B1F92BF25F6A9EC49E650D190EE8B16180D651AB24466AFB43401ACF7 +A8E743FE1EA58CEA36A40B5908E2EE34E6123679061A5F10F7C46C861E5F7CBA +084D35860E4160983FAC95BEEAC8A12142D5598A32DA4C3EE03C889D8E4C353C +C1CE185B406F0EC94B369895DE94F9F890FAA67AB834BD9CC5FACD21CB1460B3 +5461231BD38D3F50BBE49D7D9847F6151D5BC0A6F3CD177FAA48879265ECDBCE +1CE0424903A6B2C71FD760B5519CF4508D103F2540845AD971E7FE6EFA9275D7 +C8CE848C06D70FCCEBA0C27DBB064D06687434911FA5906C01B78D4E19EDDF7A +CF2F32FE7135E5E42E32A7CF782327EDA6C07E9F46785E6E031E06D6454EF5AD +AA6B538BD359B9CC4AA7F67D11204112405C6BEA820156C0BEF02EC578D2CD23 +6B2AAF7752D87D3F1B64D9F86E2FEECA2103F81151E2766FA36957720E8D9D27 +D49A55C8BE2462FA4E6AB39E14F39818D2AD0D462A77426CF54ABCA3A1BF75D9 +00D8BD7BCBEEB1B564F8A99F43C575174A1F0F7EDC2054FBEB3336BBABB58728 +629F2099DAE4D464DD09798109A6744B2D229820C1D89F5854F0DDF6926564B1 +7F006BCBEC2ADF20E5BB5A87B7E9DCA62F2E7B7A48533B0CC7B93D781567E37D +6E52202828DDAD86CAC5F1AE44C48497526ECBDA2F9F802BCFEEE7E71CAF660A +96894A1CB87B345C0C9A949D25D633CB1CCD16363171936ADC31617A9AE9C44C +28D8E5BD9868B0A133B1322C55D2FDF91073882BDC0600B2FE550F2CAAA3C190 +F2A30BBCC6E316C7F33B1D71734F1FE7BA762E31EF42B210698E6537AD98FD9C +7A10B7C9314105A65869D0C8517B2CBA758912296E4616C5748519B63072C48F +FC638F8C21AD17131313587DC0537ACE3F37005D45CD48EF3D3834252F6A30BC +22A6E02A14A189C2F9323D7FCEBCE097B28AFB9B054483DD6B5B9CFA691679A0 +443962D22F3277AFFDFEB646FD76254CE3293F64BEADC57F5757E1B74F7CFE00 +3E18DF9E0FD11353E19709BE04595A3614482075CEDDBB50D581D9D64E92EDF0 +6B01B65C0F12D1822431AD8117B91244D06D570B3CD47A7B85237A3A382E977A +7667BC7873A29A2E5C83902E49F3CD52807A5D9CC6100EAF23FED2533617E888 +9FF279204684A57572A56B024E7CB1F26B7138D276F12F892C93DFEF2D55FC05 +7ABA861B1CDFF7F0D8006A244F02D540FBB479C4A4A79CC3300BA33B07EE7D9E +D43367FBDEF27AA395F3EA0EA520B1E5B95648AFFAC97C80DF18A05B9798154F +5B9E31D1574DFF3A3B2C8F68CC902DFE425D832318D727B4F4227FEA537F471C +438465BC641984D47CC8871B35D54B200F31B7EEA6E41816012C0B569CB0D2A1 +08188A36FA40689628EF7B0D8B131135CB9FA8DE9D +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR17 +%!PS-AdobeFont-1.1: CMR17 1.0 +%%CreationDate: 1991 Aug 20 16:38:24 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR17) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR17 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-33 -250 945 749}readonly def +/UniqueID 5000795 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 +A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 +BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 +96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC +9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 +E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A +497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 +4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD +3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF +B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 +C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 +9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F +83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 +A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B +246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A +7736A960F72AC01F733A11023832CD68FB6288A5977743F781214D8FA9C0C3F7 +80001321D4397771F728FD9EE57CFE7D9192B887EC883EB1505068261DC40089 +7B7D2820F06515CD74513521F6397FEAB3AD3572D9A8269430E407E357422461 +1785FC2782047F4C0339D79B16862D939F3A37F78E4E2174E4FBF132539CB760 +207999FF86F6A3EBE48EB0A1CA635450FDEEF79EB16D853F3BF4B7A887B6794E +6C09C4B9C00804F4A8EF339D38CCB41B1883CF72D167D76BED1E9E1D3DFC787D +E2B5C3CCBB79DB105A4A03AB60F4AC27F74DC9C0FE5985E1D8D133183E4A622C +C62A0C38B5F56120755C1E54325794C28E7633B088EFAE6D7CF46855B18C8EB7 +01FCC24C8FD6681D09A43236F9012AF1EEFC863AC1F4500795147C932BA52C47 +B12956C00306A22CFE19C97A69ECC174E7197AD0E6F9F78804E592C9CDF97BBD +F332FE3F1294D636BD3205C9B7EB7DAD5613F0510BB914969B5CD7F695A7E9BC +C178E60127D70486D86A61676933EDC19388D61AB459C4113ACACE3ADF2D2B07 +2D7FFD17C06BE1CF7BB9355DF476E06CCFA2A43016CCC8F5924953286E66A974 +400E1E4BA50E3E13389064626F7085B1A1F0EA4962DA90863419798217B2F5CF +5E85B5DA76F4ACC0E1464F4121980CCA282CF164D0B78C8BFF9657C05C6B5C07 +3A8032FD835FC433BCAC796AE88CED8C4CD8B043DECC191F4365108797E323C7 +67E1F937C84EA80BEF6098D36C46A20FF47F19DE8F83D9A40C281AB23133D14C +B9AFA9CCDEEEF8FFEF6EA8B2DC291855C4DE36A2ABE0599117589227DF6C7BEE +91A835EEA5EFDAD8E34C485350290AB532E777329B03D524CEE744BEB773789D +EC3B9CA92F82FDA01B3978B98F2F8A44E1590E6E28F6728BBE78D21F3E1E565B +A97F367B307A9C1B5ED184CD5C5997DA972DE2AFD7F5F64B0870BFE707A5CA61 +8ED10E3D53FA3B02241935CB4B15A6A1A012A4487F87913643917609CD6E4878 +BB3E88698026A7A4FBF7FE4B5834CB63502A0C96CB8790DEF38971EDAFD3B1D0 +5CEF889ECA3CB099427D1EEAA2DD0AB3FCEF164225244350D61545BB7983E351 +5336E29D0BAA9574CF43D3A48A47AD24C0CC7DB1E45590EDE3C7E283363D0891 +9CEE703F7B55960B7F95D68E8C891F72842A64F537DFA432AD001DA24388996B +7E53C94B2267BAA5462F47EBB95A53281F7FEBC30CDA011546330D6F859F1072 +AE34BC27AA545B962AE6D01895D2BED9294EB17EDC758D54EAA78A0D816A05A0 +AA137F5CBF1707887FC48D2AD1F9B864B06732253C650B764024BC2FAE350306 +89A797E5648A99D719E00F67D981C2C38E45F317B849874A13F29E8F6B3F9742 +2CE8ACAB4D81B3D93322F63CCD0E3500B5116C7992E3B1D74859EECE6D67B347 +95CB0EE06A618E65162483B5C0DD5A78A4D049295571B536F023CF0D970C241E +508E3A73B29D98CC2008ED4A58D908EAF63F9DACFB7A1F5EC420E84BB0E2477C +6625E076BF6A6C5FFE2630C4F8C7783C59A2A26BA716624F96B5B1E36AC44513 +820DAAB27E34ADFC18E9AFF6896A86710153BA9F54517BE3B0A967799CC59475 +98029BF1F0C081016CEF4C7C5524BD8331652CD582B31C9851A48578C859E254 +D96521FE93F3B7C262459AECCF56D5CDE3B28E7E78059ABDB673892EA8156568 +5CC04A336D8ABBFA90C8D1AFDC09E4F15B3ACEBB910285628CB6591C32CCACA5 +CB6CCF06ED3EBA032DD54B867E5CA5DC9F3D38026E41E68E76792C79147FBCDA +497EE62D48B4E548F173F59A75FC0C0D930A16E7E691733B0FDA7626D3C8ED96 +2A2CD48E85152DFC0B3B81A07408FF23AA11DADA6092209E76D872A116DEC22A +2CACE366C837EB7DB69339CFAF2016FF9742E3B6D67A677087F0730DF90A9730 +CDB4B3A7A66FBD1977838998C056A333A8985E99DE24DF499D193ED48489D54F +1923791588FC04AF548B05178D43F4106BD8B7F11695B254C427DFCAF95DA99F +58577C50CE6805208A2B94CA654A62DAC4369E1B9062A869B4FAE9DDBC649EAC +F3FFCC63C84EFF948D8668043E72C81EAA54D572500AA8859A3E3F2294375542 +836FA5E43A5F057A10F36E709B92D6068C871F7796B3252A7D58643297CB4010 +225B3295670A95A65DDD6F802BD2DD2FAAC7F8054C32D1E41A14933D1C38B383 +39229E6B76127BC46F966E53FC51E1BDF3BCB6BE426DEFFB4A27405E79FAAB4D +C6BB575A0EB581551A162342F3828EB6F083EAD7D4C605DB213169D08C17CC2C +199CE268CD37D6645773353890D751DE0640F73FD16466443443E4AB82DF7A42 +33812BDED7165FD04AC44349B82F48411421A83D65A01434E995C944EDCA458B +A42BAE838661F3D6AFA96AAC9B40128D5E63C7FB68813047646C6641C8000AD5 +9D6646D60F16ACB29F50ABBB6DAF0B2B5867BFB7F9892C84AA4B38C6ECF0350E +5A03C74F54C86B5ED002CCD2C62E11204BBC388A8FEC14122925C146E56A81B0 +9DBD49B512F0F870C63EF931B16D5328238A46A90AF5FAB245ED8D9CB3FAC8F4 +C23F873126BB3E01EF4D462B9536F287EF5E341F2A5EF42BA45CF58D6F1A753B +C0385B7ED5AB05BFAF68CF54F1A36B161E1054732E30FA5B78E82AA8759446FA +09DA646A140A317757A9DBEEE84AD778F0F93F67449464D94A0DBDE401207BCE +B2E461883B21C85A19ED5847EAB32C069171FCB8D29EB32DEDDEAA415FE9012A +BF6F222CAE996419C427C36EC3DFC8C44787415677C4866238FA1C8A46509E50 +FE48A7BD79A59BABF4F9445B14D0546764DE0192D7BF8E5006223FAB0D0E520D +952BC104C24FF69841ADEE5CBC7E2C2AB2829CAED56769A6FBB49705168E5F6D +C5FEC43A25F10764AE14EA5CA32C4C48BB4C68BE7D562CC5F17E337F89C0E19E +8880415D285BE5DF7FD9D49EC3DCAD00BCC7947D38E679A7408DDF38C8475EE8 +0F36BDBA830190AD01BB4FE4173EA2D9CA30AAC643FA0F2C0610236324AB806A +91468DEEDF522624252E5F919627461CBE9505420CDEB12E7404946A89C38510 +6018AAFDE6E5F88C1D5C4631F5B62510308F92954CF6E0F2A3A45C224F070AC3 +8608E777682ED57C19658BC59E2F9BAE7D8B57C1C932B855A6E6F30436CD169E +6EE32E7D1DCF3C204F82B6933632C707A4DF21C364CB6EF935D5D90B7F21B12B +DA3904153564564F70566EB05B34EB806151F7AA31EFE80557D7455741B1D387 +620BC75D667321C6AF5CFB63FE1C2A0208A6E9D1CE2232787C40FF8DF4185171 +1F8A8DA34633B80F4A0778235445B6B78C86CE7F418924A4A6443AE4D2383CCB +EA2A5D6427A5C9B71EA3DB5E8F0986CA0211185335FB2F12B89090EAD3794975 +395017EE2048D296B18BA11B541ABEB1534063642F2580201F268C9D2681E417 +A70525980915AA3F0ECCF8F19630F84DFBD60131F1C038DABD78CE110C18DE93 +DD59A810AA6B35765F5630568C71216926182F2A97A92592BC56BD164577291E +8291E149087D102CC1F5AD876FE3D8D39C13EC632C538E8122532A327D5D4E4B +F373812B8C7C4C8D96789EA68563C9A914159F838C5C9D2295CDB89A2C01A4CC +6263FE4FAFDD1312A937381CAF85FDCAD36D4A036466453FE6CA2D160BCAE1A4 +0EA2A8F383FE35B0FCF83B184D57BF107AE8B3940D4067A144D3B4163FC23379 +66CF44C5727C5572F569038658F3E9463A179C308894650853517433FA79995B +AB26DE53B7EDD37573BEB7D5A3A48DD80FAB953960C071E6B636187ED79FFA63 +95EB6D428DC4F53146FEFB6CB2BA2708C1F31AE43C474CC719456C4BCBB6EBD6 +1B940A1F7C8A274CEB6842E361FF085C6C95B8392D97A29797335388B5A5AFEA +288571FD735061A9CEE603636A2794C412BAE389F18773831A85EE75928148F5 +4734F98218537554C1069389CB2114A10BAAEEFCFD513C2FCF3D318690F3FE96 +7CA81FAB9F6324A8EDAE3895E4064CED5DE5E48C66840288B3008D88C92856C0 +54607F2FD8B4E1F8AFB658E8C57FA366A551FA13A13E23D7654D508095151AA9 +2272B34094568E32578E68A2E8970E1FD89D8042B4405FCB7727DEFCA01C1787 +60AA5FE3FC2617D26B8AA9AED931D06E94350555D561975AF9EF72F2525A4765 +7F06E6CCC3517CE95C66F5CC887E8A5BAE6370903869D3526C0BC9979372B3BD +DEE70F75614F3B617688DFBD9B04E4A04B00B7400268B7DE5C99AFA4D5D3BAA0 +9EF954EF4DE8E18B3D641A7D872096315510BD21C00C5CD061832CC5705D6DE3 +FBFF4B1A8C1A7D3BCC41A3ACE3984E08838EE3F2D27B5F98F3F0720367684044 +1034177735E07DE40A22E02F5671FC12831FA86A85B8DE157405603BB01E5FE0 +EA5C96C82B1BF2A7FB93B4A505FCE75E6AA8E22A4A36627A4E0E3A18C604C115 +B3D62A94127C9EC329B6F696637A085AD8DF328771141CFAD67F088F944109A7 +C701C7437B01FCC95888DBE70EA60C63EB0F2F1FB6EE56C15EC3D1CA8E088881 +C0D9836D7B6BBE59CB77724371B7A02742041B4BBEB6D455084B39D67A687743 +42B2EE00BCF43C698B0290E533CDC7F34429402301D92F2282F11908B8735013 +00675964D24F74F08F5B00328EC2569F7B2731B36AFFF1EDBF85B8E21F27515A +C79E4BBCC9D6372191D25FC7A8D3E2AA191538FA8D28E1AD +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 39158280 55380996 1000 600 600 (first-steps.dvi) +@start /Fa 193[71 1[71 60[{ TeXaae443f0Encoding ReEncodeFont }2 +90.9091 /CMMI10 rf /Fb 133[50 59 2[59 62 44 44 46 1[62 +56 62 93 31 59 1[31 62 56 1[51 1[50 62 54 9[116 2[78 +1[84 1[77 7[88 1[70 1[86 81 8[31 2[56 56 56 56 56 56 +56 2[31 37 32[62 12[{ TeXf7b6d320Encoding ReEncodeFont }39 +99.6264 /CMBX12 rf /Fc 134[44 4[30 37 38 3[51 74 5[42 +1[42 3[46 6[56 34[46 3[46 46 1[46 48[{ + TeX74afc74cEncoding ReEncodeFont }14 90.9091 /CMTI10 +rf /Fd 166[68 1[93 1[68 66 51 67 1[62 71 68 83 57 71 +1[33 68 71 59 62 69 66 64 68 10[45 45 1[45 45 50[{ + TeXf7b6d320Encoding ReEncodeFont }25 90.9091 /CMSL10 +rf /Fe 133[48 48 48 48 48 48 48 48 48 48 48 48 48 48 +48 48 1[48 48 48 48 48 48 48 48 48 7[48 48 48 48 48 48 +48 48 48 48 48 48 48 48 2[48 48 48 48 48 48 48 48 48 +48 2[48 2[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 +2[48 48 5[48 34[{ TeX09fbbfacEncoding ReEncodeFont }68 +90.9091 /CMTT10 rf /Ff 129[45 3[40 48 48 66 48 51 35 +36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 +45 7[68 1[93 1[68 66 51 67 1[62 71 68 83 57 2[33 68 71 +59 62 69 66 64 68 3[71 3[45 45 45 45 45 45 45 45 45 45 +45 25 30 25 71 1[35 35 25 3[76 20[76 51 51 53 11[{ + TeXf7b6d320Encoding ReEncodeFont }71 90.9091 /CMR10 +rf /Fg 134[71 1[97 1[75 52 53 55 1[75 67 75 112 37 71 +1[37 75 67 1[61 75 60 75 65 20[81 2[50 4[103 97 12[67 +67 67 67 67 67 36[75 12[{ TeXf7b6d320Encoding ReEncodeFont }31 +119.552 /CMBX12 rf /Fh 139[38 1[38 1[54 1[54 1[27 51 +1[27 54 2[43 1[43 1[49 11[73 1[54 13[66 75 9[27 1[49 +2[49 49 49 49 49 49 49 2[27 44[{ TeXf7b6d320Encoding ReEncodeFont }25 +99.6264 /CMR12 rf /Fi 136[96 70 73 51 52 51 1[73 66 73 +4[36 73 66 1[58 73 58 1[66 29[96 1[99 25[36 39[{ + TeXf7b6d320Encoding ReEncodeFont }19 143.462 /CMR17 +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%PaperSize: A4 + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 433 763 a Fi(A)44 b(user's)e(p)t(ersp)t(ectiv)l +(e)i(on)f(getting)g(started)f(with)h(Carp)t(et)1234 1016 +y Fh(Ulric)m(h)34 b(Sp)s(erhak)m(e,)g(Erik)f(Sc)m(hnetter)1326 +1219 y(Date:)43 b(2004/08/05)30 b(14:43:52)-94 1605 y +Fg(1)134 b(In)l(tro)t(duction)-94 1808 y Ff(These)32 +b(notes)h(pro)m(vide)g(information)g(on)g(ho)m(w)g(to)g(install)h(and)e +(use)g(the)h(pac)m(k)-5 b(age)35 b(Carp)s(et)d(as)h(seen)g(from)g(a)g +(user's)-94 1921 y(p)s(oin)m(t)22 b(of)h(view.)38 b(Carp)s(et)22 +b(is)h(a)g(set)g(of)g(Thorns)e(that)i(pro)m(vide)g(\014xed)f(and)g(to)h +(some)g(exten)m(t)i(adapted)d(mesh)g(re\014nemen)m(t)-94 +2034 y(in)33 b(the)h(Cactus)g(en)m(vironmen)m(t.)51 b(As)34 +b(Cactus)g(is)f(a)h(necessary)h(requiremen)m(t)f(for)f(using)g(Carp)s +(et,)h(these)h(notes)f(will)-94 2147 y(inevitably)d(con)m(tain)g(some)g +(information)g(ab)s(out)f(Cactus)h(as)f(w)m(ell.)47 2260 +y(The)i(reader)g(should)g(regard)g(these)h(notes)g(as)g(a)g(\014rst)f +(draft)g(and)g(the)g(information)h(represen)m(ts)g(the)f(author's)-94 +2373 y(p)s(ersonal)25 b(exp)s(eriences)g(rather)h(than)f(an)h +(exhaustiv)m(e)g(recip)s(e)g(on)f(getting)j(Carp)s(et)d(to)h(w)m(ork)g +(on)f(an)h(arbitrary)f(giv)m(en)-94 2486 y(platform.)69 +b(In)39 b(this)h(sense)f(I)h(am)g(hop)s(eful)f(that)h(users)f(as)h(w)m +(ell)h(as)f(dev)m(elop)s(ers)h(will)f(con)m(tin)m(ue)h(to)f(add)g(to)g +(this)-94 2599 y(do)s(cumen)m(t)30 b(to)h(mak)m(e)g(it)g(more)g(useful) +e(in)h(the)h(future.)47 2712 y(Useful)h(starting)h(p)s(oin)m(ts)g(for)f +(retrieving)h(more)g(detailed)g(information)g(on)f(v)-5 +b(arious)33 b(issues)f(are)h(the)g(pro)5 b(ject's)-94 +2825 y(w)m(eb)30 b(pages)283 3050 y Fe(http://www.cactuscode.or)o(g)283 +3276 y(http://www.carpetcode.or)o(g)-94 3676 y Fg(2)134 +b(Do)l(wnloading)47 b(the)e(necessary)g(pac)l(k)-7 b(ages)-94 +3878 y Ff(One)27 b(\014rst)h(needs)g(to)h(do)m(wnload)g(the)g(Cactus)f +(v)m(ersion)h(4.0.13)i(\(or)e(alternativ)m(ely)i(for)d(the)h(more)f +(daring)g(the)h(dev)m(el-)-94 3991 y(opmen)m(t)e(v)m(ersion\).)41 +b(A)28 b(more)g(detailed)g(description)g(ab)s(out)f(ho)m(w)h(this)f(is) +h(done)f(can)h(b)s(e)f(found)f(on)i(the)f(Cactus)h(w)m(eb)-94 +4104 y(page)1317 4292 y Fe(http://www.cactuscode.or)o(g)-94 +4480 y Ff(Here)46 b(w)m(e)h(will)g(summarize)f(the)h(required)e(steps)i +(for)f(do)m(wnloading)g(the)h(complete)h(Cactus-4.0.13)h(pac)m(k)-5 +b(age.)-94 4592 y(Change)30 b(to)h(a)g(suitable)g(directory)f(on)h(y)m +(our)f(system)h(and)e(log)j(on)m(to)f(the)g(Cactus)f(cvs)h(serv)m(er)g +(via)283 4818 y Fe(cvs)47 b(-d)g(:pserver:cvs)p 1199 +4818 29 4 v 31 w(anon@cvs.cactuscode.org:)o(/cac)o(tus)41 +b(login)47 5044 y Ff(whic)m(h)33 b(will)g(prompt)f(y)m(ou)i(for)f(a)g +(passw)m(ord)g(whic)m(h)g(is)g Fe(anon)p Ff(.)48 b(F)-8 +b(or)34 b(the)f(dev)m(elopmen)m(t)i(v)m(ersion)e(y)m(ou)h(will)f(need) +-94 5157 y(to)f(c)m(ho)s(ose)i(the)e(directory)h Fe(/cactusdevcvs)28 +b Ff(instead.)47 b(Next)33 b(c)m(hec)m(k)h(out)e(the)h(Cactus)f +(\015esh)g(whic)m(h)f(will)i(create)h(a)-94 5270 y(directory)c +Fe(Cactus)f Ff(under)g(y)m(our)h(curren)m(t)g(lo)s(cation)1891 +5753 y(1)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop -94 100 a Fd(2)91 b(DO)m(WNLO)m(ADING)32 +b(THE)e(NECESSAR)-8 b(Y)30 b(P)-8 b(A)m(CKA)m(GES)1754 +b Ff(2)283 399 y Fe(cvs)47 b(-d)g(:pserver:cvs)p 1199 +399 29 4 v 31 w(anon@cvs.cactuscode.org:)o(/cac)o(tus)41 +b(checkout)46 b(Cactus)47 624 y Ff(The)32 b(rest)h(of)g(the)g(cactus)h +(c)m(hec)m(k)m(out)h(is)e(b)s(est)g(done)g(with)f(the)h(scripts)g(that) +h(are)f(shipp)s(ed)e(as)i(part)g(of)g(Cactus.)-94 737 +y(Change)d(to)h(that)g(directory)283 963 y Fe(cd)47 b(Cactus)47 +1189 y Ff(and)29 b(en)m(ter)i(the)g(command)283 1415 +y Fe(make)47 b(checkout)47 1641 y Ff(That)39 b(will)h(giv)m(e)i(y)m(ou) +e(v)-5 b(arious)40 b(options)g(to)g(c)m(ho)s(ose)h(those)f(parts)g(of)g +(cactus)g(y)m(ou)g(w)m(an)m(t)h(to)f(c)m(k)m(ec)m(k)m(out.)73 +b(The)-94 1753 y(default)28 b(option)g Fc(arr)-5 b(angements)31 +b Ff(is)d(quite)h(satisfactory)h(for)e(this)g(purp)s(ose,)f(so)h(just)g +(hit)g(return.)39 b(Y)-8 b(ou)28 b(will)h(then)f(b)s(e)-94 +1866 y(giv)m(en)35 b(a)f(list)h(of)f(\(at)h(the)g(time)g(of)f +(writing\))g(13)h(Cactus)g(arrangemen)m(ts.)53 b(Getting)35 +b(them)f(all)h(is)g(a)f(go)s(o)s(d)g(idea,)i(so)-94 1979 +y(c)m(ho)s(ose)d(once)f(more)g(the)h(default)f(option)g(b)m(y)g +(pressing)g(return.)44 b(Dep)s(ending)31 b(on)h(y)m(our)g(in)m(ternet)h +(connection)g(this)-94 2092 y(ma)m(y)d(tak)m(e)h(a)f(while.)40 +b(Once)30 b(all)g(is)g(do)m(wnloaded)f(y)m(ou)h(w)m(an)m(t)h(to)f(quit) +g(the)f(script.)41 b(This)29 b(is)g(not)h(the)g(default)f(option,)-94 +2205 y(so)h(t)m(yp)s(e)h Fe(q)f Ff(and)f(hit)i(return.)47 +2431 y(In)g(order)g(to)i(run)d(the)i(W)-8 b(a)m(v)m(eT)g(o)m(y)35 +b(example)e(that)f(comes)h(with)e(Carp)s(etExtra)h(\(see)g(b)s(elo)m +(w\))h(y)m(ou)f(will)g(need)f(to)-94 2544 y(c)m(hec)m(k)g(out)g(Erik)f +(Sc)m(hnetter's)h(pac)m(k)-5 b(age)32 b(T)-8 b(A)g(T.)31 +b(First)g(switc)m(h)g(the)f(directory)h(to)283 2770 y +Fe(cd)47 b(arrangements)47 2995 y Ff(then)30 b(c)m(hec)m(k)m(out)283 +3221 y Fe(cvs)47 b(-d)g(:pserver:cvs)p 1199 3221 V 31 +w(anon@cvs.cactuscode.org:)o(/arr)o(ange)o(men)o(ts)42 +b(checkout)j(TAT)47 3447 y Ff(Again)34 b(this)f(ma)m(y)h(tak)m(e)h(a)f +(little)i(time.)50 b(Finally)35 b(y)m(ou)f(will)f(ha)m(v)m(e)i(to)f(c)m +(hec)m(k)h(out)f(the)g Fe(Carpet)e Ff(pac)m(k)-5 b(age.)52 +b(As)33 b(of)-94 3560 y(mid)d(April)h(2004)i(Carp)s(et)d(consists)i(of) +f(4)g(arrangemen)m(ts.)44 b Fe(Carpet)29 b Ff(con)m(tains)j(all)g(the)g +(necessary)f(thorns)f(y)m(ou)i(will)-94 3673 y(need)27 +b(to)i(run)e(Carp)s(et)h(in)g(the)g(\014rst)g(place.)41 +b(The)27 b(latest)j(cutting)f(edge)g(thorns)e(curren)m(tly)i(under)d +(dev)m(elopmen)m(t)k(are)-94 3786 y(lo)s(cated)i(in)f +Fe(CarpetDev)p Ff(.)40 b(Do)32 b(not)f(b)s(e)f(to)s(o)i(surprised,)d +(though,)j(if)f(y)m(ou)g(\014nd)e(some)j(the)f(to)s(ols)h(in)f(there)g +(not)g(to)h(b)s(e)-94 3899 y(fully)d(functional.)41 b(P)m(ac)m(k)-5 +b(ages)32 b(not)d(required)g(to)h(run)e Fe(Carpet)p Ff(,)h(but)f +(probably)h(useful)g(for)g(v)-5 b(arious)29 b(purp)s(oses,)g(suc)m(h) +-94 4012 y(as)f(scalar)h(w)m(a)m(v)m(e)h(examples,)f(are)f(lo)s(cated)i +(in)d Fe(CarpetExtra)p Ff(.)37 b(Remain)28 b(in)g(the)g +Fe(arrangements)d Ff(directory)k(for)e(this)-94 4125 +y(purp)s(ose)h(and)i(log)h(in)m(to)h(the)e(carp)s(et)h(cvs-serv)m(er) +283 4350 y Fe(cvs)47 b(-d)g(:pserver:cvs)p 1199 4350 +V 31 w(anon@cvs.carpetcode.org:)o(/hom)o(e/cv)o(s/c)o(arpe)o(t)42 +b(login)47 4576 y Ff(the)30 b(passw)m(ord)g(b)s(eing)g(once)h(more)f +Fe(anon)p Ff(.)40 b(Next)31 b(c)m(hec)m(k)m(out)i(Carp)s(et)d(b)m(y)g +(t)m(yping)283 4802 y Fe(cvs)47 b(-d)g(:pserver:cvs)p +1199 4802 V 31 w(anon@cvs.carpetcode.org:)o(/hom)o(e/cv)o(s/c)o(arpe)o +(t)42 b(checkout)j(Carpet)283 4915 y(cvs)i(-d)g(:pserver:cvs)p +1199 4915 V 31 w(anon@cvs.carpetcode.org:)o(/hom)o(e/cv)o(s/c)o(arpe)o +(t)42 b(checkout)j(CarpetExtra)283 5028 y(cvs)i(-d)g(:pserver:cvs)p +1199 5028 V 31 w(anon@cvs.carpetcode.org:)o(/hom)o(e/cv)o(s/c)o(arpe)o +(t)42 b(checkout)j(CarpetDev)p eop end +%%Page: 3 3 +TeXDict begin 3 2 bop -94 100 a Fd(3)91 b(DOCUMENT)-8 +b(A)g(TION)2991 b Ff(3)-94 399 y Fg(3)134 b(Do)t(cumen)l(tation)-94 +601 y Ff(Do)s(cumen)m(tation)36 b(ab)s(out)e(Cactus,)i(Carp)s(et)e(and) +g(their)g(separate)i(thorns)e(comes)h(in)f(di\013eren)m(t)h(forms.)53 +b(Most)35 b(im-)-94 714 y(p)s(ortan)m(tly)k(y)m(ou)g(generate)i(the)e +(UsersGuide)f(and)h(ReferenceMan)m(ual)h(for)f(Cactus)g(b)m(y)g(going)h +(in)m(to)g(the)f Fe(Cactus)-94 827 y Ff(directory)30 +b(and)g(t)m(yping)283 940 y Fe(make)47 b(UsersGuide)283 +1166 y(make)g(ReferenceManual)283 1392 y(make)g(ArrangementDoc)283 +1618 y(make)g(ThornDoc)47 1843 y Ff(\(four)30 b(separate)h(commands\).) +41 b(They)30 b(will)g(b)s(e)g(created)h(in)g(p)s(ostscript)e(format)i +(under)e(the)i(directory)283 2069 y Fe(doc)47 2295 y +Ff(relativ)m(e)k(to)g(y)m(our)e(curren)m(t)g(p)s(osition,)i(i.e.)16 +b(the)34 b(Cactus)g(directory)-8 b(.)51 b(In)33 b(addition)g(eac)m(h)i +(thorn)e(ma)m(y)h(con)m(tain)h(a)-94 2408 y(sub)s(directory)h +Fe(doc)g Ff(where)h(the)h(author)f(\(or)h(users\))f(ma)m(y)h(store)g +(additional)g(do)s(cumen)m(tation,)j(t)m(ypically)e(in)e(the)-94 +2521 y(form)29 b(of)i(a)g(\014le)f Fe(documentation.tex)p +Ff(.)-94 2807 y Fg(4)134 b(Compilers)-94 3010 y Ff(Before)34 +b(w)m(e)g(indulge)f(in)g(using)g(Cactus/Carp)s(et,)i(w)m(e)f(ha)m(v)m +(e)g(to)g(address)f(issues)g(concerning)h(the)f(system)h(y)m(ou)g(are) +-94 3123 y(w)m(orking)c(on.)40 b(W)-8 b(e)32 b(b)s(egin)d(with)h(the)g +(compilers)h(although)f(w)m(e)h(will)f(not)g(b)s(e)g(able)g(to)h(deal)g +(with)e(the)i(sub)5 b(ject)30 b(in)f(an)-94 3236 y(exhaustiv)m(e)g +(fashion.)40 b(Basically)32 b(these)d(notes)g(list)h(our)e(exp)s +(eriences)h(with)g(lo)s(cal)h(mac)m(hines)f(\(i.e.)42 +b(at)29 b(P)m(enn)g(State\))-94 3349 y(and)f(ma)m(y)i(or)g(ma)m(y)g +(not)f(b)s(e)g(v)-5 b(alid)30 b(for)f(y)m(our)g(en)m(vironmen)m(t.)41 +b(Users)30 b(are)f(encouraged)h(to)h(add)d(their)i(exp)s(eriences)f(to) +-94 3462 y(this)h(list.)47 3575 y(A)m(t)i(P)m(enn)f(State)i(w)m(e)f +(largely)h(w)m(ork)e(with)h(the)f(In)m(tel)i(compilers)f(and)e(the)i +(success)g(of)g(compilations)h(has)e(b)s(een)-94 3688 +y(found)25 b(to)i(dep)s(end)d(sensitiv)m(ely)k(on)e(whic)m(h)h(v)m +(ersion)f(of)h(the)g(In)m(tel)g(compilers)f(w)m(e)h(are)g(using.)39 +b(W)-8 b(e)28 b(will)e(discuss)g(some)-94 3801 y(error)j(messages)j +(encoun)m(tered)f(in)f(the)g(pro)s(cess)g(of)h(compiler)g(testing)g(b)s +(elo)m(w.)47 3914 y(F)-8 b(ree)35 b(do)m(wnload)g(\(at)g(least)h(for)e +(Lin)m(ux\))g(of)g(the)h(In)m(tel)g(compiler)g(\(F)-8 +b(ortran)35 b(and)f(C++\))g(for)g(non-commercial)-94 +4026 y(priv)-5 b(ate)30 b(or)h(academic)h(use)e(is)g(a)m(v)-5 +b(ailable)33 b(from)d(the)g(w)m(eb)h(page)488 4214 y +Fe(http://downloadfinder.int)o(el.c)o(om/s)o(cri)o(pts-)o(df/s)o(upp)o +(ort)p 2886 4214 29 4 v 28 w(intel.asp)-94 4402 y Ff(\(clic)m(k)d(on)d +(Soft)m(w)m(are)j(Dev)m(elopmen)m(t,)h(c)m(hec)m(k)f(for)d(the)i +(compilers)f(on)g(y)m(our)g(system)g(and)f(follo)m(w)j(their)e +(instructions\).)47 4515 y(In)e(case)j(y)m(ou)f(ha)m(v)m(en't)g(got)h +(ro)s(ot)f(access,)i(y)m(ou)e(ma)m(y)g(need)f(to)h(install)g(the)g +(compiler)g(lo)s(cally)h(or)e(y)m(ou)h(will)g(ha)m(v)m(e)g(to)-94 +4628 y(ask)c(y)m(our)h(sys-admin.)38 b(Additional)23 +b(di\016culties)g(ma)m(y)h(arise)f(in)f(case)i(y)m(ou)f(ha)m(v)m(e)h +(no)f(ro)s(ot)g(access,)i(i.e.)39 b(install)24 b(lo)s(cally)-8 +b(,)-94 4740 y(while)29 b(y)m(our)g(sys-admin)g(k)m(eeps)h(some)g +(older)f(v)m(ersion)h(installed.)41 b(In)29 b(order)f(to)j(mak)m(e)f +(sure)f(that)g(no)h(con\015ict)g(arises)-94 4853 y(thereof)d(\(e.g.)41 +b(b)m(y)27 b(linking)g(against)i(old)e(v)m(ersions)g(of)h(the)f +(library\))g(the)g(en)m(vironmen)m(t)h(v)-5 b(ariable)28 +b Fe(LD)p 3334 4853 V 34 w(LIBRARY)p 3704 4853 V 32 w(PATH)-94 +4966 y Ff(m)m(ust)h(p)s(oin)m(t)g(to)i(y)m(our)e(lo)s(cal)i(new)e(v)m +(ersion)h(and)f(not)g(to)i(the)e(old)h(v)m(ersion)g(in)f +Fe(/usr/local)e Ff(or)i(wherev)m(er.)41 b(Y)-8 b(ou)30 +b(will)-94 5079 y(probably)f(end)g(up)f(with)i(error)f(messages)i(suc)m +(h)f(as)g Fe(undefined)45 b(symbols)h(...)39 b Ff(otherwise.)i(W)-8 +b(e)31 b(decided)f(to)g(use)-94 5192 y(the)e(In)m(tel)h(compiler)g(for) +f(b)s(oth)g(F)-8 b(ortran)29 b(and)f(C++)f(co)s(de.)40 +b(This)28 b(w)m(as)h(mainly)f(a)h(result)f(of)h(the)f(curren)m(t)g(v)m +(ersion)h(of)-94 5305 y(g++)h(not)g(ha)m(ving)h(the)g(complete)h(stl)e +(libraries)h(that)g(are)g(made)f(use)g(of)h(extensiv)m(ely)h(in)e(Carp) +s(et.)-94 5418 y(An)i(imp)s(ortan)m(t)h(asp)s(ect)g(of)g(the)g(In)m +(tel)g(compilers)h(is)e(that)i(they)f(come)g(in)g(v)-5 +b(arious)33 b(di\013eren)m(t)g(v)m(ersions.)48 b(Ev)m(en)33 +b(the)p eop end +%%Page: 4 4 +TeXDict begin 4 3 bop -94 100 a Fd(5)91 b(LIBRARIES)3332 +b Ff(4)-94 399 y(same)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(sa)m(y)j +(7.1\))f(comes)h(in)e(man)m(y)g(di\013eren)m(t)h(releases.)42 +b(Y)-8 b(ou)31 b(can)f(c)m(hec)m(k)i(this)f(b)m(y)f(t)m(yping)283 +624 y Fe(ifc)47 b(-V)47 850 y Ff(and)35 b(lik)m(ewise)i(for)e +Fe(icc)p Ff(.)55 b(Note)37 b(in)e(particular)h(the)g(date)g(of)f(build) +g(giv)m(en)h(in)f(the)h(form)f(of)h Fc(20030307Z)p Ff(.)j(This)-94 +963 y(corresp)s(onds)32 b(to)j(the)g(Marc)m(h)g(2003)h(build)d(of)h(v)m +(ersion)h(7.1)g(and)f(caused)g(di\016culties)h(for)f(me.)53 +b(I)34 b(encoun)m(tered)g(an)-94 1076 y(error)29 b(message)j(lik)m(e) +283 1302 y Fe(/home/terminator/sperhak)o(e/s)o(rc/2)o(004)p +1917 1302 29 4 v 28 w(02)p 2042 1302 V 34 w(16)p 2172 +1302 V 34 w(cactus-FMR/configs/test)o(01/)o(buil)o(d/Ca)o(rpe)o(tLib)o +(/)283 1415 y(data.cc\(173\):)92 b(error:)i(no)47 b(instance)e(of)i +(overloaded)e(function)h("dist::datatype")283 1528 y(matches)g(the)h +(argument)e(list)47 1753 y Ff(This)28 b(can)h(b)s(e)g(recti\014ed)g(b)m +(y)g(switc)m(hing)g(to)h(a)g(new)m(er)e(release,)j(at)f(least)g(the)g +(Septem)m(b)s(er)e(2003)j(build)d(of)h(v)m(ersion)-94 +1866 y(7.1)i(\(I'd)f(recommend)g(doing)h(that)g(for)f(b)s(oth)g(the)g +(F)-8 b(ortran)31 b(and)f(the)h(C++)e(compiler\).)47 +1979 y(Some)d(Cactus-Carp)s(et)g(users)f(ha)m(v)m(e)i(rep)s(orted)e +(problems,)h(suc)m(h)g(as)g(segmen)m(tation)i(faults,)f(b)m(y)f(using)g +(the)g(most)-94 2092 y(recen)m(t)39 b(v)m(ersions)f(of)h(the)f(In)m +(tel)h(compilers,)i(namely)d(the)h(Marc)m(h)g(2004)h(release)f(of)g(v)m +(ersion)f(7.1)i(and)d(the)i(latest)-94 2205 y(v)m(ersion)32 +b(8.0.)48 b(So)32 b(far)g(w)m(e)h(ha)m(v)m(e)g(b)s(een)f(using)g(the)g +(former)g(of)h(these)f(without)h(encoun)m(tering)g(an)m(y)f +(di\016culties,)i(but)-94 2318 y(y)m(ou)c(should)g(probably)f(stic)m(k) +j(to)f(the)f(Decem)m(b)s(er)i(or)e(Septem)m(b)s(er)g(2003)i(v)m(ersion) +f(of)f(7.1)i(if)e(y)m(ou)h(can.)47 2431 y(On)h(m)m(y)i(Gen)m(to)s(o)g +(Lin)m(ux)f(laptop,)i(on)e(the)h(other)f(hand,)h(I)f(exp)s(erienced)g +(trouble)g(with)g(the)h(Septem)m(b)s(er)e(2003)-94 2544 +y(v)m(ersion)e(of)h(7.1.)42 b(I)30 b(receiv)m(ed)i(error)e(messages)h +(lik)m(e)283 2770 y Fe(struct)46 b(stat)h(stat)p 1054 +2770 V 33 w(bbox)f(...)283 2883 y(Incomplete)f(components)g(in)i +(structure)e(not)i(allowed)47 3108 y Ff(at)35 b(compilation)i(\(I)e(ha) +m(v)m(e)h(forgotten)h(the)e(exact)i(w)m(ording,)f(but)e(y)m(ou'll)i +(recognize)h(it\).)56 b(I)35 b(managed)g(to)h(w)m(ork)-94 +3221 y(around)g(this)h(b)m(y)g(using)g(the)g(In)m(tel)h(F)-8 +b(ortran)38 b(and)f(C++)f(compilers)i(v)m(ersion)g(8.0)g(\(build)f +(Octob)s(er)g(2003\).)63 b(As)37 b(I)-94 3334 y(ha)m(v)m(e)g(not)g +(done)g(extensiv)m(e)h(co)s(de)f(dev)m(elopmen)m(t)h(on)f(this)f +(laptop,)j(though,)f(I)f(cannot)g(really)h(commen)m(t)f(on)g(the)-94 +3447 y(p)s(oten)m(tial)31 b(issues)f(concerning)h(the)g(8.0)g(v)m +(ersion)g(men)m(tioned)g(ab)s(o)m(v)m(e.)47 3673 y(T)-8 +b(rouble)35 b(ma)m(y)h(also)h(arise)f(from)f(prepro)s(cessing)g(in)h +(case)g(y)m(ou)g(are)g(using)g(RedHat)g(7.3)h(\(p)s(ossibly)e(also)h +(with)-94 3786 y(other)26 b(v)m(ersions\).)40 b(This)26 +b(is)h(essen)m(tially)h(related)g(to)f(the)f(treatmen)m(t)j(of)d(white) +h(space)g(in)f(F)-8 b(ortran)27 b(\014les.)40 b(Should)25 +b(y)m(ou)-94 3899 y(encoun)m(ter)32 b(rather)g(stupid)f(error)g +(messages)i(whic)m(h)f(clearly)h(indicate)g(that)f(prop)s(er)f(lines)h +(of)g(F)-8 b(ortran)33 b(ha)m(v)m(e)g(b)s(een)-94 4012 +y(corrupted)f(b)m(y)g(in)m(tro)s(ducing)h(white)g(space)g(\(e.g.)49 +b(line)33 b(breaks\))g(at)h(prepro)s(cessing,)f(y)m(ou)g(should)f(c)m +(hec)m(k)i(y)m(our)f(cpp)-94 4125 y(and)c(p)s(ossibly)h(do)m(wnload)g +(another)h(\(probably)f(older\))h(v)m(ersion.)41 b(Details)32 +b(ab)s(out)e(this)h(can)f(b)s(e)g(found)f(on)386 4289 +y Fe(http://www.cactuscode.org)o(/Do)o(cume)o(ntat)o(ion)o(/Arc)o(hite) +o(ctu)o(res/)o(Linu)o(x.h)o(tml)-94 4454 y Ff(whic)m(h)34 +b(also)h(giv)m(es)h(a)f(link)f(to)h(the)g(prepro)s(cessor)f(of)g(the)h +(older)g(RedHat)g(6.2)g(distribution.)53 b(I)34 b(do)m(wnloaded)h(that) +-94 4567 y(older)30 b(v)m(ersion)h(and)f(it)h(solv)m(ed)g(the)f(prepro) +s(cessing)g(problems)g(I)g(encoun)m(tered)h(prior)e(to)i(that.)-94 +4962 y Fg(5)134 b(Libraries)-94 5165 y Ff(As)33 b(m)m(uc)m(h)g(as)h +(the)g(compiler)g(issue)f(is)g(strongly)h(dep)s(enden)m(t)e(on)i(y)m +(our)f(platform,)h(the)g(exten)m(t)h(to)f(whic)m(h)f(y)m(ou)h(will)-94 +5278 y(ha)m(v)m(e)28 b(to)h(install)g(new)e(libraries)h(will)g(dep)s +(end)e(on)h(what)h(y)m(our)g(system)g(administrator)g(has)f(already)i +(done)e(for)h(y)m(ou.)-94 5391 y(Again)35 b(these)g(notes)h(cannot)f(b) +s(e)f(exhaustiv)m(e)i(and)e(rather)h(fo)s(cus)f(on)h(our)f(exp)s +(erience.)54 b(F)-8 b(eel)37 b(free,)f(as)f(b)s(efore,)g(to)-94 +5504 y(add)29 b(to)i(our)f(list.)p eop end +%%Page: 5 5 +TeXDict begin 5 4 bop -94 100 a Fd(5)91 b(LIBRARIES)3332 +b Ff(5)-94 399 y Fb(5.1)112 b(HDF)37 b(library)-94 570 +y Ff(The)31 b(HDF5)j(library)e(is)h(required)f(for)g(handling)g +(in/output)g(in)g(a)h(particular)g(binary)e(data)j(format.)47 +b(The)32 b(use)g(of)-94 683 y(these)38 b(libraries)g(in)g(Cactus/Carp)s +(et)g(is)g(en)m(tirely)h(optional,)i(but)c(in)h(the)g(end)f(I)h(found)e +(it)j(easier)g(to)f(install)h(the)-94 796 y(libraries)34 +b(than)f(to)i(con)m(vince)g(m)m(y)f(system)g(that)h(I)f(do)g(not)g(w)m +(an)m(t)h(to)f(use)g(them.)51 b(They)34 b(should)f(b)s(e)g(useful)g(in) +h(the)-94 909 y(long)c(run)f(an)m(yw)m(a)m(y)-8 b(,)33 +b(so)d(I)h(recommend)f(their)g(installation)i(unless)e(they)h(are)f +(already)h(part)g(of)f(y)m(our)g(system.)47 1022 y(Let)h(us)e(start)i +(with)f(the)h(hdf5)e(libraries.)41 b(The)30 b(binary)g(v)m(ersion)g +(can)h(b)s(e)f(obtained)h(from)792 1209 y Fe(ftp://ftp.ncsa.uiuc.edu/)o +(HDF)o(/HDF)o(5/hd)o(f5-)o(1.6.)o(1/bi)o(n)-94 1397 y +Ff(As)f(b)s(efore)g(I)g(prefer)g(compiling)h(the)f(source)h(whic)m(h)f +(y)m(ou)h(can)f(get)i(from)792 1585 y Fe(ftp://ftp.ncsa.uiuc.edu/)o +(HDF)o(/HDF)o(5/hd)o(f5-)o(1.6.)o(1/sr)o(c)-94 1772 y +Ff(Again)25 b(the)f(instructions)g(in)g(the)h Fe(INSTALL)d +Ff(\014le)i(are)h(straigh)m(tforw)m(ard.)40 b(I)24 b(included)f(the)i +(C++)e(in)m(terface)j(b)m(y)e(setting)-94 1885 y(the)30 +b(options)283 2111 y Fe(./configure)45 b(--enable-cxx)47 +2337 y Ff(and)37 b(used)f(the)i(v)-5 b(ariables)38 b +Fe(CPPFLAGS)d Ff(and)i Fe(LDFLAGS)f Ff(to)i(ensure)e(that)i(the)g(szip) +g(libraries)f(w)m(ere)h(found)e(\(see)-94 2450 y Fe(INSTALL)27 +b Ff(\014le\).)41 b(The)30 b(F)-8 b(ortran)30 b(in)m(terface)h(did)e +(not)h(w)m(ork)g(for)g(me,)g(so)g(I)g(did)f(not)h(enable)g(that.)41 +b(In)29 b(future)g(v)m(ersions)-94 2563 y(of)38 b(this)g(do)s(cumen)m +(t)g(this)g(issued)g(ma)m(y)h(b)s(e)f(readdressed.)63 +b(Finally)39 b(y)m(ou)g(ma)m(y)g(need)f(to)h(p)s(oin)m(t)f(the)h(en)m +(vironmen)m(t)-94 2676 y(v)-5 b(ariable)31 b Fe(LD)p +349 2676 29 4 v 33 w(LIBRARY)p 718 2676 V 33 w(PATH)e +Ff(in)h(y)m(our)h Fe(.bashrc)d Ff(or)i Fe(.cshrc)f Ff(to)i(the)g +(directory)g(con)m(taining)g(the)g(hdf5)f(library)-8 +b(.)-94 3032 y Fb(5.2)112 b(P)m(arallelization)-94 3204 +y Ff(This)35 b(subsection)h(is)g(relev)-5 b(an)m(t)37 +b(only)f(if)g(y)m(ou)h(plan)e(to)i(do)f(m)m(ulti)h(pro)s(cessor)e(runs) +g(\(whic)m(h)h(y)m(ou)g(are)h(rather)f(lik)m(ely)-94 +3316 y(to)31 b(do,)h(though,)f(since)g(it)h(is)f(a)h(k)m(ey)g(feature)f +(of)g(Cactus/Carp)s(et\).)44 b(There)30 b(are)i(v)-5 +b(arious)31 b(pac)m(k)-5 b(ages)33 b(that)f(tak)m(e)g(care)-94 +3429 y(of)i(parallelization,)k(suc)m(h)c(as)h Fe(MPICH)e +Ff(or)h Fe(lam)f Ff(and)h(y)m(our)g(mac)m(hine)h(will)g(probably)e +(come)j(equipp)s(ed)c(with)i(one)h(of)-94 3542 y(these.)47 +3655 y(I)d(ha)m(v)m(e)h(only)f(had)g(the)g(need)g(to)h(install)g(a)g +(message)g(passing)f(in)m(terface)i Fe(\(MPI\))d Ff(on)h(m)m(y)g +(laptop.)47 b(It's)32 b(a)h(single)-94 3768 y(pro)s(cessor)f(laptop)h +(but)f(y)m(ou)h(can)g(em)m(ulate)h(m)m(ulti-pro)s(cessor)f(runs)e(none) +h(the)h(less.)48 b(F)-8 b(urthermore)32 b(it)i(app)s(ears)d(to)-94 +3881 y(me)j(that)h(Carp)s(et)f(exp)s(ects)h Fe(MPI)f +Ff(at)h(least)h(in)e(the)h(form)f(of)h(a)g(header)f(\014le)h +Fe(mpi.h)p Ff(,)f(so)h(y)m(ou'd)g(b)s(etter)f(install)i(it.)53 +b(I)-94 3994 y(c)m(hose)31 b(the)f Fe(lam)g Ff(pac)m(k)-5 +b(age)32 b(for)e(this)h(purp)s(ose,)e(so)h(that)h(is)g(the)f(only)h +(exp)s(erience)f(I)h(ha)m(v)m(e)g(to)g(rep)s(ort.)47 +4107 y(Installation)g(of)g(this)f(pac)m(k)-5 b(age)33 +b(w)m(as)d(straigh)m(tforw)m(ard)i(on)e(m)m(y)g(Gen)m(to)s(o)i(Lin)m +(ux)e(laptop)h(b)m(y)f(t)m(yping)283 4333 y Fe(emerge)46 +b(lam-mpi)47 4558 y Ff(Dep)s(ending)31 b(on)h(y)m(our)g(Lin)m(ux)g +(\015a)m(v)m(or)h(installation)h(ma)m(y)e(b)s(e)g(done)g(di\013eren)m +(tly)-8 b(,)34 b(for)e(example)g(using)g Fe(rpm)p Ff(.)45 +b Fe(lam)-94 4671 y Ff(is)30 b(started)h(b)m(y)f(t)m(yping)283 +4897 y Fe(lamboot)47 5123 y Ff(and)f(then)h(executables)i(can)f(b)s(e)f +(started)h(via)283 5349 y Fe(mpirun)46 b(-np)29 b Fa(<)p +Ff(n)p Fa(>)h(<)p Ff(executable)p Fa(>)p eop end +%%Page: 6 6 +TeXDict begin 6 5 bop -94 100 a Fd(6)91 b(CREA)-8 b(TING)30 +b(A)h(CONFIGURA)-8 b(TION)2411 b Ff(6)47 399 y(where)38 +b Fa(<)p Ff(n)p Fa(>)g Ff(is)h(the)g(n)m(um)m(b)s(er)f(of)h(pro)s +(cessors)f(and)h Fa(<)p Ff(executable)p Fa(>)h Ff(the)f(binary)f +(\014le)h(\(with)g(full)g(path\))g(y)m(ou)-94 511 y(w)m(an)m(t)31 +b(to)g(run.)-94 798 y Fg(6)134 b(Creating)47 b(a)e(con\014guration)-94 +1004 y Fb(6.1)112 b(The)38 b(con\014guration)g(\014le)-94 +1176 y Ff(Ev)m(en)m(tually)29 b(w)m(e)g(can)g(start)g(writing)f(a)h +(con\014guration)g(\014le)f(for)g(a)h(Cactus-Carp)s(et)f(pro)5 +b(ject.)41 b(In)28 b(this)g(con\014guration)-94 1289 +y(\014le)37 b(the)g(paths)g(to)h(v)-5 b(arious)38 b(\014les,)h(suc)m(h) +e(as)g(libraries)h(and)e(compilers)i(need)f(to)h(b)s(e)f(sp)s +(eci\014ed.)60 b(Naturally)39 b(these)-94 1402 y(paths)29 +b(will)i(di\013er)f(from)g(mac)m(hine)h(to)g(mac)m(hine.)42 +b(In)29 b(this)i(subsection)f(I)g(will)h(assume)f(the)h(installation)h +(path)283 1514 y Fe(/usr/local/)p Fa(<)p Ff(name)p Fa(>)47 +1740 y Ff(for)e(most)h(libraries,)h(where)e Fa(<)p Ff(name)p +Fa(>)g Ff(is)h(the)g(name)g(of)f(the)h(library)-8 b(,)32 +b(e.g.)42 b Fe(hdf4)30 b Ff(or)h Fe(szip)p Ff(.)40 b(I)31 +b(further)e(assume)-94 1853 y(that)e(eac)m(h)h(of)g(these)f +(directories)h(con)m(tains)g(sub)s(directories)f Fe(lib)f +Ff(and)g Fe(include)f Ff(whic)m(h)i(con)m(tain)h(the)g(libraries)f(and) +-94 1966 y(header)j(\014les.)40 b(Similarly)31 b(I)f(presume)f(that)i +(all)h(compilers/prepro)s(cessors)e(are)h(installed)g(in)f(the)h +(directory)283 2192 y Fe(/usr/local/for)p 961 2192 29 +4 v 30 w(carpet/bin)47 2418 y Ff(This)f(is,)h(of)h(course,)f(not)g +(where)g(they)g(reside)g(on)g(y)m(our)g(mac)m(hine)h(\(nor)e(on)h +(mine\),)h(but)e(it'll)j(b)s(e)d(su\016cien)m(t)h(for)-94 +2531 y(this)h(do)s(cumen)m(t)h(and)g(y)m(ou)g(will)h(merely)f(ha)m(v)m +(e)h(to)g(replace)g(eac)m(h)g(of)g(these)f(paths)g(with)f(the)i +(correct)g(one)f(on)g(y)m(our)-94 2644 y(system.)47 2756 +y(W)-8 b(e)28 b(are)g(no)m(w)g(in)f(the)h(p)s(osition)f(to)i(create)g +(the)e(con\014guration)h(\014le,)h(sa)m(y)f Fe(mycode)p +2829 2756 V 33 w(carpet.cfg)d Ff(\(y)m(ou)j(can)g(store)-94 +2869 y(that)g(\014le)f(wherev)m(er)g(y)m(ou)h(think)f(con)m(v)m(enien)m +(t\).)42 b(W)-8 b(e)29 b(will)f(fo)s(cus)f(on)g(the)h(most)g(imp)s +(ortan)m(t)f(en)m(tries)h(in)g(this)f(\014le)g(only)-8 +b(.)-94 2982 y(Please)26 b(refer)e(to)i(the)f(Cactus)g(do)s(cumen)m +(tation)h(for)f(a)g(more)g(detailed)i(description.)38 +b(First)26 b(w)m(e)f(sp)s(ecify)g(information)-94 3095 +y(ab)s(out)30 b(the)g(compilers)283 3321 y Fe(F90)331 +b(/usr/local/for)p 1436 3321 V 30 w(carpet/bin/ifc)283 +3434 y(F77)g(/usr/local/for)p 1436 3434 V 30 w(carpet/bin/ifc)283 +3547 y(CC)378 b(/usr/local/for)p 1435 3547 V 31 w(carpet/bin/icc)283 +3660 y(CXX)331 b(/usr/local/for)p 1436 3660 V 30 w(carpet/bin/icc)283 +3773 y(CPP)g(/usr/local/for)p 1436 3773 V 30 w(carpet/bin/cpp)283 +3886 y(FPP)g(/usr/local/for)p 1436 3886 V 30 w(carpet/bin/cpp)47 +4111 y Ff(\(the)36 b(exact)h(amoun)m(t)f(of)f(white)h(space)g(b)s(et)m +(w)m(een)g(the)g(v)-5 b(ariables)36 b Fe(F90,)47 b(F77,...)53 +b Ff(and)35 b(their)h(en)m(tries)g(should)-94 4224 y(not)28 +b(matter)i(and)e(y)m(ou)h(ma)m(y)g(ev)m(en)h(put)e(in)g(an)h(=)f +(sign\).)41 b(Note)30 b(that)f(y)m(ou)g(do)f(not)h(need)g(to)g(sp)s +(ecify)g(the)f(full)h(path)f(if)-94 4337 y(y)m(our)h(en)m(vironmen)m(t) +g(v)-5 b(ariable)30 b Fe(PATH)e Ff(p)s(oin)m(ts)h(to)h(the)f(correct)i +(v)m(ersions)e(of)h(the)f(compilers/prepro)s(cessors)g(already)-8 +b(.)-94 4450 y(Next)34 b(w)m(e)g(need)f(to)h(sp)s(ecify)f(information)h +(ab)s(out)f(the)h(message)g(passing)g(in)m(terface.)51 +b(In)33 b(m)m(y)g(case)i(that)f(w)m(as)g Fe(lam)p Ff(,)-94 +4563 y(so)c(the)h(next)f(en)m(tries)h(in)f(m)m(y)h(\014le)f +Fe(mycode)p 1367 4563 V 33 w(carpet.cfg)e Ff(are)283 +4789 y Fe(MPI)685 b(LAM)283 4902 y(LAM)p 433 4902 V 33 +w(INC)p 610 4902 V 34 w(DIR)331 b(/usr/include)283 5015 +y(LAM)p 433 5015 V 33 w(LIB)p 610 5015 V 34 w(DIR)g(/usr/lib)47 +5240 y Ff(In)34 b(case)i(y)m(ou)g(are)f(using)g(a)g(di\013eren)m(t)h +Fe(MPI)e Ff(pac)m(k)-5 b(age)37 b(refer)e(to)h(the)f(Cactus)h(users)e +(guide)h(to)h(\014nd)e(the)h(correct)-94 5353 y(en)m(try)j(for)g +Fe(MPI)p Ff(.)f(Mak)m(e)j(sure)d(that)i(y)m(ou)f(sp)s(ecify)g(the)g +(correct)h(paths)f(for)g(the)g(corresp)s(onding)f(header)h(\014les)g +(and)-94 5466 y(libraries)30 b(\(ask)h(y)m(our)f(sys-admin)g(if)g +(necessary\).)p eop end +%%Page: 7 7 +TeXDict begin 7 6 bop -94 100 a Fd(6)91 b(CREA)-8 b(TING)30 +b(A)h(CONFIGURA)-8 b(TION)2411 b Ff(7)-94 399 y(Next)32 +b(w)m(e)g(sp)s(ecify)f(the)h(libraries)f(to)h(b)s(e)f(included)g(in)g +(the)h(compilation.)45 b(F)-8 b(or)33 b(the)e(7.1)i(v)m(ersion)f(of)f +(the)h(In)m(tel)g(com-)-94 511 y(pilers)e(in)g(com)m(bination)h(with)g +Fe(lam)e Ff(w)m(e)i(found)e(the)h(follo)m(wing)i(to)f(w)m(ork)g(\014ne) +283 737 y Fe(LIBS)567 b(crypt)46 b(lapack)g(blas)h(g2c)g(z)g(BINDF90)f +(CEPCF90)g(F90)h(IEPCF90)e(PEPCF90)1039 850 y(POSF90)h(cprts)g(cxa)h +(guide)f(imf)h(intrins)f(irc)h(ircmt)f(ompstub)g(svml)1039 +963 y(unwind)g(X11)h(ieeeio)f(df)h(m)g(mpi)g(lam)g(pmpi)47 +1189 y Ff(\(all)30 b(in)f(one)g(line\).)41 b(It)29 b(go)s(es)h(without) +f(sa)m(ying)h(that)g(all)g(these)g(libraries)f(m)m(ust)g(b)s(e)f +(installed)i(on)f(y)m(our)g(mac)m(hine.)-94 1302 y(Most)d(of)g(them)f +(probably)g(are)h(and)f(the)h(installation)h(of)f(some)g(that)g(ma)m(y) +g(not)g(is)g(describ)s(ed)e(in)i(more)f(detail)i(ab)s(o)m(v)m(e)-94 +1415 y(in)j(Sec.)15 b(5.)-94 1528 y(The)32 b(paths)h(to)g(some)h(of)f +(these)h(libraries)f(ma)m(y)g(not)h(b)s(e)e(kno)m(wn)h(automatically)i +(b)m(y)e(the)h(link)m(er)f(and)f(needs)h(to)h(b)s(e)-94 +1641 y(sp)s(eci\014ed)29 b(separately)-8 b(.)43 b(This)29 +b(is)i(done)f(with)g(the)g(v)-5 b(ariable)31 b Fe(LIBDIRS)e +Ff(whic)m(h)h(I)g(had)g(to)h(set)g(to)283 1866 y Fe(LIBDIRS)424 +b(/usr/local/intel/compiler)o(70/)o(ia32)o(/lib)1039 +1979 y(/usr/X11R6/lib)44 b(/usr/local/IEEEIO/lib)e(/usr/local/hdf4/lib) +1039 2092 y(/usr/lib/gcc-lib/i386-r)o(edha)o(t-li)o(nux)o(/egc)o(s-2.)o +(91.)o(66)47 2318 y Ff(\(again)31 b(on)g(all)g(in)f(one)h(line\).)41 +b(As)30 b(b)s(efore)g(y)m(ou)h(will)g(ha)m(v)m(e)g(to)h(adjust)d(this)i +(line)f(to)h(y)m(our)g(demands.)-94 2431 y(Finally)g(I)f(set)283 +2544 y Fe(PTHREADS)377 b(yes)47 2770 y Ff(though)30 b(I)g(am)g(not)h +(sure)f(what)g(this)g(is)h(exactly)h(doing.)-94 3013 +y Fb(6.2)112 b(mak)m(e-con\014g)-94 3185 y Ff(In)29 b(order)h(to)h +(create)h(a)f(con\014guration)g(c)m(hange)g(in)m(to)g(the)g +Fe(Cactus)e Ff(directory)i(and)e(t)m(yp)s(e)283 3410 +y Fe(make)g Fa(<)p Ff(name)p Fa(>)p Fe(-config)45 b(options=)p +Fa(<)p Ff(con\014g-\014le)p Fa(>)47 3636 y Ff(where)37 +b(y)m(ou)g(can)h(c)m(ho)s(ose)h(an)e(arbitrary)g Fa(<)p +Ff(name)p Fa(>)g Ff(for)g(y)m(our)h(con\014guration)g(and)e +Fa(<)p Ff(con\014g-\014le)p Fa(>)i Ff(is)f(the)h(\014le)-94 +3749 y(\(with)30 b(full)g(path\))h(created)g(in)f(the)h(previous)e +(subsection.)-94 3993 y Fb(6.3)112 b(Creating)38 b(a)f(thornlist)-94 +4164 y Ff(Next)c(y)m(ou)f(will)h(need)f(to)h(generate)h(a)e(thornlist,) +h(i.e.)16 b(a)33 b(list)g(of)f(all)i(those)e(thorns)g(y)m(ou)g(w)m(an)m +(t)h(to)g(compile.)48 b(This)31 b(is)-94 4277 y(done)f(in)g(the)g +Fe(Cactus)f Ff(directory)i(b)m(y)f(t)m(yping)283 4503 +y Fe(make)f Fa(<)p Ff(name)p Fa(>)p Fe(-thornlist)47 +4729 y Ff(where)k Fa(<)p Ff(name)p Fa(>)h Ff(m)m(ust)g(b)s(e)g(the)g +(same)h(as)f(in)g(setting)h(up)f(the)g(con\014guration.)53 +b(This)33 b(command)h(will)h(searc)m(h)-94 4842 y(all)f(arrangemen)m +(ts)h(for)f(all)g(thorns)f(and)h(ev)m(en)m(tually)h(prompt)e(y)m(ou)i +(whether)e(y)m(ou)h(w)m(an)m(t)h(to)f(mo)s(dify)f(the)h(list.)52 +b(As)-94 4955 y(all)33 b(thorns)e(are)i(activ)-5 b(ated)34 +b(b)m(y)f(default)f(y)m(ou)h(do)f(w)m(an)m(t)h(to)g(mo)s(dify)f(the)h +(list)g(and)e(t)m(yp)s(e)i Fc(yes)f Ff(and)g(hit)g(return.)46 +b(This)-94 5068 y(will)33 b(op)s(en)f(an)h(editor)h(session)f(where)g +(y)m(ou)h(can)f(unselect)h(thorns)e(b)m(y)h(putting)g(a)h(hash)e('#')h +(at)h(the)g(b)s(eginning)e(of)-94 5180 y(the)e(line.)41 +b(Unselect)32 b(all)f(thorns)f(in)g(this)g(w)m(a)m(y)h(except)h(for)e +(the)g(follo)m(wing)283 5406 y Fe(CactusBase/Boundary)p +eop end +%%Page: 8 8 +TeXDict begin 8 7 bop -94 100 a Fd(6)91 b(CREA)-8 b(TING)30 +b(A)h(CONFIGURA)-8 b(TION)2411 b Ff(8)283 399 y Fe +(CactusBase/CartGrid3D)283 511 y(CactusBase/CoordBase)283 +624 y(CactusBase/IOBasic)283 737 y(CactusBase/IOUtil)283 +850 y(CactusBase/LocalInterp)283 963 y(CactusBase/SymBase)283 +1076 y(CactusBase/Time)283 1189 y(Carpet/Carpet)283 1302 +y(Carpet/CarpetIOASCII)283 1415 y(Carpet/CarpetIOHDF5)283 +1528 y(Carpet/CarpetInterp)283 1641 y(Carpet/CarpetLib)283 +1753 y(Carpet/CarpetReduce)283 1866 y(Carpet/CarpetRegrid)283 +1979 y(Carpet/CarpetSlab)283 2092 y(CarpetExtra/IDScalarWave)283 +2205 y(CarpetExtra/WaveToyF77)47 2431 y Ff(Before)31 +b(y)m(ou)g(compile,)g(y)m(ou)g(need)f(to)h(apply)f(one)h(mo)s +(di\014cation)g(to)g(the)f(\014le)47 2657 y Fe(arrangements/CarpetExtr) +o(a/Wa)o(veT)o(oyF7)o(7/co)o(nfi)o(gura)o(tion)o(.cc)o(l)47 +2883 y Ff(namely)e(remo)m(v)m(e)h(the)e(en)m(try)h Fe(Cart3d)e +Ff(from)h(the)h(list)g(of)g Fe(REQUIRED)d Ff(thorns.)39 +b(This)27 b(thorn)g(is)h(actually)h(required)-94 2995 +y(but,)37 b(for)g(some)g(reason)g(unkno)m(wn)e(to)i(me,)i(m)m(ust)d +(not)h(b)s(e)f(men)m(tioned)i(here.)59 b(It)37 b(ga)m(v)m(e)i(an)d +(error)h(message)g(com-)-94 3108 y(plaining)31 b(that)i(there)f(is)g +(no)g(thorn)f Fe(Cart3d)p Ff(.)43 b(Ha)m(ving)33 b(applied)f(this)g(mo) +s(di\014cation)g(y)m(ou)g(can)g(start)h(compiling)f(b)m(y)-94 +3221 y(t)m(yping)283 3447 y Fe(make)d Fa(<)p Ff(name)p +Fa(>)47 3560 y Ff(There)c(is)h(no)g(guaran)m(tee,)j(but)c(at)i(least)g +(y)m(ou)g(ha)m(v)m(e)g(a)f(c)m(hance)h(of)f(compiling)h(through)f +(without)g(error)f(messages)-94 3673 y(\(do)h(not)h(b)s(e)e(in)m +(timidated)j(b)m(y)e(the)g(o)s(dd)g(w)m(arning,)h(though\).)39 +b(In)26 b(case)h(y)m(ou)g(still)g(cannot)g(compile,)h(please)g(add)d(y) +m(our)-94 3786 y(wisdom)k(to)i(this)g(do)s(cumen)m(t)f(to)h(help)f +(future)f(users.)-94 4029 y Fb(6.4)112 b(Running)38 b(the)f(\014rst)h +(application:)51 b(W)-9 b(a)m(v)m(eT)g(o)m(yF77)-94 4201 +y Ff(If)24 b(y)m(ou'v)m(e)i(gotten)g(this)e(far,)i(y)m(ou)f(should)e(b) +s(e)h(able)h(to)g(run)f(y)m(our)g(\014rst)g(sim)m(ulation)h(with)g +(mesh)f(re\014nemen)m(t.)38 b(Change)-94 4314 y(to)24 +b(some)g(con)m(v)m(enien)m(t)i(directory)e(for)f(this)h(purp)s(ose)e +(and)h(cop)m(y)h(o)m(v)m(er)h(from)e(relativ)m(e)j(to)e(the)g(main)g +Fe(Cactus)e Ff(directory)-94 4427 y(the)30 b(parameter)h(\014le)283 +4653 y Fe(arrangements/CarpetExtra)o(/Wa)o(veTo)o(yF77)o(/pa)o(r/wa)o +(veto)o(yf7)o(7)p 2681 4653 29 4 v 29 w(rad)p 2854 4653 +V 33 w(full)p 3079 4653 V 33 w(rl2.par)47 4878 y Ff(Y)-8 +b(ou)27 b(will)g(need)g(to)h(adjust)e(this)h(parameter)g(\014le)g(a)g +(little)i(to)f(get)g(it)f(running)e(\(I)i(am)g(not)h(a)m(w)m(are)g(of)f +(a)g(W)-8 b(a)m(v)m(eT)g(o)m(y-)-94 4991 y(parameter)36 +b(\014le)g(that)g(do)s(es)f(not)h(require)g(suc)m(h)f(minor)h(mo)s +(di\014cation\).)57 b(First)36 b(add)f(to)i(the)f(\014rst)f(line)h(b)s +(eginning)-94 5104 y(with)i Fe(ActiveThorns)e Ff(the)k(thorns)e +Fe(Slab)47 b(CoordBase)e(SymBase)37 b Ff(\(that)j(is)g(within)e(the)i +(quotes\).)68 b(Finally)40 b(y)m(ou)-94 5217 y(should)29 +b(b)s(e)h(able)h(to)g(run)e(this)h(example)h(b)m(y)f(t)m(yping)h +(something)g(lik)m(e)p eop end +%%Page: 9 9 +TeXDict begin 9 8 bop -94 100 a Fd(6)91 b(CREA)-8 b(TING)30 +b(A)h(CONFIGURA)-8 b(TION)2411 b Ff(9)283 399 y Fe(mpirun)46 +b(-np)h(1)22 b Ff(~)-7 b Fe(/Cactus/exe/cactus-)p Fa(<)p +Ff(name)p Fa(>)25 b Fe(wavetoyf77)p 2693 399 29 4 v 31 +w(rad)p 2868 399 V 34 w(full)p 3094 399 V 33 w(rl2.par)47 +624 y Ff(where)30 b Fa(<)p Ff(name)p Fa(>)h Ff(is)g(again)h(the)f(name) +g(of)g(the)g(con\014guration)h(ab)s(o)m(v)m(e.)43 b(In)31 +b(case)h(y)m(ou)f(do)g(not)g(ha)m(v)m(e)h(y)m(our)f(main)-94 +737 y Fe(Cactus)d Ff(directory)j(under)e(y)m(our)h(home)h(directory)f +(y)m(ou)h(will)g(need)f(to)h(adjust)f(that)h(part)f(in)g(the)h +(command.)-94 850 y(By)25 b(running)f(this)i(command)f(y)m(ou)h(should) +e(obtain)i(a)g(directory)g Fe(wavetoyf77)p 2626 850 V +32 w(rad)p 2802 850 V 33 w(full)p 3027 850 V 34 w(rl2)e +Ff(with)h(the)h(resulting)-94 963 y(data)31 b(in)f(ascii)h(format.)41 +b(Y)-8 b(ou)31 b(can)g(c)m(hec)m(k)h(for)e(example)h(the)f(\014le)283 +1189 y Fe(wavetoyf77)p 769 1189 V 32 w(rad)p 945 1189 +V 33 w(full)p 1170 1189 V 33 w(rl2/phi.x.asc)47 1415 +y Ff(\(relativ)m(e)i(to)f(the)f(directory)g(where)g(y)m(ou)g(ran)f(the) +h(co)s(de\))h(whic)m(h)e(lists)i(the)f(data)h(on)e(the)h(separate)h +(re\014nemen)m(t)-94 1528 y(lev)m(els.)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/Carpet/CarpetWeb/doc/internals.ps b/Carpet/CarpetWeb/doc/internals.ps new file mode 100644 index 000000000..b04971d46 --- /dev/null +++ b/Carpet/CarpetWeb/doc/internals.ps @@ -0,0 +1,2859 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software +%%Title: internals.dvi +%%Pages: 13 +%%PageOrder: Ascend +%%BoundingBox: 0 0 612 792 +%%DocumentFonts: Palatino-Roman CMMI12 Palatino-Bold CMTT10 +%%+ Palatino-Italic EURM10 CMR10 CMSY10 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips internals.dvi -o internals.ps +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2003.05.03:1529 +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: 8r.enc +% File 8r.enc as of 2002-03-12 for PSNFSS 9 +% +% This is the encoding vector for Type1 and TrueType fonts to be used +% with TeX. This file is part of the PSNFSS bundle, version 9 +% +% Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt +% +% Idea is to have all the characters normally included in Type 1 fonts +% available for typesetting. This is effectively the characters in Adobe +% Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro. +% +% Character code assignments were made as follows: +% +% (1) the Windows ANSI characters are almost all in their Windows ANSI +% positions, because some Windows users cannot easily reencode the +% fonts, and it makes no difference on other systems. The only Windows +% ANSI characters not available are those that make no sense for +% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen +% (173). quotesingle and grave are moved just because it's such an +% irritation not having them in TeX positions. +% +% (2) Remaining characters are assigned arbitrarily to the lower part +% of the range, avoiding 0, 10 and 13 in case we meet dumb software. +% +% (3) Y&Y Lucida Bright includes some extra text characters; in the +% hopes that other PostScript fonts, perhaps created for public +% consumption, will include them, they are included starting at 0x12. +% +% (4) Remaining positions left undefined are for use in (hopefully) +% upward-compatible revisions, if someday more characters are generally +% available. +% +% (5) hyphen appears twice for compatibility with both ASCII and Windows. +% +% (6) /Euro is assigned to 128, as in Windows ANSI +% +/TeXBase1Encoding [ +% 0x00 (encoded characters from Adobe Standard not in Windows 3.1) + /.notdef /dotaccent /fi /fl + /fraction /hungarumlaut /Lslash /lslash + /ogonek /ring /.notdef + /breve /minus /.notdef +% These are the only two remaining unencoded characters, so may as +% well include them. + /Zcaron /zcaron +% 0x10 + /caron /dotlessi +% (unusual TeX characters available in, e.g., Lucida Bright) + /dotlessj /ff /ffi /ffl + /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef + % very contentious; it's so painful not having quoteleft and quoteright + % at 96 and 145 that we move the things normally found there down to here. + /grave /quotesingle +% 0x20 (ASCII begins) + /space /exclam /quotedbl /numbersign + /dollar /percent /ampersand /quoteright + /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash +% 0x30 + /zero /one /two /three /four /five /six /seven + /eight /nine /colon /semicolon /less /equal /greater /question +% 0x40 + /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O +% 0x50 + /P /Q /R /S /T /U /V /W + /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore +% 0x60 + /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o +% 0x70 + /p /q /r /s /t /u /v /w + /x /y /z /braceleft /bar /braceright /asciitilde + /.notdef % rubout; ASCII ends +% 0x80 + /Euro /.notdef /quotesinglbase /florin + /quotedblbase /ellipsis /dagger /daggerdbl + /circumflex /perthousand /Scaron /guilsinglleft + /OE /.notdef /.notdef /.notdef +% 0x90 + /.notdef /.notdef /.notdef /quotedblleft + /quotedblright /bullet /endash /emdash + /tilde /trademark /scaron /guilsinglright + /oe /.notdef /.notdef /Ydieresis +% 0xA0 + /.notdef % nobreakspace + /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot + /hyphen % Y&Y (also at 45); Windows' softhyphen + /registered + /macron +% 0xD0 + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0xC0 + /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis +% 0xD0 + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0xE0 + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis +% 0xF0 + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +] def + +%%EndProcSet +%%BeginProcSet: aae443f0.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10 +% +/TeXaae443f0Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa +/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi +/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf +/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft +/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle +/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle +/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash +/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow +/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p +/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector +/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta +/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon +/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: 09fbbfac.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 +/TeX09fbbfacEncoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi +/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown +/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla +/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam +/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft +/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one +/two /three /four /five /six /seven /eight /nine /colon /semicolon /less +/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N +/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright +/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l +/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright +/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi +/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown +/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: f7b6d320.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 +% cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 +% cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 +% cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 +% +/TeXf7b6d320Encoding [ +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega +/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve +/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash +/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand +/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen +/period /slash /zero /one /two /three /four /five /six /seven /eight +/nine /colon /semicolon /exclamdown /equal /questiondown /question /at +/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X +/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent +/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u +/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space +/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef +/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute +/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE +/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: bbad153f.enc +% Thomas Esser, Dec 2002. public domain +% +% Encoding for: +% cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 +% +/TeXbbad153fEncoding [ +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /circlemultiply +/circledivide /circledot /circlecopyrt /openbullet /bullet +/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal +/greaterequal /precedesequal /followsequal /similar /approxequal +/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows +/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast +/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup +/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional +/prime /infinity /element /owner /triangle /triangleinv /negationslash +/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur +/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K +/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection +/unionmulti /logicaland /logicalor /turnstileleft /turnstileright +/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright +/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv +/backslash /wreathproduct /radical /coproduct /nabla /integral +/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section +/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/minus /periodcentered /multiply /asteriskmath /divide /diamondmath +/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef +/circlemultiply /circledivide /circledot /circlecopyrt /openbullet +/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset +/lessequal /greaterequal /precedesequal /followsequal /similar +/approxequal /propersubset /propersuperset /lessmuch /greatermuch +/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef +] def + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 +ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ +pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get +div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type +/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end +definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup +sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll +mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ +exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} +forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def +end + +%%EndProcSet +%%BeginProcSet: special.pro +%! +TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N +/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N +/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N +/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{ +/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho +X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B +/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{ +/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known +{userdict/md get type/dicttype eq{userdict begin md length 10 add md +maxlength ge{/md md dup length 20 add dict copy def}if end md begin +/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S +atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{ +itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll +transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll +curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf +pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack} +if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 +-1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 +get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip +yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub +neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{ +noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop +90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get +neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr +1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr +2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 +-1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S +TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{ +Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale +}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState +save N userdict maxlength dict begin/magscale true def normalscale +currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts +/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x +psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx +psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub +TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def +@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll +newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto +closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N +/@beginspecial{SDict begin/SpecialSave save N gsave normalscale +currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N} +N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs +neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate +rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse +scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg +lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx +ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N +/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{ +pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave +restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B +/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1 +setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY +moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix +matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc +savematrix setmatrix}N end + +%%EndProcSet +TeXDict begin @defspecial + + /DvipsToPDF { 72.27 mul Resolution div } def /PDFToDvips { 72.27 div +Resolution mul } def /HyperBorder { 1 PDFToDvips } def /H.V {pdf@hoff +pdf@voff null} def /H.B {/Rect[pdf@llx pdf@lly pdf@urx pdf@ury]} def +/H.S { currentpoint HyperBorder add /pdf@lly exch def dup DvipsToPDF +/pdf@hoff exch def HyperBorder sub /pdf@llx exch def } def /H.L { 2 +sub dup /HyperBasePt exch def PDFToDvips /HyperBaseDvips exch def currentpoint +HyperBaseDvips sub /pdf@ury exch def /pdf@urx exch def } def /H.A { +H.L currentpoint exch pop vsize 72 sub exch DvipsToPDF HyperBasePt +sub sub /pdf@voff exch def } def /H.R { currentpoint HyperBorder sub +/pdf@ury exch def HyperBorder add /pdf@urx exch def currentpoint exch +pop vsize 72 sub exch DvipsToPDF sub /pdf@voff exch def } def systemdict +/pdfmark known not {userdict /pdfmark systemdict /cleartomark get put} +if + +@fedspecial end +%%BeginFont: CMSY10 +%!PS-AdobeFont-1.1: CMSY10 1.0 +%%CreationDate: 1991 Aug 15 07:20:57 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.0) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMSY10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.035 def +/isFixedPitch false def +end readonly def +/FontName /CMSY10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-29 -960 1116 775}readonly def +/UniqueID 5000820 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 +7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 +A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 +E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A +221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A +27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF +5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 +0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 +DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A +71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 +4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C +515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD +5F3D999EFA3E40D4C38BED0D7A872251C333BA38795F6783D83611E7CE9E146E +537483C41D947F2E50AEC949349321A32EFDBAFCA64A0F39824B350F095D4707 +604DA3982669C5EDC911D14FB536BADF6D92EE1FEAEA37FA0314FDF47F478F8B +82ADE6BB0572B4D59EF1AAE6E422AC4BB5BC4E76480FFFCFD83C24EA5433F2FB +480085EAF4F909107F2664F8945891393AE01C4E028C48BFE1E057610AA6E687 +1189C983219E05511E24053C8449DEC88BBB16B1DE62526B82A14C2826A92DBC +92D6F49F965B648EC0A8326E44E86E75E6B22927D200EB2939A8FF1976D83EEA +05DE5D5C775C3CF2C2851A73DB55850AB9C2664385BDE14390D00580E8C3F927 +766A8BE1042F5E6DBC3647F5B59C4CA091E9E90CD7CBDF4F51E1A35028EE4568 +6D0F6C27727A885B5F4335D4905717AE12C20B066DFB37C2D7EC40878FD9676E +595A457A1944E84F4D067ADABF3CE385C120C6F4692E482E473041355F9B038E +0D713B41D9AE558425071A19 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMR10 +%!PS-AdobeFont-1.1: CMR10 1.00B +%%CreationDate: 1992 Feb 19 19:54:52 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMR10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch false def +end readonly def +/FontName /CMR10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-251 -250 1009 969}readonly def +/UniqueID 5000793 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 +87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F +D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 +92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C +295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 +409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C +4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF +2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E +0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E +B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 +24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B +43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF +D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 +5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC +96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 +7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3C8578EF9A20A0E06E +4F7ADDAF0E7D1E182D115BF1AD931977325AD391E72E2B13CC108E3726C11099 +E2000623188AAAC9F3E233EB253BDD8B0A4759A66A113E066238B0086AC1B634 +5ABFF90E4B5ED3FA69C22541981B2BFC9710AEF6B50A8BB53431C7B4D380D721 +639E005D6B4688EE16BFF48443E7C9E5FB5BC5883E271CB03428966C96B6988B +2C9127404E8C64B122D405610B1207E61D6CB678BF414E64299C22D6B8DA233B +8E0E897EEAF81E43E962BD1DE1D8F24C8350761B0E688E433D01BCC9ADD5857E +BE9564F01D501D5F99C4272CA490100395D23DEC1BE59A6DE8D20B90C61434C9 +062B6856C5C61184BD58F20E01B447F6140CB149BD370D59069F121FCA8AC937 +4A86AF9E00E141BE1F2B0DEF30A4AC17817E4B58B1A8921B990F237E64A938AD +284A1DAB4F3BF58231B22F57219F9BF0E38585D631CF24EB1DDCBB1EA6E3DB31 +88D7C3F8D9EAF27F7239557A2D2EA7AC5AED0DC02CDB0A2C9E4D64C24C3616F3 +AA98D473C46596DC975C149FD66CE806C4529D92B0173BBCDA0D18B2956E0F51 +179D7861557A915D2AA59CE21800265DAF737E83C7B4E9C41F80195E51A95158 +F9CEAFA5ABDEBCDF332BC7107FEA70FDE84269ACCD15BB35D961846217D54B02 +88995D6A3304BF88EEA7ACB9C548195606C4E601789F3562E89A69C40BEA9167 +D3F49BF39DB2D57630674554F297DA605A079220182EA752B31072D46E091410 +D021BFC8B8A1E4D6E2AC110AE143BE32F407F6AAD2FEE259839BF6AEE1B7FAC4 +7597F8E3347EFB48F3DDE6E9198354D1D408AD5657D41F5D11FE6B805FBFA2E2 +F92F6332DDAD4AE77D30758E37B67866D6CEA29B6027812977B8D68A570904DF +47550EA6773ED0DFE830F8B80BBECAA80EC33DC5ACDD4E683E5B688F5D1F14FA +A5778EE610C3FCF3429021E2A014F8B0B97BEAFFA7F3868E61B35678D54173BC +93A7BF29949C2814BB364594DA9ABAA2F2AEC654B0FB8C022B5775582D8CBA0D +D1AD19333BD74415F40C24E839E48B674B003359EAB05AC8A0ABD358DA7E999D +1AFE8359E410DE798A76FBF289C701E5DC730913F6FC2FD9693C34013B47C8CF +84670F3925D2FB69CA3C2C61029C9FD1066AD2C1D640A556E226D7056118CBBB +CB4C859D64B04B08751F3EFBDEF6F1F352DCBD682F73C89910D7A937D07ED50E +5DCA560DBAD3A96F708B639F62730A566E7D4D3C6C89BF3868707B721ED3ECD8 +F185314C9D5B4E8456BC0B096F99F1A9AD67E40E0EBF19B06BFE1DE82BA32980 +AA +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMTT10 +%!PS-AdobeFont-1.1: CMTT10 1.00B +%%CreationDate: 1992 Apr 26 10:42:42 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.00B) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMTT10) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle 0 def +/isFixedPitch true def +end readonly def +/FontName /CMTT10 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-4 -235 731 800}readonly def +/UniqueID 5000832 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 +016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 +9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F +D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 +469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 +2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 +38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF +D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 +EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 +A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 +F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 +4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA +6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E +A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B +E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F +1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 +452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF +8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 +5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA +DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 +BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 +741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 +E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 +E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 +D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE +C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC +FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B +984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876DF448467B625 +2BA3AEEEC60550844F5300D7FDCBE636D5951411C6F46CF31F03D3517A96309E +02D0DDC6D8C0C89D2FB8E4412BEC66D17F41F8080421508CCDAAD3FF7A56D365 +2E26AC2815B518D59BE84245FD6631EE73EAF3BE24749C77B73FFBF6CB06BC58 +1C92ABA181B7CF0FF955A8DA29F117536ED7582730146D03BB3BD8F78EE53D23 +FB86AD14321792A02D3AC0B5F092893B8E794A8EBEF6C27AC845341C42B5A3A7 +5F4E0503B689549956E1E8BDB956F8A0DB4097D3F3C3DB7E790548EA563A9064 +13412F7046CE91024D85A7904266ABB0916984F7CC897996403009A0CF038F60 +9691D46D36C9E44B1FCCB664F3C4CE59ECDFEAC5B1328DCE8150A80D8D3EA38F +D8F7AA322C87DE4B63A466F2DBE6CF06444AF8B04DB5CFFAADC3B41087F68326 +C64397D3FE523A8C633407C74D939BA8D3A59811B2C3BAB68598FE1A396EC727 +BB76DBEEFB43AD7CAF4F67DE5CAF94525A13219303CBBDBFFF5226B37A12A825 +14DB9B144641A5B5FDEA9E0E3729A0C1642F9E92478DA82596ADB0F4D7D3DBB1 +0F7F46B73AE32DBD40DE106093A3E5B1FAE73E36B3DD2B06FDFF75A74D09CC77 +6FE24D7B8570384920F97BB3B61440D03C443B9AB845D74581506FBF42389210 +5CFC9CD11E0B290F32D4FCE38EFF176A3F94B0EE343F97926EB77A87F7C3174A +EAA273A07D15057253BB7B201D64A88705115E827DAC9484667169699465AD6E +DC4EBB4807163FEA3BE751DD38532E01152036AF77CAA574919A47D207439C42 +602B573665ED644B3B345FC1E0CEAB244A45B281739E49700D090B27868AE86C +BD1B709BC93BE9A8A9A6B136D83CEA8D9691E64833B16F5BD0CCBEC9251E35FD +A90C35BA35FB21D4D69970BD7E1CFBBDD10555C784C633425E9EE81724A19ABB +7CF38AE2E3CF740BE6BD4E3568281F8095697C65AD47D495CBA676EF40F0B1FD +936B691C913F9AB2D94C49731AE196BC1E5BDC14475DD84F191537868B71C322 +102F98DD2B2112ED405240A6FD2D978D59C962F462855104EF091F9681798132 +9071596DC768A9A5F97AD6B8E03DA12FCD816FDF771F8841C42568D0865454CE +5F51B3FF32DD31C08185D082D30084D7A01E6D10225EEF66710E240624D826BB +1B67FC08FD883CB4F7BF141146E4AAC60518B6A48A442379C909149D9CD3A9DD +FEB0922413406CB2EFAA92C305CDBAE3999908DAEC0224D3E4058E13234E4D0B +130B526B32E584A8BD187B402B79B6073AA41E82B2A90CA92B5203FAEB01FB28 +FFC3C40C01964FA951E9355FAB886880B7AC22E4A97E393DE7D944566AEAAD25 +D09B6607A1D36AACCD897AD6326A7CA0CD8E353FCCD311288CEAA0D6B1C07051 +8181E63C7F43591077F094E614FC4B69BBFE316352EC009A548D164DD0644BC1 +855C9B9AA37A4CDA9ED95C25CD349CA2D1CE8702B6225FE4296BDDC3688CD388 +506DA287D773851052881FB94E740E775D8FAF07FBDCF305ABB2A052229FBE92 +92F40FDADEB1F6607D2D97C66C9653CE8BDDCDE8AF24330CB7FC4F25B0AFA2F9 +75CA09BE8722864055FAF1DAFFA43B810E68E68579A50E105B8F14C29C8349A7 +4F0392CAE19BA887801A1F0F6AF05A45311735A1ECDDCD3B82AFBC3FED70A08C +D0A0DEF6D595576F4F8C5F047EA48200A510327726B7996078820057EA17CB5D +8272C7C38D6893D0DCB9B56C4969AC413CC888A082CEF94DD0DB518D011F1118 +26FF66E107E88B9187F0F236CA0218CBEF4B532A106ACB6A74FDC8675EF30837 +F6BD9AAFBE6DDB238227BB28D60DBDA3001CB2336BE3C4C263362CAC9023E01C +E05A32BB68217CE6C1A8CADFCB97DC65C7697790CDD284E2DC8F3CDE3A29548F +F4A0771F20E5D38CA73585D7C6D20FA7D8D3090D10DC67A131C22D60598426A9 +C98A451F7F2D5BA9E58049B9402510B59AC71928E07B4B101C99DD5113A11059 +A116FD045810A9A3149CF558818E4B3F03C43016C6D3314A68A891B8F5C3A6C9 +E44A12EEB1B8F2C4D317E1E6A23C44B2F838D18B86B0A3378AFD9CD56FFDC5C6 +55FF9BF06EA28AB8DCC1754D59D15478575A70315F97B0045526D664DF74C0AB +98EDB5BD133C3B102CBB7116C09184603915B00D9236FE8B33C9EBB860A4EF24 +1F1FE86BAB362602865110C9D0FC3657E8365252AA58B663D129994644FA993F +F5B8085F898315F92F526E704D7991D852C960495A21FB57B431405290016ED8 +155C2FD45EF9FE215F81C3C1968F22E2913A4ABE76AD00DF98B8B866DFEAD42C +58B62316D39364D53B1B8804B3B86ACDB09D397C30575927539E4D83AC1B11D7 +0BFEB0FAEB5D8134E80AA656F41B75445F01DBC4D991EBCDB3DEF2046A2471A7 +626D356F80672FC100CFB182DC7A71FF2B6F79D09B1753C79A4064C893E2840A +BE467AEFB649B15BB0414765C2386AD380B490345B3A0A46C3FD6DC04A7B4E99 +52C17712D3A72105993CA807FE2F02E3081DE5F8C0905A7F59B91A29DA17097E +72D5A3F898EDE207389D5DB7177879A27C09B6088575794FA0E0999A5213C94E +C1F7D086FE0900F4AD37A73D487E39B3A0F50999AE449300144A8468DEBC88E1 +FC3AA0F37F59741E012787B4B0BDC6FDB9FF67A27546F45ED7772FF4C4FE81A5 +9851ECF941EFA4EA0C6E43BF52229CC80F82C0C39A1546D8F43C420B6517C807 +3A1D3E2F13DE14554ABD965931067FCEB11E000539E3CC0BADC93AD0F4FA5AA3 +CB7AE61C7124AB3C31694CC77C2FCEFB6D4A6C9637BF6D72CD4EF22E699931EC +F04E82C19F9A758FBE5D99BB035CA5952BBD036288649E4D86E55E9A7362F4D2 +DAB9C9025F7B21C3C4B17A2FC0872DECA91F2A07673184B437423502DD67829C +466B72C0C5347E396C0447B69FA337DE4C93D2C100BC5ABB8A9C7F770A3406B9 +615991B1CB7D1276C920A556DF22E0B9B4DAACFCABB460F0BA9F7D349F6A5E35 +32932F2A817544DCA54A1CD612656B4A58D07B277AAE7B6CF766A84BA37600F2 +E538AF00CF3F44A6FAF4FE4C16C280367172A1208F6C4E4293C5F9B86948C2DE +ADC31D00E216F701A0BCF7C05AEC7B869BF309A2723C1114D2258CFE9F23E477 +C3A9163BD7ECA67FA05989BD03DFD449F10B31A5E2ED47FE8A5C728D2D0BE932 +C6D22A6E5AEEF1E36FE833C748ABFD4CD7B47C43C8D5F04931D530041A66413B +B226D4EA2A4E6DEFB5BB405E6FA9B55E1F38F44AE4B1787404D7B29D53110C96 +6D3B3988863114E8D3DBDCCD340F071F6D0878E052548F071CA5F5E95874A76D +25F0D549216C3EDA673E7B48179E724B614013FD285C8DF5892D261A3E42F662 +778D6377450226655DA88BDD4DDDC1CE3268A567ABD16D23DCE8DC5EFC65C277 +315D2F52E7D731B3E736DA127083DB6614408B5D3B465629E742AF5617E46614 +E9058174D8FDCDBEA858F8E684256290983F1B6878BE93ADDA0E6F01E1AE9675 +944796E58043AB149240F3A0D67C5722927C9AA8A21F069DFBC9A00DBD7E7D3C +CCDE58B4B6F7BCA5249F905B4100241E8AA7A8830DFC48AB187993A8EA9C53A2 +A46E553FAB76FD3CF9CEC9AC70768B909599638CC99AB6067AC7F027603C5946 +1111B5F55368FDEE83C9960E02798E5059E9D48E1E7DFAA2F2D34B7E6DCB6CAE +F8758BD829030798C9E8E535EA232E7E7B9960864A7D5F28B60758016199D1F8 +77BF3113A66B5E93F2ED2B04D74B4223ABD399B84EB964638290930D30396428 +544110D132786A99CFB2C1490297EB89D668968442FED549B7E88ACF226D84BD +3268C8B71482745D1A8E9AF87A5F05C95AE201D8E7EBCEE7D217DCF6D5BBC1AF +493800FF3479B6A0C2C1E02E37BC3CAD926BCA7B0E67CD0EB4C55D776B9D6A12 +E26180401CA20E24A54DF615D9075B082C3C63BA818F9B065D373251DFC2A5B0 +8A986ED4DBD70327363A6B630C4D41C5C9E4623467BBA9781572704CA1CB113C +6F0CC36EC191D7D70A067E6B27D70EE96D514500F15702A4716411E86539936F +F700CA5916A0171004B2E0658F31280194F8D398899740653FC51109F805D619 +9BF642C34D3FD15C491C05BAEBA41888CACEE664B8DF67FC9ADF74161EBEF2C5 +180C93495F57BEC8578927F431A3EA5B21E59B711D85F22334D9C243033FB80B +175CE9EFC3655992555766733C9DD39CC0894D1766154240171D324551927215 +65BAA3B03165A680A027513C061383BFC3A4B8441A54725B53E6E95CF20447B5 +1536FC43B32DDC9D621A5E30505DB3B1D6C6E02FB8B746C4AE0FB4F06D0F1E85 +FC386D95D23A8364AAE58AF6D0CD13D5E97B3A4C390D9657B969865C38FEF7E8 +E4B6BA80A368C4BC1A9B97CFFB31B0A85ABA929835919EF2634C60ECEA5B9916 +DC1B4E19AD654D7701A300862770350919CBA6018731C1820943FBC404E7D442 +F52A81C85E8EB59BC393C5A54AC5EACC37B2204E92B6A4EFEE16FC77B19EE1AE +DC1C08035F3F8ECF7BA0351B36A7C364C01CC7F339267DDF29F87261F8620A49 +DFE9628BC7CF7ACEE45367C88ED142749BEC78F7777118ABC1C95A33BFB3DB24 +3F0FC24FFDA37C5D5CA5CB9A3ACF99318D8FD2CE01E86C1E80D4BB82A3AAAA53 +8783BF1CB9D10C9BE9FBF3DA8F2AF1E8CFEA6668FA79E1E41A89533A3A62FBD2 +1DBB4D5BC2B8EDB3583098E0AB443A6F25631C2D35F215D73C0CCE89B64F430E +65CCF64B2541D947872BB431495BE97D703E259328A3EF50FFD2FEF59CFDD9E0 +B696D4503EAE2CD38F4C8EB5C8CBB03B89017C0A54DB2F970909554531AD0F67 +58233CC193D8787ADDFB98E0E9A9E26802A784C152AC759ABA8E4D98E7FE40CC +55605D2FE8C92948D5BBE1AECA3C40952A982A377BCBEA3624002D9648BB154C +B5C20699C8820358F35FB6133E431E2326DB213F907E59E7C894FDC4B49B72BA +1896DF74B90D8AA05EDA7631C38C79C813C7ECCC7F5FA5B14B1F41A738C26CF2 +54DC9E38FD8D84EAA2A84F0F70525A33BA8D9923243FE8B83465D202A3BF1C44 +04875959C3EB79F030F539EF0A0D2D0D21EC276E7784AD5451B8190F83BD1915 +7E2F395C3CC8FBE8E7F3EEB3F3B69E19E5CB8EC0E9CF1A5C984DE83570FF2B4C +C6D63A61B7CEC4ED7476356F9B21D17B0F993EBCCF4BD8996C30C8CA82F25D66 +D405C82ED7CE0B56CEE983E10A6F4D0CE9B4FEC99E730E164A057E5939164AD7 +8AFDDBF963BCA391CD308C56E97E92CD2D8CD6854C10E052A7870C847D389946 +B9933B915C3EB9DDA4F4CEE97293B3584CA896BC32888E066CF965F4BBDC5D53 +E8A1A4638CF9E55EE5F73D8B66ACB3FDD3E172CD3BE30078A61D464B92949ACF +455B1C18604DE624A0715142A6A4DC415E059184662BCE925E6B4422F509F8D1 +A8C84874089EEB3557E2FC0D9E094138DEF05E5B69D49AAC2AA04AFE06BD442C +569EFFF978A925DAA3F65B8A06C1FE326EEAA24DF6CF8AEF639B1409A6654BC7 +8B0CE14EA70DF71D051EB0DE8A7843362CA80B80633B7E8CA2261A4441595796 +FF827952F5C69505667EAF6E798C7954559C5EA848CA9D85BF1566E3B6AC7343 +0D5EB2011B74811F8D1E374C0FFFCA027C82082E80EDD7BCE926280236447D74 +D1AF9233DF081D6F4D254553492CAB104D0A1E6DB53D0790B4583C88D3384950 +382795B1DDD1A7F39CC96BCDEDF590F195B96A4E98C85DE8BBA2232080AEF81E +6696FF64E77CB6B1D111644EDBF33468ED268AC21FC4BA5C45565C2935C92BCC +A847D435BDB86E63DE92B2AFCF371E6BD25717651FCBDCA81FDBAC9EB15449F0 +7DDAA0F8744C07BA2CADB9175E107BE62258F91BC5C8839563A9B3D2A444A061 +61D20950A6612E7E7CE30050AB22D60B7DF17D8339804BC0C20997262649C2BD +C3AF4FC2F5D1BA794630D7E9F90DF2E42069468D0DB626679D1170EC00B3B71B +9EDAAF95632CC143B0537823CC1911CF5016DFBA9B9674EA51C0B8D2F1448DDB +EFCAC1098D13E900739F0A90CF03BB7381AF4F396EA749E3D560472934FBF960 +C4D0B4E9978A5E3647BB09CE1A626F4ED17E78DF8D214C1CEB514E4C4BAEFC5F +745A91CE75104303127549C460A0B286F9AECA4DB6D5ACC84FC97D794E08454A +0510C235C17994D2DE568BCE2E941F6D158CB067388DFCB2915EAEF2FC01ED2D +3817FD18D9CF55D689CC34D40CEBC318CF89F135BF85F154C5624E495467EBA9 +5CCAF115D50B2B554F49416B2A55E6586BF541619EB20A6D1A39E40F6A5E5909 +A1BB769BB4485A68D97892247B82830E83329A59E4F7AE9CA548312BD2135AF7 +6C07141838A731EDB0405E0524C124BAEFECA98A80A87F76414253BDE99F0701 +0006EE3B407CC5977D6936DA7456DD6DBCA53C63C8BDC59BC746CE9BF7F1EB57 +CD5A192CD1F6BA819EC6E6EE6B98E06049E52F30467C8F9D4AA37B27F9FAAD44 +4C326754751EB155AAC21E6E2D69A4EB8E23FCFE8916B5C66A21A68D071C0BB3 +08E87AC148DC1F9F5769DDE418B68D10C83C1BA0D2E185B3141DB2AC53125B07 +18C6EFA8925A004F760306298207E78A66FA3A365845EA12CD3FC331499933B7 +56B5371BD50CE5E219D91568FAAE4DDDA7060F4809DB3784066803B01A5AFB85 +1E6616B0B7BA0EF7BA4C82E1130A55EEADEA4FE2E84F858A8969153D5B630755 +C5EBBEC208E741940B71DD4BBDE45A5AA65761CFCF3FBC1F3290B5B457313AC0 +9D32C2917140584D93EAC138719027B2D2B1E20F0A1212B2420CC763D54B853B +E088460ADE436997A1DAD8C2C7154EA35D013A20EF7661F4B213F45A144F6E34 +AC57EE12E732847A1544A1BC43C95EF7A1D50D2EAA078ED86F6B673C5E93DDC1 +B97C67788149520A6809E34F38E06D5E1A0331AA615B189C6C073BA934B4433F +0C7990584567DC2476F1AFDF42EC19ACCF0558371E340924582B1C237BAF15F2 +89D2A03FA3FF9C41D3084987C7C89A18755896D4BBEF7201125850187DA01715 +7031B2961E047E098BB491E5A51AF3AE1548AAD4B2AAB1B640C3D52F9A82A14F +3204C6C1A58594CCC5D80E39F49190BDFBF98A844D6067EC97B6D38821818643 +8FA65F2A0A5133DEC9444C71FB20C397C6A8072B92C749EE8F5C3C4BC4D84C95 +7607987589C1955475F8B0B72A7FD4ED5E182C01AC6A3121D8B40C8582AD0905 +72189E1D8EADF6DDEAE5DADED920610D544C52C0F573CF51B43A4C521365DAE1 +C276360A853BA82EF944827942E97178861A2B2E7D58303762AF8456E7B64C93 +28D4394F0D2372E576DC721EF76990C535551FB0D914CAC9893CB8F3BB2DF98F +6D2FC0A849689939A596B46399E029394793AEAC4B73CE3813E7DFB70188CDBD +63FB697638B1209DD6376DDA713D630E40DDE68B556E42356F5FED08449A55FB +1739EDF3B845DCFAC9F6FBFD179E5E96307BC6F3444F05324345D916F5F600CE +3F20C79B3E3C33A341DAEA005BC51042C62062D781257C8BEBE1CEEBB1FFC37B +074B5B4755C3D15452385BB2C212886BF386CCE309BE8170DF8E848B56B67131 +8462880F6458A7DE0EB6AFB7EC8090BE3EEB6D10545B8798640D7BE4A97FC77D +C02CC5F6FB17C1954D25139A8F01FAC3CDC215E5E36A79F9A8149E84154569DB +AFC3BB344EF9575D887853F7F2B2FC7E81E5C0C2AC593F6A12F34D973C2E4BA7 +027284DFE22FD551592764318381B97DEAC2E810EF0650780F077D955E50B4A2 +67110C6BFDFA2C00DFD3C69CB26FD28EC4A1EBBAA32A45CAFF03443FBEF2EF5F +0869CA38145B749DE73DAD740FECE007D6144E3BC2DC7A2193C46B7A8EDA8EA5 +B2710D9A4FD7BFCC1B9D47225F1AB38CF7711ED557413064F3FE3A495839EAC3 +528ACAD9B9DF8D11540AA07FE837F2475A9219E173BEED4473CDEB7FFDEC235D +74BBBFD8EE08402EB0ED2C570BB07CDD5C14FA595CD26AA8EB39149266A157D3 +922220A20C47C0861645728286238E4CCA332D21A956F41F99871D1CE0B990A5 +3A6EE9283E7E8FFA26843D69F47AF6FA6AF504B1722483C3512674009D5633C2 +D2CA89D9BC0F31BF58C37BA760A8F2DA6D3283C61B43BA8DBEE7911065F6D5BF +C207CE7BE6DF47E92441DF5524201F90149DC055B791F9CBE50CCBA598CA9BAD +4ED184F75474919F23A9F8DC1447CB8580CA4EED3EB6F7886986C5F13ACD21F2 +26053E43FA67AD442D1917B28B379D77AC0640377815D64E852DFC07E461FD92 +8B8AACC1B6228F5AAF1DAE0ABBF59087DB1AB04C451E7B1D60E68AA1D3CA5FBE +FAE9EF3780C6569D5CFF64B54B55B15FBE4B40FC34D4FC7B7CE746DAE459B705 +960455D87C0D76AC0A333ACC147638DEB4A43E76E5248D621B0D8D3578A8E5A4 +68F9409554BB4A3C806ABF2C97499F7A22B2665EB995DCC8AECC1BD62CC803D9 +ED18E303EF2535C8A3F85F246F3EFF01898A6F40CBC0EE0A05079556FBBD73B3 +3987255695869DA8BF9856F90E55DBACFB3B5F6C6620FEA578A1B50C09551F8B +F7D5E3FD74E2A2DD970D9362D4700AFF1F43BF426BE87DF8A93A5837758C1B4E +D81147F3330B090F9AD54AA393D4D50FDC6399DA5C149050ACD7D7D29108AAC3 +984FA420FFAE2A6CB91E796E94C99648417B0B8215FCF525A517C672924DDCF7 +873C4671DC0BD349F95A7D108FC1771100BE946469DFDB3F32D52991C6855827 +ECBF77DBF62C17F15FE8DCBE71A7E917C04737DDC1E291878F78E4E2F722E6C6 +89DE33A20A2CAE59F5B5D5928E9F2B23A7712E2EBE55415E35BA00587DE8902A +0CD996541FBAA2E76EEB087354CC53A21D98D8900355271EB825CA853245411D +A62694CBBBBB1444E6BE25059A98D15B6DE839E1849C2674AB3E55808899F39B +2BECF86A226967850DEDA652DC2ACA857400F762512CA0DA477C46DBFD12B7C5 +CB80DE66D79B7EB83509108B0F350309C2AA60A2BCC5C93B2546C2B801419F81 +C46FF0E3DE49B873621A048F8E6B4F857184B1B6548B6B33634CA9AE246B79A0 +258D71F2A240973F76C56F8740C4160B2725CA92EFF435BFF652B52864DD04A0 +616831A3F5D7387BF0764A78C4A4F77D400827D73EF74AF40641731A178B35A2 +A891BAA0A6F1561179E368C6D1D854C781458EFE7CF5F7ADD0237E1881B47A28 +320C1A3144CAD6B4E980E1D943460117588E6E32A614CD404E072C489D18938A +BAF5C33D23684AE07D8FC6B0C71811BDCC6B78C5A772EB4CF405811CA68A8FF2 +19767CA08EE54823ABBB73C7FD60DF82022B73EB3848F13E5B2F7BEF01ED3F8D +C56A28B9BAF4DAC4AE29170297D6CA1B20128BFEEC98C72B7877B6BA5BFF5381 +61BEB444AE20909C199F425268C4B736FFAD530C0B782F2E661F43836B575DD9 +2D10EDFD8ECBC506AB722B724C91B00BDDE0E68AA46314B4A16650ECE237C136 +5C2108BD40EDFBA1906D33DE973CE4ECFF88B51B405DFD3D002ABE219DCBE5F4 +D75FC766D196ACC672DC6E0BEE6A214031F837889EEE88F666DA270C77A23CBF +E8DD2CBA9035ACB2B4D65E9F805983751B67524389E7751D525481E1D113EB34 +65C8BBE73C8301CA2326D9B663F25CF977990520EB6DBB54015C5FB5B8416910 +ACFE023BFE08A6947E8DA306485B3158AE8CB01189944E16ED00BDAD5A987C57 +4A63F88A149C3602008C5B20619CE94F0D714907AF91A92F1F5778F3C2285AEB +9E5FD5FC84DDBBF8154C133CA5B234282E3E3B534B95661E7C1F96014ECFF46F +511E6310640EFF13047EF3A7274AC01E71420936BAB536733FCEBF27542F1F63 +22870A8D139BE80472AE6A03C7A79483F8823198697066EB5BCB6DA3319D6188 +2CB5617A6F2B665D1BDD9080B5BD8DE3D2FA854A3A8918CABBE5A3F9E1516733 +CBA92C988F6F9958D1E3CDB26B0985727C9708510D2E6AA28DEBD1C132101D7C +404B62964C802A771897E8E6F272E8D43E96415494F33E48DBB4C6BAB6F27073 +DDFF054F591837F3F176215904185B9BB69632D87EE5E08B497AF5FA1D0FDFF7 +37F94589147A9A45FDC3437CDE7E7E03E87B6F92B5541914DBD0D4CC075AC5B2 +B5174D1541EC0BBE03A436809E1AA0D900A1628DEBB1F2CD7D26A47A58F579BA +03CDAF4334377C1C2804D01C6F38A661A889A476AE500E79440B2ABCC453F001 +10AED42C4DD7ABB850ECDB821A739CE4FB129A0710580B456791825B2991AA89 +6BF1A6FB8300C2F0EFCEE08CAC6AA7DBB0F0BAE8CB9E71E9967E1D964113B93A +3B1CE1D373E9191209B1506C5690E6E605E537C2A861B1E8FE203498C6186A9F +BDBB0AAA95337C493D377B611D3BDDB5B53FE4AB3DE42E348E633C0A5146A75D +209FC46B0C6F56A14D30FCBE3D1C3D070C7CA0A9BB89F7721CD868D0E5794D02 +F0913D7269B8ECC6497495BB1905EA6305B50C2CD31B772200D141BE816CAE32 +69426AB01DB5E90004EFA596ADA987D509C00ED0B3E8DA50A26AE9D17C80F57F +4E15B16755085CF7FCE3BF73B954BF85A106018A4E6CD84F18F2624C51F61A23 +C3720757473CFBD2F6013002B622BAAFD178145A178DCA86644E09ED39138BD7 +74FF313F52506B63221AE97BA0070FD0BCC7CF0972A0974C2EAA2F0E2DF27FE7 +E68D499131A2CED3A877795C04E5CE6F79477E4432680B832A81BD73DA305B13 +BF98ADE18C0A8931992778AF8F78F35A054EE81958F494522BB6ACCBC49DDB57 +D24F444ADCE0E423F373A9CCA6924325B52872BBCB4BD4EA5126218CF7A03412 +24A74D50BA9690ED6659230214FD0147C1053E706040952F471E6BC5357A10A1 +8F4B3A35CF3162F225F43A9D8CFB89C078AF751EFBDFAC99C999B72989B18B1F +4267DA3CB2B891E52147EED2CD8CAD963B093AE9DCD7BDB69922E350EEBB9FA4 +F410DB3EA5429B5A1D2CE1830560B4269AA1141F0E5C90482FE9989021A54AE8 +1ED079FDA5307BA5B0E675D444116F61592DBEC8EF080047AFA55FD37BB10693 +936EC592C5F071EC9D54D3AACF0F3C81B5A8D58139633BC9C7E4E7309B0FAFC6 +A638FD392FF2B777C29390FFA9AD70C1EBFF76E8531A814F6613383AC746E41B +FD5F47F31AA6F550105F8E2223CD286ACCA40AB62EB6908C0A2448103A6883EC +E0F9BE0A0AE44A2E5C630E0D83520755C00A1C1102E525EBEF2B4FE3C32273E9 +48BB27F555780BEA1CA81F43595A8A38B386ACD26752B45557205B21B2BDF915 +9B780D070ECA3F6407F581FED7294673DE50563EA3A14E92719E262B5E4E758D +BB5346408F536E12B15BE38C82AE468224358C57D13EECF17DDC4F7D91C5E7C2 +5B3365C15AF14D577FCBAC6408C14F4134B227885DB8B29474EE7F6B734784FD +E4FC30545A02CB0B662B04362D16A5FC9CF1B8A327079AA9678EC476740D1788 +550B368AEA021A8FEF0D94EFB1D1776844FBF207CA838D7167C1CBFD1DE4EB53 +85772AB793335C289366555094AE44E3C7FF4AB55613B1522ADFCC9A6E256EE9 +A10930F2F446D266A0AF65BEA12458E3B8E4FFDAFE01B9A8310C364B8AFB1319 +571B81BFB2E666F2C02CC6254E933AD682A465EBD75107074ACBB6792257A5B5 +51BE834759BCA006B863EFAC26A21934E475AAEE037A74775B451192870C7FCB +DD05DE0389B085A97C88C28F401A6EC1C0F5C96EB3AFDFBF2302925BAF3D4E58 +E9C7C61854DDE0F1AE7D17AC021BBE710552710AFA5218CF9E451FD4B4429DE7 +F558C48556969DD0F5C47D2922A63D2845BDED57B945550C9E0FFA710A9DEB01 +C4BE9B136FD0CB1B63CCA91A17578C15826F3B68938B06A82B36100D13E0005D +C9AA74AC937C22DAE4C112C16DB83789F578AEB9A7DF5AC4ADE62874AAD48313 +355514D42659FEB39FB17A4F826188944B4218874F376E192DE01FF15C0A6A03 +5180DB62365DCAE97F8D2F6F24C69FAE8021C390785AD47DDF8323B5312A8C2F +399D777162053F61A0FCE02DC2B5DAB388265FBF7FFB4AAD979E74FDFA5636A0 +1EDA101D8A1ABFC665D7612F3DE4D6B8B7EF4BDB3F05ABE3EE9C8C195EDA3437 +D1183612B07B085D779251C0D4EFF73ED2E370D98A999DA3F1BA20E37B5A6BF3 +9667625F0C03049CD0892A25B2C32659BCA374C63C9566C6B4D4792C5EFE7062 +2E795413192684A6C7A54EA24A5E0338B9A59D6BABC78D664562375FD852FCAA +5E5E97938ED62F574C347423835A2EC75C016C890296BF36FF1FE82FF83213FF +394E6E771433547950C38F4AEA43BF939E307168056B2A90DB8ADEFBE1716720 +9B146069323861342B1B9BFDF47E22E6E709A9B19051E49587CCD48CA87701F9 +EFE769BD5CF736B858070FB1F0489C28132AA71F5A62860AD029297E97E8E700 +D95114CFAC26C1D5DB35EA9E3133682779C9A79AB20AFCDBEDA882B88A4514A4 +B75B77F4C8A09D6E2F34E16D65E569A01A43D682F74825E7EECC8508D731121F +74D82118DA46CB22C3BF0FE22906BB5FDBA561F29EC31A3D4A0C3BBD7475090C +C58884AC36C8FCB07FDD1EF023D6FA8DE5E9FAFB2945DACD50FC15923106C682 +8F38FC83E5652128ED01EBEAB3236F4FA87B4882D922BDC974601C05D46019CB +72D459EB3BB41B9D72BE072074ABCF15654803F2030D7D7F0F4C7C20AE6897A5 +152F896389B74F939A8123A7A2494F301D07706B01600ACD60D84236E6D2CDB1 +E5D02AC300216DB172A026C49AD933 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CMMI12 +%!PS-AdobeFont-1.1: CMMI12 1.100 +%%CreationDate: 1996 Jul 27 08:57:55 +% Copyright (C) 1997 American Mathematical Society. All Rights Reserved. +11 dict begin +/FontInfo 7 dict dup begin +/version (1.100) readonly def +/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def +/FullName (CMMI12) readonly def +/FamilyName (Computer Modern) readonly def +/Weight (Medium) readonly def +/ItalicAngle -14.04 def +/isFixedPitch false def +end readonly def +/FontName /CMMI12 def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 0 /.notdef put +readonly def +/FontBBox{-30 -250 1026 750}readonly def +/UniqueID 5087386 def +currentdict end +currentfile eexec +D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE +3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B +532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 +B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B +986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE +D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 +5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC +4391C9DF440285B8FC159D0E98D4258FC57892DCC57F7903449E07914FBE9E67 +3C15C2153C061EB541F66C11E7EE77D5D77C0B11E1AC55101DA976CCACAB6993 +EED1406FBB7FF30EAC9E90B90B2AF4EC7C273CA32F11A5C1426FF641B4A2FB2F +4E68635C93DB835737567FAF8471CBC05078DCD4E40E25A2F4E5AF46C234CF59 +2A1CE8F39E1BA1B2A594355637E474167EAD4D97D51AF0A899B44387E1FD933A +323AFDA6BA740534A510B4705C0A15647AFBF3E53A82BF320DD96753639BE49C +2F79A1988863EF977B800C9DB5B42039C23EB86953713F730E03EA22FF7BB2C1 +D97D33FD77B1BDCC2A60B12CF7805CFC90C5B914C0F30A673DF9587F93E47CEA +5932DD1930560C4F0D97547BCD805D6D854455B13A4D7382A22F562D7C55041F +0FD294BDAA1834820F894265A667E5C97D95FF152531EF97258F56374502865D +A1E7C0C5FB7C6FB7D3C43FEB3431095A59FBF6F61CEC6D6DEE09F4EB0FD70D77 +2A8B0A4984C6120293F6B947944BE23259F6EB64303D627353163B6505FC8A60 +00681F7A3968B6CBB49E0420A691258F5E7B07B417157803FCBE9B9FB1F80FD8 +CA0DA1186446DD565542BCCC7D339A1EB34C7F49246E8D72E987EB477C6DB757 +99AF86CEBCD7605C487A00CD2CD093098182DC57B20D78ECE0BECF3A0BF88EBA +C866DB19F34BBBED6634AFC0F08D2AFB2A92578A6F8B4ADCD6594737FF6EED7D +5B536DA9E3E2CADB40DB7C600EA4D100D33C3B92B1CF857E012C4EB370BA8295 +55B50047CD58E912E67E22C1B92F41D0BEE742201DF198F3766AE35EA71D8195 +A8C94D661C40D718CB09497485FAA34204229AECFE644C93FFDA54C789E4F751 +3D2519F7CB9E79B2ABE3101DF2EBFAD375469CDC687FB3DC2833EDC0F946B41F +F28D72FFF2A9B8B0D76DC542537612E2BE0F3FB9601C897386359C55E867A547 +F872005F5C56C6EC5E9685E03D7A82653BE8B69741C4DF332AEEB2AA450B23F3 +EABD5ED060606CC7DB1762632EC3C6C4A66ADAF61A97D949DEA5156B4CF34765 +67AC3F10AE17199A710A882D47979F9D41AA2CB794648BE47479F0B00E18BF04 +923F54CEC1214BAFA39BB65ECB013875899E9901B7882D16D2E2C97AD3353668 +A6070081E4DC627AF9192599F5876369908FBDFA11E8D6CB2E83896E9C897CEC +FD1D25651D66A333AF531FF74E1B0DEB1E3D1B5B7D3FB9D1C8BF60517B31C8D2 +1C264F44BC9AF3D9BA5280D1618EED96C11ED24F789FAA263394C658DFCA8DE9 +D47D9E188E212F9EC1DCF449DFDAB8437FAB9EA9AF01AE1714E8F932855182 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 40258437 52099151 1000 600 600 (internals.dvi) +@start /Fa 134[37 1[55 1[40 22 28 26 1[40 36 39 59 19 +2[19 39 37 22 32 41 29 37 33 12[41 1[44 2[52 55 12[52 +13[33 4[17 22 45[{ TeXBase1Encoding ReEncodeFont }28 +66.4176 /Palatino-Roman rf /Fb 206[25 49[{ + TeXBase1Encoding ReEncodeFont }1 49.8132 /Palatino-Roman +rf /Fc 206[32 49[{ TeXBase1Encoding ReEncodeFont }1 63.0968 +/Palatino-Roman rf /Fd 134[55 50 2[61 33 44 39 1[61 55 +61 89 33 2[33 61 55 39 50 61 44 1[50 12[66 61 5[100 3[39 +1[83 55 2[72 11[50 50 50 50 50 50 50 2[25 46[{ + TeXBase1Encoding ReEncodeFont }34 99.6264 /Palatino-Bold +rf /Ff 253[67 24 1[{ TeXbbad153fEncoding ReEncodeFont }2 +86.5083 /CMSY10 rf /Fg 162[24 1[24 29[67 17[67 1[34 34 +40[{ TeXf7b6d320Encoding ReEncodeFont }6 86.5083 /CMR10 +rf /Fi 133[37 42 42 60 42 46 28 32 32 1[42 37 46 65 23 +2[23 42 42 1[32 42 34 38 37 51[28 42[44 2[{ + TeXBase1Encoding ReEncodeFont }24 83.022 /Palatino-Italic +rf /Fj 134[44 44 44 44 44 44 44 44 1[44 44 44 44 44 44 +44 44 44 44 44 44 44 44 44 44 1[44 10[44 44 44 1[44 44 +44 1[44 44 1[44 44 44 44 44 44 44 44 44 2[44 44 44 1[44 +1[44 44 3[44 44 44 1[44 44 1[44 1[44 44 44 40[{ + TeX09fbbfacEncoding ReEncodeFont }57 83.022 /CMTT10 +rf /Fk 104[83 2[42 42 24[42 46 43 69 47 50 27 35 33 46 +50 45 48 73 24 46 19 24 48 46 28 40 51 37 46 42 7[55 +1[83 60 65 51 44 55 1[50 65 69 79 51 60 1[28 69 63 46 +51 64 59 51 65 5[21 21 42 42 42 42 42 42 42 42 42 42 +50 21 28 21 50 1[28 28 23 35[50 50 2[{ TeXBase1Encoding ReEncodeFont } +73 83.022 /Palatino-Roman rf /Fl 134[46 1[69 46 51 28 +37 32 2[46 51 74 28 51 1[28 51 46 32 42 51 37 51 42 12[55 +1[60 1[51 69 2[51 2[32 1[69 1[51 12[42 1[42 42 42 42 +42 42 2[21 1[21 44[{ TeXBase1Encoding ReEncodeFont }38 +83.022 /Palatino-Bold rf /Fm 134[66 1[100 66 1[40 53 +47 2[66 73 106 40 73 1[40 73 66 1[60 73 1[73 60 12[80 +1[86 2[100 11[86 12[60 60 60 60 60 60 4[30 44[{ + TeXBase1Encoding ReEncodeFont }29 119.552 /Palatino-Bold +rf /Fn 135[39 62 42 45 24 32 30 1[45 41 43 66 22 42 17 +22 43 42 25 36 46 33 41 37 12[46 10[25 5[53 20[19 25 +19 44[{ TeXBase1Encoding ReEncodeFont }29 74.7198 /Palatino-Roman +rf /Fo 139[25 33 29 14[33 46 37 31[58 65[{ + TeXBase1Encoding ReEncodeFont }7 74.7198 /Palatino-Bold +rf /Fp 193[76 1[76 60[{ TeXaae443f0Encoding ReEncodeFont }2 +99.6264 /CMMI12 rf /Fq 138[60 32 42 39 3[58 2[55 1[29 +58 55 1[48 61 44 55 50 13[52 13[61 77 3[74 5[25 50 3[50 +1[50 50 50 50 60 25 33 45[{ TeXBase1Encoding ReEncodeFont }28 +99.6264 /Palatino-Roman rf /Fr 138[87 47 1[57 1[86 78 +83 5[83 2[69 88 2[72 29[102 67[{ TeXBase1Encoding ReEncodeFont }11 +143.462 /Palatino-Roman rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin + end +%%EndSetup +%%Page: 1 1 +TeXDict begin 1 0 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 0 0 a +SDict begin [ /Title () /Subject () /Creator (LaTeX with hyperref package) +/Author () /Producer (dvips + Distiller) /Keywords () /DOCINFO pdfmark +end + 0 0 a 515 232 +a +SDict begin H.S end + 515 232 a 515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.1) cvn H.B /DEST pdfmark +end + 515 232 a 515 +440 a +SDict begin [ /Count -0 /Dest (section.1) cvn /Title (Overview) /OUT +pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (section.2) cvn /Title (Terminology) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -7 /Dest (section.3) cvn /Title (The driver) /OUT +pdfmark end + 515 440 +a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.3.1) cvn /Title (Specifying the grid extent) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -2 /Dest (subsection.3.2) cvn /Title (The timeline) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsubsection.3.2.1) cvn /Title (Initialisation) +/OUT pdfmark end + 515 +440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsubsection.3.2.2) cvn /Title (Evolution) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.3.3) cvn /Title (Calling scheduled routines) +/OUT pdfmark end + 515 440 a 515 440 +a +SDict begin [ /Count -0 /Dest (subsection.3.4) cvn /Title (Grid arrays and grid scalars) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.3.5) cvn /Title (Flesh interfaces) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.3.6) cvn /Title (Interfaces to other thorns) +/OUT pdfmark end + 515 440 a 515 +440 a +SDict begin [ /Count -0 /Dest (subsection.3.7) cvn /Title (Missing parts) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -3 /Dest (section.4) cvn /Title (The workhorse) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.4.1) cvn /Title (The helpers) +/OUT pdfmark end + 515 440 +a 515 440 a +SDict begin [ /Count -0 /Dest (subsection.4.2) cvn /Title (The grid hierarchy) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -2 /Dest (subsection.4.3) cvn /Title (The interpolators) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsubsection.4.3.1) cvn /Title (Restriction) +/OUT pdfmark end + 515 +440 a 515 440 a +SDict begin [ /Count -0 /Dest (subsubsection.4.3.2) cvn /Title (Prolongation) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Count -0 /Dest (section.5) cvn /Title (Regridding, how and where and when) +/OUT pdfmark end + 515 440 a 515 440 +a +SDict begin [ /Count -0 /Dest (section.6) cvn /Title (Random ramblings) +/OUT pdfmark end + 515 440 a 515 440 a +SDict begin [ /Page 1 /View [ /Fit ] /PageMode /UseOutlines /DOCVIEW +pdfmark end + 515 440 a 515 440 a +SDict begin [ {Catalog} << /ViewerPreferences << >> >> /PUT pdfmark +end + 515 440 a 515 +440 a +SDict begin H.S end + 515 440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (Doc-Start) cvn H.B /DEST pdfmark +end + 515 440 +a 1222 872 a Fr(Carpet)35 b(under)g(the)h(hood)931 1168 +y Fq(Erik)25 b(Schnetter)h Fp(<)p Fq(schnetter@uni-tuebingen.de)p +Fp(>)1357 1367 y Fq(Date:)k(2003/05/03)25 b(13:29:23)1804 +1666 y Fo(Abstract)834 1803 y Fn(This)e(document)g(describes)e(the)j +(internal)f(workings)f(of)h(the)g(Carpet)g(arrange-)722 +1894 y(ment.)35 b(Its)23 b(intended)g(r)o(eadership)d(ar)o(e)i(people)g +(who)h(extend)f(Carpet,)h(or)f(who)h(use)722 1985 y(Carpet)18 +b(mor)o(e)f(thant)j(the)f(average)f(user)-6 b(.)22 b(This)c(document)g +(is)f(supposed)g(to)h(be)g(r)o(ead)722 2077 y(in)h(conjuction)h(with)g +(and)f(guiding)f(thr)o(ough)g(the)i(sour)o(ce)d(code.)515 +2362 y Fm(Contents)515 2454 y +SDict begin H.S end + 515 2454 a 515 2454 a +SDict begin 12 H.A end + 515 +2454 a 515 2454 a +SDict begin [ /View [/XYZ H.V] /Dest (section*.1) cvn H.B /DEST pdfmark +end + 515 2454 a 515 2551 a +SDict begin H.S end + 515 2551 a Fl(1)82 +b(Overview)1013 2551 y +SDict begin 12 H.L end + 1013 2551 a 1013 2551 a +SDict begin [ /Subtype /Link /Dest (section.1) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1013 2551 +a 2324 w Fl(2)515 2734 y +SDict begin H.S end + 515 2734 a Fl(2)g(T)-9 b(erminology)1124 +2734 y +SDict begin 12 H.L end + 1124 2734 a 1124 2734 a +SDict begin [ /Subtype /Link /Dest (section.2) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1124 2734 a 2213 w Fl(2)515 +2917 y +SDict begin H.S end + 515 2917 a Fl(3)82 b(The)21 b(driver)1039 2917 +y +SDict begin 12 H.L end + 1039 2917 a 1039 2917 a +SDict begin [ /Subtype /Link /Dest (section.3) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1039 2917 a 2298 w Fl(3)639 +3016 y +SDict begin H.S end + 639 3016 a Fk(3.1)86 b(Specifying)21 b(the)g(grid)f(extent)1773 +3016 y +SDict begin 12 H.L end + 1773 3016 a 1773 3016 a +SDict begin [ /Subtype /Link /Dest (subsection.3.1) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1773 3016 a 70 w Fk(.)41 +b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)g(.)h(.)165 b(3)639 3116 y +SDict begin H.S end + 639 3116 a Fk(3.2)86 +b(The)21 b(timeline)1290 3116 y +SDict begin 12 H.L end + 1290 3116 a 1290 3116 +a +SDict begin [ /Subtype /Link /Dest (subsection.3.2) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1290 3116 a 55 w Fk(.)41 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) +g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h +(.)165 b(4)830 3216 y +SDict begin H.S end + 830 3216 a Fk(3.2.1)98 b(Initialisation)1558 +3216 y +SDict begin 12 H.L end + 1558 3216 a 1558 3216 a +SDict begin [ /Subtype /Link /Dest (subsubsection.3.2.1) cvn /H /I +/Border [0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1558 3216 a 36 w Fk(.)41 +b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(5)830 3315 y +SDict begin H.S end + 830 +3315 a Fk(3.2.2)98 b(Evolution)1457 3315 y +SDict begin 12 H.L end + 1457 3315 +a 1457 3315 a +SDict begin [ /Subtype /Link /Dest (subsubsection.3.2.2) cvn /H /I +/Border [0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1457 3315 a 75 w Fk(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) +g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h +(.)165 b(6)639 3415 y +SDict begin H.S end + 639 3415 a Fk(3.3)86 b(Calling)21 +b(scheduled)g(r)o(outines)1816 3415 y +SDict begin 12 H.L end + 1816 3415 a 1816 +3415 a +SDict begin [ /Subtype /Link /Dest (subsection.3.3) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1816 3415 a 27 w Fk(.)41 b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(6)639 +3514 y +SDict begin H.S end + 639 3514 a Fk(3.4)86 b(Grid)21 b(arrays)f(and)g(grid)h(scalars) +1857 3514 y +SDict begin 12 H.L end + 1857 3514 a 1857 3514 a +SDict begin [ /Subtype /Link /Dest (subsection.3.4) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1857 3514 a 48 w +Fk(.)42 b(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h +(.)f(.)g(.)g(.)h(.)165 b(7)639 3614 y +SDict begin H.S end + 639 3614 a Fk(3.5)86 +b(Flesh)22 b(interfaces)1399 3614 y +SDict begin 12 H.L end + 1399 3614 a 1399 +3614 a +SDict begin [ /Subtype /Link /Dest (subsection.3.5) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1399 3614 a 70 w Fk(.)42 b(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) +165 b(8)639 3714 y +SDict begin H.S end + 639 3714 a Fk(3.6)86 b(Interfaces)20 +b(to)h(other)g(thorns)1751 3714 y +SDict begin 12 H.L end + 1751 3714 a 1751 3714 +a +SDict begin [ /Subtype /Link /Dest (subsection.3.6) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1751 3714 a 30 w Fk(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.) +f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(8)639 +3813 y +SDict begin H.S end + 639 3813 a Fk(3.7)86 b(Missing)22 b(parts)1330 +3813 y +SDict begin 12 H.L end + 1330 3813 a 1330 3813 a +SDict begin [ /Subtype /Link /Dest (subsection.3.7) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1330 3813 a 77 w Fk(.)41 +b(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f +(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(8)515 +3996 y +SDict begin H.S end + 515 3996 a Fl(4)82 b(The)21 b(workhorse)1214 3996 +y +SDict begin 12 H.L end + 1214 3996 a 1214 3996 a +SDict begin [ /Subtype /Link /Dest (section.4) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1214 3996 a 2123 w Fl(8)639 +4096 y +SDict begin H.S end + 639 4096 a Fk(4.1)86 b(The)21 b(helpers)1260 4096 +y +SDict begin 12 H.L end + 1260 4096 a 1260 4096 a +SDict begin [ /Subtype /Link /Dest (subsection.4.1) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1260 4096 a 23 w Fk(.)41 b(.)g(.)g(.)h(.)f(.) +g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(9)639 4195 y +SDict begin H.S end + 639 +4195 a Fk(4.2)86 b(The)21 b(grid)g(hierar)o(chy)1515 +4195 y +SDict begin 12 H.L end + 1515 4195 a 1515 4195 a +SDict begin [ /Subtype /Link /Dest (subsection.4.2) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1515 4195 a 79 w Fk(.)41 +b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)165 b(9)639 4295 y +SDict begin H.S end + 639 +4295 a Fk(4.3)86 b(The)21 b(interpolators)1463 4295 y +SDict begin 12 H.L end + +1463 4295 a 1463 4295 a +SDict begin [ /Subtype /Link /Dest (subsection.4.3) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1463 4295 a 69 w Fk(.)41 b(.)g(.)h(.)f(.)g(.)g +(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.) +g(.)g(.)h(.)124 b(10)830 4394 y +SDict begin H.S end + 830 4394 a Fk(4.3.1)98 +b(Restriction)1491 4394 y +SDict begin 12 H.L end + 1491 4394 a 1491 4394 a +SDict begin [ /Subtype /Link /Dest (subsubsection.4.3.1) cvn /H /I +/Border [0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1491 +4394 a 41 w Fk(.)41 b(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g +(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)124 +b(10)830 4494 y +SDict begin H.S end + 830 4494 a Fk(4.3.2)98 b(Pr)o(olongation)1572 +4494 y +SDict begin 12 H.L end + 1572 4494 a 1572 4494 a +SDict begin [ /Subtype /Link /Dest (subsubsection.4.3.2) cvn /H /I +/Border [0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1572 4494 a 22 w Fk(.)41 +b(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f +(.)g(.)g(.)h(.)f(.)g(.)g(.)h(.)124 b(11)515 4677 y +SDict begin H.S end + 515 +4677 a Fl(5)82 b(Regridding,)19 b(how)i(and)f(where)g(and)g(when)2098 +4677 y +SDict begin 12 H.L end + 2098 4677 a 2098 4677 a +SDict begin [ /Subtype /Link /Dest (section.5) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 2098 4677 a 1198 w Fl(12)515 +4859 y +SDict begin H.S end + 515 4859 a Fl(6)82 b(Random)20 b(ramblings)1372 +4859 y +SDict begin 12 H.L end + 1372 4859 a 1372 4859 a +SDict begin [ /Subtype /Link /Dest (section.6) cvn /H /I /Border [0 +0 12] /Color [1 0 0] H.B /ANN pdfmark end + 1372 4859 a 1924 w Fl(13)1926 +5255 y Fk(1)p eop end +%%Page: 2 2 +TeXDict begin 2 1 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.2) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (section.1) cvn H.B /DEST pdfmark +end + 515 440 a 84 x Fm(1)119 +b(Overview)515 713 y Fk(The)22 b(Carpet)f(driver)-6 b(,)21 +b(which)i(lives)f(in)h(the)f(Carpet)f(arrangement,)h(is)g(divided)f +(into)i(sev-)515 813 y(eral)i(parts.)41 b(The)26 b(thorn)h +Fj(Carpet)c Fk(is)k(the)f(main)g(driver)f(piece;)j(it)e(pr)o(ovides)g +(all)f(the)i(r)o(ou-)515 912 y(tines)i(and)f(str)o(uctur)o(es)g(that)g +(Cactus)h(expects)e(fr)o(om)h(it.)49 b(The)29 b(thorn)g +Fj(CarpetLib)c Fk(is)k(the)515 1012 y(workhorse)24 b(that)e(does)h(all) +g(the)g(bookkeeping)h(and)e(data)g(shuf)o(\003ing.)33 +b(Those)23 b(two)h(alone)515 1111 y(form)34 b(a)f(valid)h(Cactus)f +(driver;)40 b(the)34 b(other)g(thorns)h(pr)o(ovide)e(additional)h +(functional-)515 1211 y(ity)-9 b(.)66 b(The)34 b(thorns)h +Fj(CarpetInterp)p Fk(,)d Fj(CarpetReduce)p Fk(,)h(and)h +Fj(CarpetSlab)c Fk(pr)o(ovide)j(the)515 1311 y(corr)o(esponding)f +(interpolation,)j(r)o(eduction,)f(and)d(slabbing)h(interfaces.)58 +b(The)32 b(thorns)515 1410 y Fj(CarpetIOASCII)g Fk(and)37 +b Fj(CarpetIOFlexIO)32 b Fk(pr)o(ovide)37 b(I/O)h(methods.)77 +b(Finally)-9 b(,)42 b(thorn)515 1510 y Fj(CarpetRegrid)11 +b Fk(pr)o(ovides)k(a)h(user)g(interface)f(to)h(select)g(wher)o(e)g(and) +f(what)i(to)f(r)o(e\002ne.)23 b(\(The)515 1610 y(actual)d(r)o +(e\002nement)g(is)h(handled)g(in)g Fj(CarpetLib)p Fk(.\))515 +1764 y +SDict begin H.S end + 515 1764 a 515 1764 a +SDict begin 12 H.A end + 515 1764 a 515 1764 a +SDict begin [ /View [/XYZ H.V] /Dest (section.2) cvn H.B /DEST pdfmark +end + 515 +1764 a 131 x Fm(2)119 b(T)-13 b(erminology)515 2084 y +Fk(Carpet)16 b(is)i(called)f(\223Carpet\224)e(because)i(a)g(carpet)f +(consists)j(of)e(many)h(individual)g(patches.)639 2184 +y(Carpet)28 b(is)h(a)f(mesh)i(r)o(e\002nement)f(driver)-6 +b(.)48 b(It)29 b(knows)h(about)f(a)f(hierar)o(chy)g(of)h +Fi(r)o(e\002ne-)515 2284 y(ment)f(levels)p Fk(,)j(wher)o(e)d(each)g +(level)g(is)h(decomposed)f(into)i(a)e(set)g(of)h(cuboid)f +Fi(grid)g(patches)p Fk(.)515 2383 y(For)h(historic)h(r)o(easons)f(it)g +(also)g(has)g(a)g(notion)h(of)f Fi(multigrid)f(levels)p +Fk(,)k(but)d(those)h(ar)o(e)d(cur)o(-)515 2483 y(r)o(ently)18 +b(unused.)25 b(They)19 b(might)h(conceivably)f(be)f(r)o(eactivated)f +(to)i(form)g(multigrid)g(stacks)515 2583 y(to)29 b(solve)g(elliptic)g +(equations.)50 b(The)29 b(grid)f(patch)h(is)g(the)f(smallest)i(unit)f +(of)f(grid)h(points)515 2682 y(that)22 b(Carpet)f(deals)g(with.)30 +b(Carpet)21 b(parallelises)g(by)h(assigning)h(sets)f(of)g(grid)g +(patches)g(to)515 2782 y(pr)o(ocessors.)639 2881 y(A)29 +b(multi-patch)g(r)o(un)g(is)g(a)f(r)o(un)i(wher)o(e)e(mor)o(e)g(than)h +(one)h(grid)e(patch)h(\(of)f(the)h(same)515 2981 y(r)o(e\002nement)24 +b(level\))g(is)h(assigned)g(to)g(a)f(single)h(pr)o(ocessor)-6 +b(.)37 b(This)25 b(is)g(a)f(situation)i(that)e(can)515 +3081 y(occur)f(even)g(without)h(r)o(e\002nement.)32 b(This)24 +b(is)g(also)f(a)g(situation)h(that)f(cannot)g(occur)g(with)515 +3180 y(PUGH,)j(so)g(that)h(most)g(thorns)g(cannot)f(handle)g(this)h +(situation.)43 b(In)26 b(multi-patch)g(r)o(uns)515 3280 +y(one)19 b(has)g(to)g(distinguish)h(between)f Fi(local)f(mode)p +Fk(,)g(wher)o(e)g(one)h(has)g(access)f(to)h(a)g(single)g(grid)515 +3380 y(patch,)28 b(and)f Fi(global)h(mode)p Fk(,)g(wher)o(e)f(one)h +(cannot)g(access)f(individual)g(grid)g(patches,)i(but)515 +3479 y(can)f(instead)h(perfom)g(global)g(operations)g(such)g(as)g +(synchr)o(onisation,)j(interpolation,)515 3579 y(or)19 +b(r)o(eduction.)24 b(This)19 b(part)f(of)h(Cactus)f(is)h(curr)o(ently)g +(\(2003-04-30\))13 b(under)o(going)19 b(changes.)639 +3679 y(Carpet)j(uses)h(vertex-center)o(ed)d(r)o(e\002nement.)31 +b(That)23 b(is,)g(each)f(coarse)g(grid)h(point)g(co-)515 +3778 y(incides)17 b(with)g(a)g(\002ne)g(grid)g(point.)25 +b(T)-8 b(o)17 b Fi(r)o(egrid)f Fk(means)h(to)h(select)e(a)h(new)g(set)g +(of)g(grid)f(patches)515 3878 y(for)22 b(each)f(r)o(e\002nement)h +(level.)30 b(T)-8 b(o)23 b Fi(r)o(ecompose)e Fk(the)h(grid)g(hierar)o +(chy)g(means)g(to)h(move)f(data)515 3977 y(ar)o(ound.)47 +b(Regridding)29 b(is)f(only)i(about)e(bookkeeping,)j(while)e(r)o +(ecomposing)f(is)h(about)515 4077 y(data)19 b(munging.)639 +4177 y(Each)25 b(grid)f(patch)h(can)g(be)f(divided)g(in)i(up)f(to)g +(four)g(zones:)34 b(the)25 b(interior)-6 b(,)26 b(the)f(outer)515 +4276 y(boundary)-9 b(,)30 b(and)e(the)h(ghost)g(zone,)i(and)d(the)h(r)o +(e\002nement)f(boundary)-9 b(.)49 b(The)29 b(interior)g(is)515 +4376 y(wher)o(e)23 b(the)i(actual)e(compuations)i(go)g(on.)37 +b(The)24 b(outer)g(boundary)g(is)h(wher)o(e)f(the)g(users')515 +4476 y(outer)17 b(boundary)g(condition)h(is)g(applied;)f(fr)o(om)f +(Carpet's)h(point)g(of)h(view)-8 b(,)18 b(these)f(two)g(ar)o(e)515 +4575 y(the)22 b(same.)30 b(\(The)21 b(only)i(dif)o(fer)o(ence)d(is)j +(that)f(Carpet)f(sets)h Fj(cctk)p 2514 4575 27 4 v 30 +w(bbox)e Fk(corr)o(espondingly)-9 b(.\))515 4675 y(The)24 +b(ghost)h(zones)g(ar)o(e)e(boundaries)h(to)h(other)f(grid)h(patches)f +(on)h(the)f(same)g(r)o(e\002nement)515 4774 y(level)30 +b(\(that)g(might)h(live)f(on)h(a)f(dif)o(fer)o(ent)e(pr)o(ocessor\).)53 +b(The)30 b(r)o(e\002nement)h(boundary)f(is)515 4874 y(the)d(boundary)h +(of)f(the)h(r)o(e\002ned)e(r)o(egion)i(in)g(a)f(level,)h(and)g(it)f(is) +h(\002lled)g(by)f(pr)o(olongation)1926 5255 y(2)p eop +end +%%Page: 3 3 +TeXDict begin 3 2 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.3) cvn H.B /DEST pdfmark +end + 515 232 a 291 x Fk(\(interpolation\))25 +b(fr)o(om)f(the)h(next)g(coarser)f(level.)38 b(Both)25 +b(the)g(ghost)h(zones)f(and)g(the)g(pr)o(o-)515 623 y(longation)d +(boundary)e(ar)o(e)g(\002lled)h(by)f Fi(synchr)o(onising)p +Fk(.)639 722 y(Grid)31 b(patches)f(that)h(ar)o(e)e(on)j(the)f(same)f(r) +o(e\002nement)h(level)f(never)h(overlap)f(except)515 +822 y(with)e(their)g(ghost)h(zones.)46 b(Conversly)-9 +b(,)30 b(all)e(ghost)g(zones)g(must)h(overlap)e(with)h(a)f(non-)515 +922 y(ghost)c(zone)f(of)h(another)f(grid)g(patch)g(of)g(the)h(same)f +(level.)30 b(All)22 b(r)o(e\002nement)g(boundaries)515 +1021 y(must)27 b(overlap)g(with)g(a)g(grid)g(patch)f(on)i(the)f(next)g +(coarser)f(level.)44 b(\(This)27 b(is)h(also)f(called)515 +1121 y Fi(pr)o(oper)20 b(nesting)p Fk(.\))639 1220 y(Except)27 +b(for)h(exceptions,)h(Carpet)e(numbers)h(grid)f(point)i(indices)f(and)f +(time)h(levels)515 1320 y(with)22 b(integers.)27 b(It)21 +b(counts)i(always)e(in)g(terms)h(of)f(the)g(\002nest)h(grid,)f(so)h +(that)f(coarser)g(grids)515 1420 y(have)26 b Fi(strides)i +Fk(that)f(ar)o(e)f(powers)h(of)g(the)h(r)o(e\002nement)f(factor)-6 +b(.)43 b(This)28 b(has)f(the)h(advantage)515 1519 y(that)20 +b(dif)o(fer)o(ent)f(r)o(e\002nement)i(levels)f(can)h(use)g(the)g(same)f +(global)h(numbering)h(scheme.)639 1619 y(The)74 b(grid)g(patches)g(ar)o +(e)f(described)g(by)h(a)g Fi(bounding)g(box)g Fk(\(abbr)o(eviated)515 +1719 y(bbox,)g(see)63 b Fj(CarpetLib/src/b)o(box)o(.*)o +Fk(.\).)147 b(This)64 b(is)g(a)f(triplet)g(of)h Fi(vectors)f +Fk(\(see)515 1818 y Fj(CarpetLib/src/ve)o(ct)o(.*)o Fk(\),)16 +b(wher)o(e)21 b(each)h(triplet)f(speci\002es)h Fi(lower)g(bound)p +Fk(,)g Fi(upper)g(bound)p Fk(,)515 1918 y(and)j Fi(stride)p +Fk(,)h(much)g(as)f(is)g(conventional)i(in)e(Fortran.)39 +b(T)-7 b(riplets)25 b(ar)o(e)f(enclosed)h(in)h(r)o(ound)515 +2017 y(par)o(entheses)f Fg(\()r Ff(\001)32 b Fk(:)g Ff(\001)h +Fk(:)g Ff(\001)r Fg(\))q Fk(,)25 b(and)f(vectors)h(ar)o(e)e(enclosed)j +(in)f(squar)o(e)f(brackets)h Fg([)r Ff(\001)r Fk(,)16 +b Ff(\001)r Fk(,)g Ff(\001)g(\001)g(\001)q Fg(])q Fk(.)37 +b(A)515 2117 y(typical)25 b(grid)g(patch)g(might)h(have)e(a)h(bounding) +h(box)f(which)h(is)g(denoted)f(by)h Fg(\()r([)r Fk(0)r(,)16 +b(0)r(,)g(0)r Fg(])30 b Fk(:)516 2217 y Fg([)r Fk(2)r(0)r(,)16 +b(2)r(0)r(,)g(2)r(0)r Fg(])31 b Fk(:)k Fg([)r Fk(2)r(,)16 +b(2)r(,)g(2)r Fg(])r(\))q Fk(.)39 b(This)26 b(is)h(to)f(be)g(r)o(ead)f +(as)i Fg(\()q Fk(lower)34 b(:)g(upper)f(:)h(stride)q +Fg(\))q Fk(,)26 b(meaning)515 2316 y(that)f(the)h(grid)g(patch)f(has)h +(one)g(corner)f(grid)h(point)g(at)g Fg([)r Fk(0)r(,)16 +b(0)r(,)g(0)r Fg(])q Fk(,)24 b(the)i(diagonally)g(oppo-)515 +2416 y(site)h(corner)g(grid)f(point)i(at)f Fg([)r Fk(2)r(0)r(,)16 +b(2)r(0)r(,)g(2)r(0)r Fg(])q Fk(,)24 b(and)j(the)g(grid)g(points)g(ar)o +(e)f(spaced)g(two)h(\223\002ne)515 2516 y(grid)19 b(spacings\224)g +(apart.)24 b(This)c(grid)f(patch)g(contains)i(1)r(1)16 +b Ff(\002)h Fk(1)r(1)e Ff(\002)i Fk(1)r(1)j(grid)f(points.)26 +b(Empty)515 2615 y(bboxes)d(have)h(an)f(upper)h(bound)g(that)g(is)g +(strictly)g(lower)g(than)g(the)g(lower)g(bound.)35 b(The)515 +2715 y(\002les)24 b Fj(CarpetLib/src/ve)o(ct)o(.*)17 +b Fk(contains)25 b(many)f(useful)f(r)o(outines)h(to)g(deal)f(with)h +(short)515 2814 y(vectors,)38 b(and)c(the)h(\002les)g +Fj(CarpetLib/src/b)o(bo)o(x.*)28 b Fk(contain)35 b(r)o(outines)g(deal)f +(with)h(an)515 2914 y(algebra)26 b(of)h(bboxes.)45 b(The)27 +b(\002les)h Fj(CarpetLib/src/bb)o(oxs)o(et)o(.*)21 b +Fk(contain)28 b(r)o(outines)f(that)515 3014 y(handle)20 +b(sets)h(of)g(bboxes.)515 3151 y +SDict begin H.S end + 515 3151 a 515 3151 +a +SDict begin 12 H.A end + 515 3151 a 515 3151 a +SDict begin [ /View [/XYZ H.V] /Dest (section.3) cvn H.B /DEST pdfmark +end + 515 3151 a 148 x Fm(3)119 b(The)30 +b(driver)515 3489 y Fk(The)g(driver)g(consists)i(of)f(the)g(two)g +(thorns)h Fj(Carpet)c Fk(and)i Fj(CarpetLib)p Fk(.)52 +b Fj(Carpet)28 b Fk(is)j(the)515 3588 y(fr)o(ont)24 b(end)h(to)h +(Cactus,)f(while)h Fj(CarpetLib)21 b Fk(is)k(the)g(back)g(end)g(to)g +(the)g(machine.)38 b Fj(Carpet)515 3688 y Fk(speci\002es)27 +b(the)g(grid)g(shape,)i(decides)d(when)i(to)g(allocate)e(and)h +(deallocate)f(storage,)i(cy-)515 3787 y(cles)22 b(thr)o(ough)i(thes)f +(schedule)f(bins,)i(and)e(passes)g(all)h(internal)g(information)g(in)g +(the)g Fj(cGH)515 3887 y Fk(str)o(uctur)o(e)d(to)h(the)g(thorns.)515 +4015 y +SDict begin H.S end + 515 4015 a 515 4015 a +SDict begin 12 H.A end + 515 4015 a 515 4015 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.1) cvn H.B /DEST +pdfmark end + 515 +4015 a 115 x Fd(3.1)99 b(Specifying)25 b(the)g(grid)g(extent)515 +4288 y Fj(Carpet)15 b Fk(de\002nes)k(the)f(usual)g(parameters)f +(necessary)h(to)h(specify)e(the)i(extent)f(of)g(the)g(grid.)515 +4388 y(Everything)30 b(that)f(has)h(to)g(do)f(with)i(coor)o(dinates)e +(and)g(symmetries)h(is)g(handled)f(else-)515 4487 y(wher)o(e,)20 +b(and)g(the)h(driver)f(does)h(not)g(know)h(about)e(that.)639 +4587 y(The)g Fj(global)p 1067 4587 27 4 v 29 w(*)g Fk(parameters)e +(specify)i(the)g(global)h(extent)f(of)g(the)g(coarsest)g(grid.)25 +b(Not)515 4686 y(all)h(of)g(this)h(grid)g(needs)f(to)h(be)f(cover)o(ed) +f(by)h(grid)h(patches.)42 b(It)26 b(is)h(conceivable)f(to)g(have)515 +4786 y(an)20 b(L-shaped)g(simulation)i(domain)g(without)g(any)f(r)o +(e\002nement.)k(This)d(situation)g(can)e(be)515 4886 +y(described)h(to)j(Carpet)d(by)i(specifying)g(a)g(global)g(shape)f +(that)h(is)g(the)g(convex)g(hull)g(of)g(the)515 4985 +y(domain,)e(and)f(then)h(using)h(two)f(cuboid)g(grid)g(patchs)f(to)h +(\002ll)h(in)f(the)g(shape)f(of)h(the)g(L.)1926 5255 +y(3)p eop end +%%Page: 4 4 +TeXDict begin 4 3 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.4) cvn H.B /DEST pdfmark +end + 515 232 a 639 523 a Fk(The)19 +b Fj(ghost)p 1022 523 27 4 v 29 w(*)f Fk(parameters)f(specify)i(the)f +(number)h(of)g(ghost)g(zones.)25 b(The)19 b Fj(periodic*)515 +623 y Fk(parameters)j(ar)o(e)f(unused;)k(they)e(ar)o(e)f(only)i(ther)o +(e)f(because)f(some)i(thorns)g(look)g(at)f(these)515 +722 y(parameters.)32 b(Carpet)22 b(itself)i(does)f(not)h(supply)g +(periodic)f(boundary)h(conditions;)i(they)515 822 y(have)19 +b(to)h(be)g(handled)f(by)h(another)g(thorn.)26 b(The)20 +b(size)f(of)h(the)g(pr)o(olongation)h(boundary)f(is)515 +922 y(the)h(same)f(as)h(the)g(number)f(of)h(ghost)h(zones.)639 +1021 y(The)i(parameter)d Fj(max)p 1340 1021 V 31 w(refinement)p +1811 1021 V 27 w(levels)g Fk(speci\002es)i(the)h(maximum)f(number)h(of) +515 1121 y(levels)k(that)f(can)h(be)g(pr)o(esent)f(in)h(a)g(r)o(un,)i +(including)e(the)h(base)e(level.)46 b(This)29 b(parameter)-6 +b(,)515 1220 y(together)30 b(with)h Fj(refinement)p 1495 +1220 V 28 w(factor)p Fk(,)e(de\002ne)h(the)h(grid)f(point)h(numbering)g +(scheme,)515 1320 y(which)26 b(\(see)f(above\))g(depends)g(on)h(the)g +(\002nest)g(possible)g(grid.)40 b(However)-6 b(,)26 b(none)g(of)g(the) +515 1420 y(\002ner)i(levels)g(will)h(be)f(activated)f(automatically)-9 +b(.)47 b(The)28 b Fj(multigrid)p 2730 1420 V 28 w(*)g +Fk(parameters)e(ar)o(e)515 1519 y(unused.)639 1619 y(The)h(parameter)f +Fj(base)p 1392 1619 V 30 w(extents)e Fk(speci\002es)j(the)g(shapes)g +(of)g(the)g(grid)g(patches)g(that)515 1719 y(ar)o(e)e(pr)o(esent)h(on)i +(the)f(coarsest)g(grid.)44 b(This)27 b(can)g(be)f(used)h(to)g(set)g(up) +g(e.g.)f(an)h(L-shaped)515 1818 y(domain.)e(The)19 b(parameter)e +Fj(base)p 1580 1818 V 30 w(outerbounds)d Fk(speci\002es)19 +b(which)h(of)f(the)g(grid)f(patches')515 1918 y(boundaries)42 +b(ar)o(e)e(to)j(be)e(tr)o(eated)f(as)i(outer)g(boundaries,)47 +b(i.e.)42 b(for)f(which)i(of)f(those)515 2017 y Fj(cctk)p +696 2017 V 29 w(bbox)20 b Fk(should)h(be)g(set)f(to)h(1.)639 +2117 y(Carpet)i(curr)o(ently)h(ignor)o(es)g Fj(enable)p +1837 2117 V 29 w(all)p 1998 2117 V 31 w(storage)d Fk(and)j(always)g +(enables)f(all)h(stor)o(-)515 2217 y(age.)57 b(This)32 +b(is)g(because)f(it)g(is)h(not)g(yet)g(clear)f(how)h(individual)f(grid) +h(function)g(can)f(be)515 2316 y(allocated)f(and)i(deallocated)e(while) +i(still)g(keeping)g(enough)h(data)d(for)h(the)h(boundary)515 +2416 y(pr)o(olongation.)639 2516 y(Checksumming)21 b(and)d(poisoning)i +(ar)o(e)e(means)h(to)g(\002nd)g(thorns)h(that)e(alter)g(grid)h(vari-) +515 2615 y(ables)27 b(that)i(should)g(not)f(be)g(alter)o(ed,)g(or)h +(that)f(fail)f(to)i(\002ll)g(in)f(grid)g(variables)g(that)g(they)515 +2715 y(should)21 b(\002ll)h(in.)639 2814 y(None)h(of)g(the)g(above)f +(speci\002es)h(anything)g(about)g(r)o(e\002ned)f(grids.)31 +b(Re\002ned)23 b(grid)f(ar)o(e)515 2914 y(cr)o(eated)16 +b(and)j(destr)o(oyed)f(at)g(r)o(un)h(time,)g(possibly)h(guided)f(by)f +(the)h(thorn)h Fj(CarpetRegrid)515 3014 y Fk(which)h(pr)o(ovides)f(a)h +(nice)g(user)f(interface.)515 3164 y +SDict begin H.S end + 515 3164 a 515 3164 +a +SDict begin 12 H.A end + 515 3164 a 515 3164 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.2) cvn H.B /DEST +pdfmark end + 515 3164 a 92 x Fd(3.2)99 b(The)25 +b(timeline)515 3415 y Fk(It)c(is)h Fj(Carpet)p Fk('s)d(task)i(to)h +(walk)g(thr)o(ough)g(the)f(schedule)h(bins)g(and)e(call)i(all)f(user)g +(r)o(outines.)515 3514 y(Only)g(some)g(fairly)f(fundamental)g +(initialisation)i(happens)e(in)h(the)g(\003esh)g(befor)o(e)e(Carpet)515 +3614 y(takes)h(contr)o(ol.)26 b(The)21 b(overall)f(pictur)o(e)g(of)h +(what)g(happens)f(when)i(is:)515 3670 y +SDict begin H.S end + 515 3670 a 515 +3670 a +SDict begin 12 H.A end + 515 3670 a 515 3670 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.1) cvn H.B /DEST pdfmark +end + 515 3670 a 619 3780 a Fk(1.)40 +b(Startup)20 b(\(see)f(\002le)i Fj(Carpet/src/Carp)o(etS)o(ta)o(rt)o +(up.)o(cc)o Fk(\).)e(This)i(is)g(the)f(only)h(sched-)722 +3879 y(uled)32 b(r)o(outine;)37 b(everything)32 b(else)g(happens)g(by)g +(overloading)g(and)f(r)o(egistering.)722 3979 y(This)22 +b(r)o(outine)e(does)h(nothing)i(but)d(r)o(egistering)h(and)f +(overloading.)515 4036 y +SDict begin H.S end + 515 4036 a 515 4036 a +SDict begin 12 H.A end + 515 4036 +a 515 4036 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.2) cvn H.B /DEST pdfmark +end + 515 4036 a 619 4145 a Fk(2.)40 b(SetupGH)25 +b(\(see)g(\002le)h Fj(Carpet/src/Setu)o(pGH)o(.c)o(c)p +Fk(\).)33 b(This)26 b(r)o(outine)f(does)g(the)h(bulk)722 +4245 y(of)h(initialising)i(Carpet.)43 b(It)27 b(sets)g(up)g(the)g +(internal)g(str)o(uctur)o(es)g(for)f(all)h(grid)g(vari-)722 +4344 y(ables.)515 4379 y +SDict begin H.S end + 515 4379 a 515 4379 a +SDict begin 12 H.A end + 515 4379 +a 515 4379 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.3) cvn H.B /DEST pdfmark +end + 515 4379 a 619 4510 a Fk(3.)40 b(Initialise)31 +b(\(see)e(\002le)h Fj(Carpet/src/Initia)o(li)o(se.)o(cc)o +Fk(\).)47 b(This)31 b(r)o(outine)f(walks)g(the)722 4610 +y(initialisation)22 b(part)e(of)h(the)g(scheduling)g(bins.)515 +4667 y +SDict begin H.S end + 515 4667 a 515 4667 a +SDict begin 12 H.A end + 515 4667 a 515 4667 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.4) cvn H.B /DEST pdfmark +end + 515 +4667 a 619 4776 a Fk(4.)40 b(Evolve)27 b(\(see)g(\002le)g +Fj(Carpet/src/Evolve)o(.cc)o Fk(\).)39 b(This)28 b(r)o(outine)f(walks)h +(the)f(evolu-)722 4876 y(tion)21 b(part)f(of)g(the)g(scheduling)h +(bins.)26 b(It)20 b(also)h(contains)f(the)h(main)f(evolution)i(loop.) +1926 5255 y(4)p eop end +%%Page: 5 5 +TeXDict begin 5 4 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.5) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.5) cvn H.B /DEST pdfmark +end + 515 440 a 619 523 +a Fk(5.)40 b(Shutdown)33 b(\(see)f(\002le)g Fj(Carpet/src/Shutdo)o(wn.) +o(cc)o Fk(\).)54 b(This)33 b(r)o(outine)f(walks)h(the)722 +623 y(shutdown)k(part)d(of)h(the)g(scheduling)h(bins.)69 +b(Normally)-9 b(,)39 b(nothing)e(inter)o(esting)722 722 +y(happens)21 b(her)o(e.)515 888 y(These)f(stages)h(ar)o(e)e(explained)h +(in)i(the)e(following)j(sections.)515 1038 y +SDict begin H.S end + 515 1038 +a 515 1038 a +SDict begin 12 H.A end + 515 1038 a 515 1038 a +SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.3.2.1) cvn H.B +/DEST pdfmark end + 515 1038 a 77 x Fl(3.2.1)81 +b(Initialisation)515 1273 y Fk(\(See)23 b(\002le)h Fj +(Carpet/src/Initia)o(li)o(se.)o(cc)o Fk(.\))30 b(In)25 +b(this)g(stage)f(Carpet)f(initialises)i(the)g(sim-)515 +1372 y(ulation.)56 b(This)31 b(includes)g(setting)g(up)g(the)g(grids,)i +(calling)e(r)o(outines)g(to)g(r)o(egister)f(sym-)515 +1472 y(metries)24 b(and)f(boundary)h(conditions,)h(as)f(well)g(as)f +(calculating)h(the)g(actual)f(initial)h(data)515 1571 +y(on)h(several)e(r)o(e\002nement)i(levels.)36 b(It)25 +b(traverses)e(the)i(scheduling)g(bins)g(in)g(the)f(following)515 +1671 y(or)o(der:)515 1706 y +SDict begin H.S end + 515 1706 a 515 1706 a +SDict begin 12 H.A end + 515 +1706 a 515 1706 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.6) cvn H.B /DEST pdfmark +end + 515 1706 a 619 1837 a Fk(1.)40 b(Set)20 +b Fj(cctk)p 1034 1837 27 4 v 30 w(iteration)d Fk(to)k(zer)o(o)515 +1838 y +SDict begin H.S end + 515 1838 a 515 1838 a +SDict begin 12 H.A end + 515 1838 a 515 1838 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.7) cvn H.B /DEST pdfmark +end + 515 +1838 a 619 1970 a Fk(2.)40 b(Set)20 b Fj(cctk)p 1034 +1970 27 4 v 30 w(time)f Fk(to)i(the)g(initial)h(time)515 +1971 y +SDict begin H.S end + 515 1971 a 515 1971 a +SDict begin 12 H.A end + 515 1971 a 515 1971 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.8) cvn H.B /DEST pdfmark +end + 515 +1971 a 619 2103 a Fk(3.)40 b(P)-8 b(ARAMCHECK)515 2104 +y +SDict begin H.S end + 515 2104 a 515 2104 a +SDict begin 12 H.A end + 515 2104 a 515 2104 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.9) cvn H.B /DEST pdfmark +end + 515 2104 +a 619 2236 a Fk(4.)40 b(Loop)21 b(over)g(r)o(e\002nement)f(levels,)h +(starting)g(fr)o(om)f(coarsest:)515 2259 y +SDict begin H.S end + 515 2259 a +515 2259 a +SDict begin 12 H.A end + 515 2259 a 515 2259 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.10) cvn H.B /DEST pdfmark +end + 515 2259 a 619 2368 +a Fk(5.)123 b(BASEGRID)515 2369 y +SDict begin H.S end + 515 2369 a 515 2369 +a +SDict begin 12 H.A end + 515 2369 a 515 2369 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.11) cvn H.B /DEST pdfmark +end + 515 2369 a 619 2501 a Fk(6.)g(INITIAL)515 +2502 y +SDict begin H.S end + 515 2502 a 515 2502 a +SDict begin 12 H.A end + 515 2502 a 515 2502 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.12) cvn H.B /DEST pdfmark +end + 515 +2502 a 619 2634 a Fk(7.)g(POSTINITIAL)515 2635 y +SDict begin H.S end + 515 +2635 a 515 2635 a +SDict begin 12 H.A end + 515 2635 a 515 2635 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.13) cvn H.B /DEST pdfmark +end + 515 2635 a 619 +2767 a Fk(8.)g(POSTSTEP)515 2768 y +SDict begin H.S end + 515 2768 a 515 2768 +a +SDict begin 12 H.A end + 515 2768 a 515 2768 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.14) cvn H.B /DEST pdfmark +end + 515 2768 a 619 2900 a Fk(9.)g(Regrid)21 +b(\(possibly)h(cr)o(eating)d(new)j(levels\))515 2923 +y +SDict begin H.S end + 515 2923 a 515 2923 a +SDict begin 12 H.A end + 515 2923 a 515 2923 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.15) cvn H.B /DEST pdfmark +end + 515 2923 +a 577 3033 a Fk(10.)40 b(End)21 b(loop)g(over)g(r)o(e\002nement)f +(levels)515 3056 y +SDict begin H.S end + 515 3056 a 515 3056 a +SDict begin 12 H.A end + 515 3056 a 515 +3056 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.16) cvn H.B /DEST pdfmark +end + 515 3056 a 577 3165 a Fk(11.)40 b(Restrict)21 +b(fr)o(om)g(\002ner)g(to)g(coarser)f(grids)515 3189 y +SDict begin H.S end + +515 3189 a 515 3189 a +SDict begin 12 H.A end + 515 3189 a 515 3189 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.17) cvn H.B /DEST pdfmark +end + 515 3189 +a 577 3298 a Fk(12.)40 b(If)56 b(desir)o(ed,)63 b(perform)55 +b(Scott)g(Hawley's)h(initialisation)h(scheme)f(for)g(thr)o(ee)722 +3398 y(timelevels)515 3399 y +SDict begin H.S end + 515 3399 a 515 3399 a +SDict begin 12 H.A end + 515 +3399 a 515 3399 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.18) cvn H.B /DEST pdfmark +end + 515 3399 a 577 3531 a Fk(13.)40 b(Loop)21 +b(over)g(r)o(e\002nement)f(levels,)h(starting)g(fr)o(om)f(coarsest:)515 +3554 y +SDict begin H.S end + 515 3554 a 515 3554 a +SDict begin 12 H.A end + 515 3554 a 515 3554 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.19) cvn H.B /DEST pdfmark +end + 515 +3554 a 577 3664 a Fk(14.)123 b(RECOVER)p 1206 3664 25 +4 v 31 w(V)-9 b(ARIABLES)515 3665 y +SDict begin H.S end + 515 3665 a 515 3665 +a +SDict begin 12 H.A end + 515 3665 a 515 3665 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.20) cvn H.B /DEST pdfmark +end + 515 3665 a 577 3796 a Fk(15.)123 +b(CPINITIAL)515 3797 y +SDict begin H.S end + 515 3797 a 515 3797 a +SDict begin 12 H.A end + 515 3797 +a 515 3797 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.21) cvn H.B /DEST pdfmark +end + 515 3797 a 577 3929 a Fk(16.)g(ANAL)-8 b(YSIS)515 +3930 y +SDict begin H.S end + 515 3930 a 515 3930 a +SDict begin 12 H.A end + 515 3930 a 515 3930 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.22) cvn H.B /DEST pdfmark +end + 515 +3930 a 577 4062 a Fk(17.)123 b(OutputGH)515 4085 y +SDict begin H.S end + 515 +4085 a 515 4085 a +SDict begin 12 H.A end + 515 4085 a 515 4085 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.23) cvn H.B /DEST pdfmark +end + 515 4085 a 577 +4195 a Fk(18.)40 b(End)21 b(loop)g(over)g(r)o(e\002nement)f(levels)639 +4361 y(In)k(the)g(beginning,)i(only)e(the)g(coarsest)f(level)h(exists.) +34 b(The)24 b(\002rst)g(loop)g(starts)g(by)g(ini-)515 +4461 y(tialising)i(this)h(level.)40 b(At)26 b(the)f(end)h(of)g(this)g +(loop,)i(mor)o(e)d(levels)h(ar)o(e)e(cr)o(eated)g(if)i(desir)o(ed.)515 +4560 y(This)j(makes)f(it)g(possible)h(to)g(make)f(this)h(decision)g +(depend)f(on)h(an)f(automatic)g(r)o(e\002ne-)515 4660 +y(ment)21 b(criterion.)1926 5255 y(5)p eop end +%%Page: 6 6 +TeXDict begin 6 5 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.6) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.3.2.2) cvn H.B +/DEST pdfmark end + 515 440 a 83 x Fl(3.2.2)81 +b(Evolution)515 681 y Fk(\(See)20 b(\002le)i Fj(Carpet/src/Evolve)o(.c) +o(c)p Fk(.\))g(In)g(this)h(stage)e(Carpet)g(performs)h(the)g(main)g +(time)515 781 y(evolution)30 b(loop.)53 b(This)31 b(is)f(further)f +(complicated)g(by)h(the)g(fact)e(that)i(\002ner)g(grids)f(need)515 +880 y(to)d(take)e(mor)o(e)i(and)f(smaller)g(time)h(steps)f(than)h +(coarser)e(grids.)40 b(In)26 b(Carpet's)e(time)i(step)515 +980 y(counting)d(scheme,)g(which)h(is)e(based)g(on)h(the)g(\002nest)g +(grid)f(time)h(steps,)f(this)i(means)e(that)515 1080 +y(the)f(coarser)g(grids)h(ar)o(e)e(skipped)h(in)h(the)f(r)o(emaining)h +(time)g(steps.)28 b(Thus)21 b(the)h(elegant)f(r)o(e-)515 +1179 y(cursive)16 b(scheme)i(is)f(\003attened)g(out.)24 +b(The)17 b(scheduling)h(bins)g(in)f(the)g(main)h(time)f(evolution)515 +1279 y(loop)k(ar)o(e)f(traversed)f(in)i(the)g(following)h(or)o(der:)515 +1332 y +SDict begin H.S end + 515 1332 a 515 1332 a +SDict begin 12 H.A end + 515 1332 a 515 1332 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.24) cvn H.B /DEST pdfmark +end + 515 +1332 a 619 1440 a Fk(1.)40 b(Advance)20 b Fj(cctk)p 1253 +1440 27 4 v 29 w(iteration)515 1441 y +SDict begin H.S end + 515 1441 a 515 +1441 a +SDict begin 12 H.A end + 515 1441 a 515 1441 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.25) cvn H.B /DEST pdfmark +end + 515 1441 a 619 1572 a Fk(2.)40 +b(Loop)21 b(over)g(r)o(e\002nement)f(levels,)h(starting)g(fr)o(om)f +(coarsest:)515 1596 y +SDict begin H.S end + 515 1596 a 515 1596 a +SDict begin 12 H.A end + 515 1596 +a 515 1596 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.26) cvn H.B /DEST pdfmark +end + 515 1596 a 619 1704 a Fk(3.)123 b(If)21 +b(the)g(curr)o(ent)f(level)g(needs)h(to)g(be)f(tr)o(eated)f(at)h(this)i +(iteration:)515 1705 y +SDict begin H.S end + 515 1705 a 515 1705 a +SDict begin 12 H.A end + 515 1705 +a 515 1705 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.27) cvn H.B /DEST pdfmark +end + 515 1705 a 619 1836 a Fk(4.)206 b(Calculate)20 +b(curr)o(ent)g Fj(cctk)p 1721 1836 27 4 v 30 w(time)515 +1837 y +SDict begin H.S end + 515 1837 a 515 1837 a +SDict begin 12 H.A end + 515 1837 a 515 1837 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.28) cvn H.B /DEST pdfmark +end + 515 +1837 a 619 1967 a Fk(5.)206 b(Cycle)21 b(time)g(levels)515 +1991 y +SDict begin H.S end + 515 1991 a 515 1991 a +SDict begin 12 H.A end + 515 1991 a 515 1991 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.29) cvn H.B /DEST pdfmark +end + 515 +1991 a 619 2099 a Fk(6.)206 b(PRESTEP)515 2100 y +SDict begin H.S end + 515 +2100 a 515 2100 a +SDict begin 12 H.A end + 515 2100 a 515 2100 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.30) cvn H.B /DEST pdfmark +end + 515 2100 a 619 +2231 a Fk(7.)g(EVOL)515 2232 y +SDict begin H.S end + 515 2232 a 515 2232 a +SDict begin 12 H.A end + +515 2232 a 515 2232 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.31) cvn H.B /DEST pdfmark +end + 515 2232 a 619 2363 a Fk(8.)g(POSTSTEP)515 +2364 y +SDict begin H.S end + 515 2364 a 515 2364 a +SDict begin 12 H.A end + 515 2364 a 515 2364 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.32) cvn H.B /DEST pdfmark +end + 515 +2364 a 619 2494 a Fk(9.)g(Regrid)515 2518 y +SDict begin H.S end + 515 2518 +a 515 2518 a +SDict begin 12 H.A end + 515 2518 a 515 2518 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.33) cvn H.B /DEST pdfmark +end + 515 2518 a 577 2626 +a Fk(10.)40 b(End)21 b(loop)g(over)g(r)o(e\002nement)f(levels)515 +2649 y +SDict begin H.S end + 515 2649 a 515 2649 a +SDict begin 12 H.A end + 515 2649 a 515 2649 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.34) cvn H.B /DEST pdfmark +end + 515 +2649 a 577 2758 a Fk(11.)40 b(Restrict)21 b(fr)o(om)g(\002ner)g(to)g +(coarser)f(grids)515 2781 y +SDict begin H.S end + 515 2781 a 515 2781 a +SDict begin 12 H.A end + 515 +2781 a 515 2781 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.35) cvn H.B /DEST pdfmark +end + 515 2781 a 577 2890 a Fk(12.)40 b(Loop)21 +b(over)g(r)o(e\002nement)f(levels,)h(starting)g(fr)o(om)f(coarsest:)515 +2913 y +SDict begin H.S end + 515 2913 a 515 2913 a +SDict begin 12 H.A end + 515 2913 a 515 2913 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.36) cvn H.B /DEST pdfmark +end + 515 +2913 a 577 3021 a Fk(13.)123 b(If)21 b(the)g(curr)o(ent)f(level)g +(needs)h(to)g(be)f(tr)o(eated)f(at)h(this)i(iteration:)515 +3022 y +SDict begin H.S end + 515 3022 a 515 3022 a +SDict begin 12 H.A end + 515 3022 a 515 3022 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.37) cvn H.B /DEST pdfmark +end + 515 +3022 a 577 3153 a Fk(14.)206 b(CHECKPOINT)515 3154 y +SDict begin H.S end + +515 3154 a 515 3154 a +SDict begin 12 H.A end + 515 3154 a 515 3154 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.38) cvn H.B /DEST pdfmark +end + 515 3154 +a 577 3285 a Fk(15.)g(ANAL)-8 b(YSIS)515 3286 y +SDict begin H.S end + 515 3286 +a 515 3286 a +SDict begin 12 H.A end + 515 3286 a 515 3286 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.39) cvn H.B /DEST pdfmark +end + 515 3286 a 577 3416 +a Fk(16.)206 b(OutputGH)515 3440 y +SDict begin H.S end + 515 3440 a 515 3440 +a +SDict begin 12 H.A end + 515 3440 a 515 3440 a +SDict begin [ /View [/XYZ H.V] /Dest (Item.40) cvn H.B /DEST pdfmark +end + 515 3440 a 577 3548 a Fk(17.)40 +b(End)21 b(loop)g(over)g(r)o(e\002nement)f(levels)639 +3710 y(The)h(condition)i(whether)e(a)f(r)o(e\002nement)h(level)g(needs) +g(to)g(be)g(tr)o(eated)e(at)i(the)g(curr)o(ent)515 3809 +y(iteration)k(is)g(dif)o(fer)o(ent)d(for)j(the)g(two)g(loops.)38 +b(In)25 b(the)g(\002rst)g(loop,)i(the)d(coarse)h(grids)f(need)515 +3909 y(to)j(be)f(advanced)e(befor)o(e)i(the)g(\002ner)h(grids,)h(so)e +(the)h(condition)h(is)f Fi(i)s(t)r(e)q(r)16 b Fk(m)r(o)r(d)g +Fi(s)r(t)q(r)q(i)s(d)r(e)36 b Fg(=)g Fk(1)q(.)515 4009 +y(Her)o(e)20 b Fi(i)s(t)r(e)q(r)i Fk(is)f(the)g(curr)o(ent)g +(iteration,)f(and)i Fi(s)r(t)q(r)q(i)s(d)r(e)g Fk(the)f(stride)g(of)g +(the)g(curr)o(ent)f(r)o(e\002nement)515 4108 y(level,)e(i.e.)g(the)h +(factor)f(by)h(which)g(the)g(\002nest)g(grid)g(is)g(\002ner)g(than)g +(the)f(curr)o(ent)g(grid.)25 b(In)19 b(the)515 4208 y(second)k(loop)h +(above,)g(the)f(coarse)g(grids)g(need)g(to)h(be)f(tr)o(eated)f(after)g +(the)h(\002ner)h(grids,)f(so)515 4308 y(that)d(the)h(condition)h(r)o +(eads)e Fi(i)s(t)r(e)q(r)c Fk(m)r(o)r(d)g Fi(s)r(t)q(r)q(i)s(d)r(e)25 +b Fg(=)h Fi(s)r(t)q(r)q(i)s(d)r(e)q Fk(.)515 4434 y +SDict begin H.S end + 515 +4434 a 515 4434 a +SDict begin 12 H.A end + 515 4434 a 515 4434 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.3) cvn H.B /DEST +pdfmark end + 515 4434 a 115 +x Fd(3.3)99 b(Calling)25 b(scheduled)g(routines)515 4707 +y Fk(\(See)19 b(\002le)h Fj(Carpet/src/CallFu)o(nc)o(ti)o(on.)o(cc)o +Fk(.\))f(The)i(pr)o(ocess)e(by)i(which)g(the)f(scheduling)515 +4807 y(bins)e(ar)o(e)f(traversed)f(is)i(dif)o(fer)o(ent)e(fr)o(om)h +(the)h(pr)o(ocess)g(which)h(actually)e(calls)h(the)g(r)o(outines)515 +4907 y(within)23 b(the)f(scheduling)h(bins.)30 b(The)22 +b(former)g(has)g(to)h(do)f(with)h(mesh)f(r)o(e\002nement,)g(mak-)515 +5006 y(ing)f(sur)o(e)f(that)g(the)h(coarse)f(and)g(\002ne)h(grids)f(ar) +o(e)f(evolved)h(in)h(the)g(right)g(or)o(der)-6 b(.)24 +b(The)d(latter)1926 5255 y(6)p eop end +%%Page: 7 7 +TeXDict begin 7 6 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.7) cvn H.B /DEST pdfmark +end + 515 232 a 291 x Fk(has)21 +b(to)g(do)g(with)h(tr)o(eating)e(multiple)i(patches,)e(i.e.)g(with)i +(local)f(mode)g(and)g(global)g(mode)515 623 y(operations,)g(as)f +(mentioned)i(above.)639 722 y(In)37 b(the)f(function)h +Fj(CallFunction)p Fk(,)e(all)h(the)h(ar)o(guments)f(that)g(ar)o(e)f +(passed)g(to)i(the)515 822 y(scheduled)29 b(r)o(outines)g(have)g(to)g +(be)g(set)g(up.)51 b(Additionally)-9 b(,)31 b(the)f Fj(cGH)e +Fk(str)o(uctur)o(e)g(has)i(to)515 922 y(be)c(\002lled)h(in.)45 +b(Some)26 b(\002elds)h(in)h(the)f Fj(cGH)e Fk(str)o(uctur)o(e)i(ar)o(e) +e(always)i(kept)g(up-to-date)e(dur)o(-)515 1021 y(ing)d(the)g(r)o +(e\002nement)g(level)f(loops,)i(such)f(as)g(the)g(time)g(step)g(size)f +(and)h(the)f(grid)h(spacing.)515 1121 y(The)f(\002le)h +Fj(Carpet/src/helpe)o(r.)o(cc)15 b Fk(contains)22 b(helper)f(r)o +(outines)h(that)g(allow)g(easy)f(loop-)515 1220 y(ing)h(over)f(r)o +(e\002nement)g(levels)g(and)g(over)g(grid)g(patches.)27 +b(\(Grid)21 b(patches)f(ar)o(e)g(also)i(called)515 1320 +y Fi(compoments)27 b Fk(in)j(Carpet.)50 b(The)29 b(expr)o(ession)f +(component)j(seems)e(to)h(be)e(confusing,)k(so)515 1420 +y(that)27 b(I)g(switched)h(to)f(using)i Fi(patch)c Fk(instead.)45 +b(Some)27 b(sour)o(ce)g(code)g(still)h(r)o(e\003ects)e(the)i(old)515 +1519 y(conventsion.\))639 1619 y(The)d(function)h Fj(CallFunction)20 +b Fk(\002rst)25 b(distinguishes)h(between)f(global)g(mode)g(func-)515 +1719 y(tions)d(and)e(local)h(mode)g(functions.)515 1873 +y Fl(Global)e(mode)h(functions)40 b Fk(ar)o(e)24 b(called)f(once)i +(\(on)g(each)f(pr)o(ocessor\).)36 b(They)25 b(ar)o(e)e(passed)722 +1972 y(all)32 b(the)f(global)h(data,)h(such)f(as)f Fj(cctk)p +1956 1972 27 4 v 30 w(gsh)f Fk(and)h Fj(cctk)p 2496 1972 +V 30 w(delta)p 2746 1972 V 29 w(space)p Fk(,)h(but)f(none)722 +2072 y(of)25 b(the)f(local)g(data,)g(such)h(as)f Fj(cctk)p +1839 2072 V 30 w(lsh)f Fk(or)h Fj(cctk)p 2302 2072 V +30 w(bbox)p Fk(.)35 b(Grid)24 b(functions)h(ar)o(e)e(not)722 +2171 y(accessible,)29 b(and)f(they)g(ar)o(e)f(passed)h(as)f(null)i +(pointers.)48 b(However)-6 b(,)30 b(grid)e(scalars)722 +2271 y(and)e(grid)f(arrays)g(ar)o(e)f(accessible.)40 +b(Ther)o(e)25 b(is)h(an)g(untested)f(gateway)h(to)g(dir)o(ectly)722 +2371 y(call)21 b(local)g(mode)f(functions)i(fr)o(om)e(global)h(mode)g +(functions.)515 2531 y Fl(Local)e(mode)h(functions)41 +b Fk(might)21 b(be)g(called)f(several)g(times)h(\(on)g(each)g(pr)o +(ocessor\),)f(once)722 2630 y(for)29 b(each)g(grid)g(patch)f(that)h(is) +h(assigned)f(to)g(this)h(pr)o(ocessor)-6 b(.)50 b(They)29 +b(r)o(eceive)f(the)722 2730 y(global)23 b(data)e(as)h(well)g(as)g(data) +f(for)h(a)g(single)h(grid)f(patch.)30 b(It)22 b(is)h(illegal)f(to)g +(perform)722 2830 y(global)c(operations,)g(such)g(as)f(synchr)o +(onisation,)j(interpolation,)e(or)g(r)o(eduction,)g(in)722 +2929 y(local)j(mode.)639 3083 y(The)g(distinction)h(between)e(global)h +(and)f(local)g(mode)h(is)g(only)g(important)g(for)g(multi-)515 +3183 y(patch)f(r)o(uns.)26 b(For)21 b(single-patch)g(r)o(uns,)g(the)g +(distinction)h(does)f(not)h(exist.)639 3282 y(Multi-patch)e(r)o(uns)h +(ar)o(e)e(only)i(necessary)f(when)h(ther)o(e)f(ar)o(e)f(mor)o(e)h(grid) +g(patches)g(on)h(a)515 3382 y(r)o(e\002nement)29 b(level)g(than)g(ther) +o(e)f(ar)o(e)g(pr)o(ocessors.)51 b(This)29 b(is)h(normally)g(not)f(the) +h(case)e(for)515 3482 y(\002xed)34 b(mesh)h(r)o(e\002nement.)66 +b(Things)36 b(ar)o(e)d(dif)o(fer)o(ent)f(for)i(adaptive)f(mesh)i(r)o +(e\002nement,)515 3581 y(which)21 b(can)g(cr)o(eate)e(many)i(r)o +(e\002ned)f(r)o(egions.)515 3729 y +SDict begin H.S end + 515 3729 a 515 3729 +a +SDict begin 12 H.A end + 515 3729 a 515 3729 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.4) cvn H.B /DEST +pdfmark end + 515 3729 a 92 x Fd(3.4)99 b(Grid)25 +b(arrays)f(and)h(grid)g(scalars)515 3979 y Fk(Grid)71 +b(scalars)g(ar)o(e)g(implemented)g(as)h(zer)o(o-dimensional)f(grid)h +(arrays)e(with)515 4079 y Fj(DISTRIB=CONSTANT)o Fk(.)639 +4179 y(Grid)16 b(arrays)f(ar)o(e)f(implemented)j(as)e(grid)h +(functions,)h(wher)o(e)f(each)f(grid)h(array)e(gr)o(oup)515 +4278 y(has)27 b(their)g(own)i(r)o(e\002nement)e(hierar)o(chy)f(that)i +(consists)g(of)g(a)e(single)i(level)f(only)i(and)e(is)515 +4378 y(never)k(changed)g(at)g(r)o(un)i(time.)58 b(Grid)32 +b(arrays)e(with)j(less)f(than)f(3)h(dimension)h(ar)o(e)d(ex-)515 +4477 y(tended)e(to)h(have)f(an)g(extent)g(of)h(1)f(\(and)g(no)h(ghost)g +(zones\))g(in)g(the)g(r)o(emaining)f(dimen-)515 4577 +y(sions,)e(so)f(that)g(all)f(quantities)h(in)g(Carpet)f(have)g(3)g +(dimensions)2587 4577 y +SDict begin H.S end + 2587 4577 a -30 x Fc(1)2624 4577 +y +SDict begin 12 H.L end + 2624 4577 a 2624 4577 a +SDict begin [ /Subtype /Link /Dest (Hfootnote.1) cvn /H /I /Border +[0 0 12] /Color [1 0 0] H.B /ANN pdfmark end + 2624 4577 a Fk(.)37 b Fj(DISTRIB=CONSTAN)o(T) +515 4677 y Fk(grid)22 b(arrays)e(ar)o(e)h(implemented)h(by)g +(internally)g(enlar)o(ging)g(the)g(grid)g(array)f(in)h(the)i +Fi(z)f Fk(di-)515 4776 y(r)o(ection,)d(and)g(then)i(distributing)f +(this)h(array)d(onto)j(the)f(pr)o(ocessors.)p 515 4847 +1146 4 v 605 4903 a Fb(1)634 4848 y +SDict begin H.S end + 634 4848 a 634 4848 +a +SDict begin H.R end + 634 4848 a 634 4848 a +SDict begin [ /View [/XYZ H.V] /Dest (Hfootnote.1) cvn H.B /DEST pdfmark +end + 634 4848 a 79 x Fa(This)g(is)g(set)g(by)f(a)h +(compile-time)h(constant)e(and)h(could)g(be)g(changed)f(to)h(allow)h +(for)f(grid)g(functions)h(and)515 5006 y(arrays)17 b(with)g(mor)o(e)f +(than)g(3)h(dimensions.)1926 5255 y Fk(7)p eop end +%%Page: 8 8 +TeXDict begin 8 7 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.8) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.5) cvn H.B /DEST +pdfmark end + 515 440 a 83 x Fd(3.5)99 +b(Flesh)25 b(interfaces)515 681 y Fk(The)i(\003esh)g(has)g(many)g +(interfaces)f(that)h(need)f(to)i(be)e(\002lled)h(in)g(by)g(a)g(driver) +-6 b(.)43 b(These)26 b(ar)o(e)515 781 y(in)e(particular)e(all)h(the)h +(r)o(outines)f(that)g(ar)o(e)f(overloaded)h(in)h(the)f(SetupGH)g +(stage.)33 b(Those)515 880 y(overloaded)27 b(r)o(outines)h(as)g(well)g +(as)g(other)h(helper)e(function)i(ar)o(e)e(implemented)h(in)h(the)515 +980 y(following)22 b(\002les:)515 1146 y Fj(Carpet/src/Check)o(su)o(m.) +o(cc)35 b Fk(catching)21 b(illegal)g(changes)g(to)g(grid)g(variables) +515 1279 y Fj(Carpet/src/Comm.)o(cc)35 b Fk(synchr)o(onisation,)22 +b(pr)o(olongation)515 1412 y Fj(Carpet/src/Cycle)o(.c)o(c)35 +b Fk(time)21 b(level)g(handling)515 1544 y Fj(Carpet/src/Poiso)o(n.)o +(cc)35 b Fk(catching)21 b(uninitialised)g(grid)g(variables)515 +1677 y Fj(Carpet/src/Restr)o(ic)o(t.)o(cc)35 b Fk(r)o(estriction)21 +b(fr)o(om)f(\002ner)h(to)g(coarser)f(grids)515 1810 y +Fj(Carpet/src/Stora)o(ge)o(.c)o(c)36 b Fk(enabling)21 +b(and)f(disabling)h(storage)515 1943 y Fj(Carpet/src/helpe)o(rs)o(.c)o +(c)36 b Fk(small)21 b(low-level)g(helper)f(r)o(outines)515 +2076 y Fj(Carpet/src/varia)o(bl)o(es)o(.cc)35 b Fk(the)42 +b(global)g(variables)f(that)h(keep)g(Carpet's)f(curr)o(ent)722 +2175 y(state)e(\(this)h(is)g(used)f(instead)g(of)g(a)g(GH)g(extension)h +(\227)g(should)g(pr)o(obably)e(be)722 2275 y(changed)21 +b(some)g(time\))639 2441 y(Most)30 b(of)g(these)g(\002les)g(ar)o(e)e +(fairly)i(self-contained,)h(and)e(they)h(mostly)h(marshal)f(the)515 +2541 y(actual)20 b(work)h(to)g Fj(CarpetLib)p Fk(.)515 +2686 y +SDict begin H.S end + 515 2686 a 515 2686 a +SDict begin 12 H.A end + 515 2686 a 515 2686 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.6) cvn H.B /DEST +pdfmark end + 515 +2686 a 98 x Fd(3.6)99 b(Interfaces)24 b(to)h(other)g(thorns)515 +2942 y Fk(Some)42 b(other)g(thorns,)48 b(mostly)43 b(fr)o(om)f(the)g +(Carpet)f(arrangement,)46 b(do)c(need)g(to)g(ac-)515 +3041 y(cess)35 b(internal)f(data)g(of)h(Carpet.)66 b(Carpet)34 +b(keeps)g(its)i(internal)e(state)h(in)g(global)g(vari-)515 +3141 y(ables)h(which)i(ar)o(e)d(declar)o(ed)f(in)k Fj(Carpet/src/carp)o +(et)p 2364 3141 27 4 v 25 w(public.hh)33 b Fk(and)j(de\002ned)h(in)515 +3240 y Fj(Carpet/src/varia)o(bl)o(es)o(.cc)o Fk(.)30 +b(Entities)24 b(that)g(can)g(be)g(accessed)f(fr)o(om)h(C)g(ar)o(e)e +(declar)o(ed)515 3340 y(in)i Fj(Carpet/src/carpe)o(t)p +1363 3340 V 25 w(public.h)p Fk(;)e(some)j(of)f(these)g(would)g(be)g +(quite)g(useful)g(if)g(they)515 3440 y(wer)o(e)c(pr)o(ovided)f(by)i +(the)g(\003esh.)515 3590 y +SDict begin H.S end + 515 3590 a 515 3590 a +SDict begin 12 H.A end + 515 +3590 a 515 3590 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.3.7) cvn H.B /DEST +pdfmark end + 515 3590 a 92 x Fd(3.7)99 b(Missing)26 +b(parts)515 3841 y Fj(Carpet)15 b Fk(does)j(not)g(handle)f(stagger)o +(ed)g(grids.)24 b Fj(Carpet)15 b Fk(does)j(not)g(pr)o(ovide)f +(cell-center)o(ed)515 3940 y(r)o(e\002nement.)27 b Fj(Carpet)19 +b Fk(always)i(enables)g(all)h(storage.)27 b Fj(Carpet)19 +b Fk(does)i(not)h(r)o(un)g(ef)o(\002ciently)515 4040 +y(in)f(parallel.)515 4199 y +SDict begin H.S end + 515 4199 a 515 4199 a +SDict begin 12 H.A end + 515 +4199 a 515 4199 a +SDict begin [ /View [/XYZ H.V] /Dest (section.4) cvn H.B /DEST pdfmark +end + 515 4199 a 126 x Fm(4)119 b(The)30 +b(workhorse)515 4515 y Fk(While)24 b Fj(Carpet)d Fk(pr)o(ovides)h(the)i +(necessary)f(interfaces)g(to)h(the)f(\003esh,)i(the)e(gr)o(unt)i(work)f +(is)515 4614 y(actually)c(done)i(by)f Fj(CarpetLib)p +Fk(.)j(This)d(thorn)h(gr)o(ew)f(fr)o(om)g(an)g(earlier)f(mesh)i(r)o +(e\002nement)515 4714 y(of)j(mine)g(\(Erik)g(Schnetter\))f(library)g +(that)h(was)g(independent)g(of)g(Cactus.)37 b(It)25 b(has)g(in)h(the) +515 4814 y(mean)d(time)g(been)f(thor)o(oughly)i(changed,)f(and)g(it)g +(does)g(not)g(make)g(sense)g(any)g(mor)o(e)g(to)515 4913 +y(use)k(it)g(independent)h(of)f(Cactus.)44 b Fj(CarpetLib)24 +b Fk(contains)k(of)f(thr)o(ee)g(major)g(parts:)38 b(a)27 +b(set)1926 5255 y(8)p eop end +%%Page: 9 9 +TeXDict begin 9 8 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 a +515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.9) cvn H.B /DEST pdfmark +end + 515 232 a 291 x Fk(of)27 +b(generic)f(useful)h(helpers,)h(the)f(grid)g(hierar)o(chy)f(and)g(data) +g(handling,)j(and)d(interpo-)515 623 y(lation)e(operators.)34 +b(Especially)23 b(the)h(latter)f(could)h(pr)o(obably)f(be)h(separated)e +(out.)35 b(While)515 722 y Fj(CarpetLib)17 b Fk(is)k(written)g(in)g +(C++,)g(the)g(interpolators)g(ar)o(e)f(written)h(in)i(F)t +Fa(O)t(R)r(T)t(R)t(A)t(N)t Fk(7)t(7)r(.)515 872 y +SDict begin H.S end + 515 +872 a 515 872 a +SDict begin 12 H.A end + 515 872 a 515 872 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.4.1) cvn H.B /DEST +pdfmark end + 515 872 a 93 x Fd(4.1)99 +b(The)25 b(helpers)515 1123 y Fk(The)32 b(helpers)f(corr)o(espond)h +(closely)g(to)g(Carpet's)f(terminology)-9 b(.)61 b(A)31 +b(class)h Fj(vect<T,D>)515 1223 y Fk(pr)o(ovides)22 b(small)g +Fj(D)p Fk(-dimensional)h(vectors)f(of)h(the)f(type)h +Fj(T)p Fk(,)f(with)h(all)f(the)h(operators)f(that)515 +1322 y(one)i(has)g(learned)e(to)j(enjoy)f(fr)o(om)g(Haskell)f(and)h +(Fortran)f(90.)34 b(A)23 b Fj(vect)f Fk(corr)o(esponds)i(to)515 +1422 y(a)h(grid)h(point)g(location.)42 b(The)26 b(class)g +Fj(bbox<T,D>)c Fk(pr)o(ovides)j Fj(D)p Fk(-dimensional)h(bounding)515 +1522 y(boxes)d(using)h(type)e Fj(T)h Fk(as)g(indices.)32 +b(A)23 b Fj(bbox)e Fk(de\002nes)i(the)g(location)h(and)e(shape)h(of)g +(a)f(grid)515 1621 y(patch.)42 b(Finally)-9 b(,)28 b +Fj(bboxset<T,D>)21 b Fk(is)27 b(a)f(collection)i(of)e +Fj(bbox)p Fk(es.)41 b Fj(bboxsets)23 b Fk(ar)o(e)i(a)h(useful)515 +1721 y(extension)18 b(of)g(the)f(algebra)g(of)g(bboxes,)h(as)f(it)h +(closes)g(the)g Fj(bbox)e Fk(algebra)g(under)h(the)h(union)515 +1820 y(operation.)639 1920 y(The)29 b(\002les)g Fj(CarpetLib/src/d)o +(efs)o(.*)22 b Fk(de\002nes)28 b(useful)h(small)f(helpers)h(and)f +(instan-)515 2020 y(tiates)41 b(the)i(STL)e(templates.)88 +b Fj(CarpetLib/src/dis)o(t.*)35 b Fk(pr)o(ovides)41 b(some)i(r)o +(outines)515 2119 y(ar)o(ound)20 b(MPI.)g(Carpet)g(is)h(closely)g +(coupled)g(to)g(MPI)f(and)g(does)h(not)h(work)f(without)h(it.)639 +2219 y(\(Instead)i(of)h(inserting)g(switches)g(into)h(Carpet)d(to)i +(make)f(it)h(work)g(without)h(MPI,)e(it)515 2319 y(would)g(make)f(mor)o +(e)g(sense)h(to)g(use)g(a)f(dummy)h(version)g(of)f(MPI.)g(PETSc)g(does) +g(contain)515 2418 y(such)e(a)f(dummy)i(version.)k(It)21 +b(is)g(also)g(easily)g(possible)g(to)g(use)g(a)f(fr)o(ee)g(MPI)g +(version)i(such)515 2518 y(as)c(MPICH)h(and)f(use)h(that)f(to)h(r)o(un) +h(on)f(a)f(single)i(pr)o(ocessor)-6 b(.)24 b(However)-6 +b(,)19 b(I)f(cannot)i(see)e(any)515 2617 y(r)o(eal)h(need)i(for)f +(making)h(Carpet)f(work)h(without)h(MPI.\))515 2767 y +SDict begin H.S end + +515 2767 a 515 2767 a +SDict begin 12 H.A end + 515 2767 a 515 2767 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.4.2) cvn H.B /DEST +pdfmark end + 515 2767 +a 93 x Fd(4.2)99 b(The)25 b(grid)g(hierarchy)515 3018 +y Fk(The)f(grid)h(hierar)o(chy)f(is)h(described)f(by)g(a)h(set)f(of)h +(classes.)37 b(Except)24 b(for)h(the)g(actual)e(data,)515 +3118 y(all)d(str)o(uctur)o(es)h(and)f(all)h(information)g(is)g(r)o +(eplicated)e(on)j(all)e(pr)o(ocessors.)515 3284 y Fj(gh)40 +b Fk(is)29 b(a)e(grid)h(hierar)o(chy)-9 b(.)46 b(It)28 +b(describes,)g(for)g(each)f(r)o(e\002nement)h(level,)h(the)f(location)h +(of)722 3384 y(the)e(grid)g(patches.)43 b(This)28 b Fj(gh)e +Fk(does)g(not)i(contain)f(ghost)h(zones)f(or)g(pr)o(olongation)722 +3483 y(boundaries.)f(Ther)o(e)19 b(exists)i(only)h(one)f(common)h +Fj(gh)e Fk(for)h(all)f(grid)h(functions.)515 3649 y Fj(dh)40 +b Fk(is)21 b(a)e(data)f(hierar)o(chy)-9 b(.)25 b(It)19 +b(extends)h(the)g(notion)h(of)f(a)f Fj(gh)g Fk(by)h(ghost)h(zones)f +(and)f(pr)o(olon-)722 3749 y(gation)i(boundaries.)26 +b(The)20 b Fj(dh)g Fk(does)h(most)g(of)g(the)g(bookkeeping)g(work,)g +(deciding)722 3849 y(which)30 b(grid)e(patches)g(interact)g(with)i +(what)e(other)h(grid)f(patches)h(thr)o(ough)g(syn-)722 +3948 y(chr)o(onisation,)c(pr)o(olongation,)f(r)o(estriction,)f(and)g +(boundary)g(pr)o(olongation.)33 b(Un-)722 4048 y(expected)23 +b(situations)i(ar)o(e)d(often)i(caught)g(in)g(one)g(of)g +Fj(dh)p Fk('s)g(many)g(self)f(checks.)35 b(As)722 4147 +y(all)21 b(grid)h(functions)g(have)f(the)g(same)g(number)h(of)f(ghost)h +(zones,)g(ther)o(e)e(exists)i(also)722 4247 y(only)g(one)f +Fj(dh)f Fk(for)h(all)f(grid)h(functions.)515 4413 y Fj(th)40 +b Fk(is)29 b(a)f(time)g(hierar)o(chy)-9 b(.)47 b(It)29 +b(extends)f(the)g(notion)i(of)e(a)g Fj(gh)f Fk(by)i(multiple)g(time)f +(levels.)722 4513 y(Ther)o(e)i(exists)g(one)h Fj(th)f +Fk(per)g(grid)g(function)h(gr)o(oup.)54 b(This)31 b(is)g(a)f(small)h +(class)f(that)722 4612 y(keeps)25 b(track)e(of)i(the)g(curr)o(ent)e +(time)i(on)g(the)g(dif)o(fer)o(ent)d(r)o(e\002nement)j(levels.)36 +b(\(Note)722 4712 y(that)21 b(dif)o(fer)o(ent)e(r)o(e\002nement)h +(levels)h(usually)g(live)g(at)f(dif)o(fer)o(ent)f(times.\))515 +4878 y Fj(gf)40 b Fk(is)24 b(a)f(grid)g(function)h(of)f(a)g(certain)f +(variable)g(type.)33 b(Ther)o(e)22 b(is)i(one)f(instance)h(of)f +Fj(gf)f Fk(for)722 4978 y(every)i(grid)f(function,)i(whether)g(it)f +(has)g(storage)f(or)h(not.)36 b(Each)23 b Fj(gf)g Fk(is)i(associated) +1926 5255 y(9)p eop end +%%Page: 10 10 +TeXDict begin 10 9 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 +a 515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.10) cvn H.B /DEST pdfmark +end + 515 232 a 722 523 a Fk(with)30 +b(a)e Fj(dh)f Fk(and)h(a)g Fj(th)g Fk(and)g(holds)h(the)g(storage)f +(for)g(all)h(levels)f(and)g(all)h(patches.)722 623 y(It)c(pr)o(ovides)g +(interfaces)f(to)i(access)e(and)h(modify)g(these)h(data,)f(either)g +(dir)o(ectly)f(or)722 722 y(thr)o(ough)18 b(interpolation)g(operators.) +24 b Fj(gf)16 b Fk(also)h(handles)g(the)h(data)d(movement)j(dur)o(-)722 +822 y(ing)k(a)e(r)o(egridding)g(operation.)515 988 y +Fj(ggf)40 b Fk(is)25 b(an)f(abstract)g(super)o(class)f(of)i +Fj(gf)e Fk(which)j(is)f(independent)f(of)g(the)h(variable)e(type.)722 +1088 y(This)31 b(is)f(necessary)g(in)g(C++)h(to)f(pr)o(event)f(egr)o +(egious)h(code)g(duplication)g(due)g(to)722 1187 y(class)c(templates.) +41 b(Most)26 b(of)g(the)g(r)o(outines)h(in)f Fj(gf)f +Fk(ar)o(e)g(actually)g(declar)o(ed)f(in)i Fj(ggf)p Fk(,)722 +1287 y(and)19 b(they)g(either)f(ar)o(e)g(virtual)g(functions)i +(themselves,)f(or)g(they)h(call)e(virtual)g(func-)722 +1386 y(tions)k(that)f(ar)o(e)e(declar)o(ed)g(in)i Fj(gf)p +Fk(.)515 1553 y Fj(data)40 b Fk(is)18 b(a)g(container)g(for)g(a)g(grid) +g(patch)g(of)g(a)g(certain)g(variable)f(type.)24 b(This)19 +b(is)g(a)f(glori\002ed)722 1652 y(multi-dimensional)31 +b(array)d(that)h(knows)i(how)f(to)g(move)f(between)g(pr)o(ocessors.)722 +1752 y Fj(data)e Fk(is)i(not)g(only)h(used)e(to)h(stor)o(e)g(the)f +(grid)h(patches)f(that)g(make)h(up)f(a)g Fj(gf)p Fk(,)i(it)f(is)722 +1851 y(also)i(used)f(to)g(move)h(parts)e(of)h(patches)g(ar)o(ound,)i +(e.g.)d(for)h(synchr)o(onisation)i(or)722 1951 y(pr)o(olongation.)515 +2117 y Fj(gdata)39 b Fk(is)24 b(an)g(abstract)f(super)o(class)g(of)h +Fj(data)e Fk(for)i(much)h(the)f(same)g(r)o(easons)f(as)h(for)f +Fj(ggf)p Fk(.)722 2217 y(All)e(information)h(that)e(is)h(independent)g +(of)g(the)g(variable)e(type)i(is)g(kept)g(in)g Fj(gdata)p +Fk(.)515 2367 y +SDict begin H.S end + 515 2367 a 515 2367 a +SDict begin 12 H.A end + 515 2367 a 515 +2367 a +SDict begin [ /View [/XYZ H.V] /Dest (subsection.4.3) cvn H.B /DEST +pdfmark end + 515 2367 a 92 x Fd(4.3)99 b(The)25 b(interpolators)515 +2617 y Fk(Ther)o(e)e(ar)o(e)h(thr)o(ee)g(kinds)h(of)f +(\223interpolators\224:)33 b(for)25 b(pr)o(olongation,)h(for)e(r)o +(estricting,)h(and)515 2717 y(for)18 b(copying.)26 b(The)19 +b(latter)f(is)h(only)h(a)f(glori\002ed)g(hyperslabber)f(that)h(moves)g +(parts)f(of)h(grid)515 2817 y(patches)h(between)h(grid)f(patches.)639 +2916 y(The)28 b(interpolators)g(used)g(for)g(r)o(estriction)g(and)f(pr) +o(olongation)i(ar)o(e)e(dif)o(fer)o(ent)e(fr)o(om)515 +3016 y(those)36 b(used)f(for)h(the)f(generic)h(interpolation)g +(interface)f(in)h(Cactus.)69 b(The)36 b(r)o(eason)f(is)515 +3116 y(that)21 b(interpolation)i(is)f(expensive,)g(and)f(hence)h(the)g +(interpolation)g(operators)g(used)f(for)515 3215 y(r)o(estriction)31 +b(and)g(pr)o(olongation)i(have)d(to)i(be)f(str)o(eamlined)g(and)g +(optimised.)58 b(As)32 b(one)515 3315 y(knows)22 b(the)g(location)f(of) +h(the)f(sampling)h(points)g(for)f(the)g(interpolation,)h(one)g(can)f +(calcu-)515 3415 y(late)16 b(the)g(coef)o(\002cients)g(in)h(advance,)f +(saving)g(much)h(time)g(compar)o(ed)e(to)i(calling)f(a)g(generic)515 +3514 y(interpolation)21 b(interface.)515 3664 y +SDict begin H.S end + 515 3664 +a 515 3664 a +SDict begin 12 H.A end + 515 3664 a 515 3664 a +SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.4.3.1) cvn H.B +/DEST pdfmark end + 515 3664 a 76 x Fl(4.3.1)81 +b(Restriction)515 3898 y Fk(Restriction)22 b(operators)f(move)h(data)e +(fr)o(om)g(\002ner)i(to)f(coarser)g(grids.)27 b(They)21 +b(ar)o(e)f(typically)515 3998 y(called)j(after)f(both)j(the)f(coarse)f +(and)g(the)h(\002ne)g(grid)g(have)f(been)h(advanced)e(to)i(the)g(same) +515 4098 y(time,)18 b(and)e(they)h(overwrite)g(parts)g(of)g(the)g +(coarse)f(grid)h(with)h(information)g(fr)o(om)f(the)g(\002ne)515 +4197 y(grid,)i(coupling)h(the)f(coarse)f(grid)h(evolution)h(to)g(the)f +(\002ne)g(grid)g(evolution.)26 b(In)19 b(principle,)515 +4297 y(ther)o(e)d(could)h(be)g(r)o(estriction)g(operators)g(with)h(dif) +o(fer)o(ent)d(or)o(ders)i(of)g(accuracy)-9 b(.)23 b(Curr)o(ently)515 +4396 y(only)e(a)g(single)g(r)o(estriction)g(operator)f(is)h +(implemented)g(that)g(uses)g(sampling.)639 4496 y(The)165 +b(interface)e(of)i(the)f(r)o(estriction)h(operator)f(\(see)g(\002le)515 +4596 y Fj(CarpetLib/src/re)o(st)o(ri)o(ct)p 1485 4596 +27 4 v 25 w(3d)p 1598 4596 V 31 w(real8.F77)p Fk(\))16 +b(is)515 4762 y Fj(subroutine)39 b(restrict_3d_real8)776 +4861 y(\(src,)j(srciext,)e(srcjext,)g(srckext,)820 4961 +y(dst,)i(dstiext,)e(dstjext,)g(dstkext,)1905 5255 y Fk(10)p +eop end +%%Page: 11 11 +TeXDict begin 11 10 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 +a 515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.11) cvn H.B /DEST pdfmark +end + 515 232 a 820 523 a Fj(srcbbox,)40 +b(dstbbox,)g(regbbox\))645 722 y(integer)172 b(srciext,)40 +b(srcjext,)g(srckext)645 822 y(CCTK_REAL8)g(src\(srciext,srcj)o(ex)o +(t,s)o(rc)o(kex)o(t\))645 922 y(integer)172 b(dstiext,)40 +b(dstjext,)g(dstkext)645 1021 y(CCTK_REAL8)g(dst\(dstiext,dstj)o(ex)o +(t,d)o(st)o(kex)o(t\))645 1121 y(integer)172 b(srcbbox\(3,3\),)38 +b(dstbbox\(3,3\),)g(regbbox\(3,3\))515 1256 y Fk(This)33 +b(interpolator)g(assumes)f(that)h(space)f(has)g(thr)o(ee)g(dimensions.) +62 b(The)33 b(arrays)e Fj(src)515 1355 y Fk(and)22 b +Fj(dst)g Fk(contain)h(the)g(sour)o(ce)g(\(\002ne\))f(and)h(destination) +g(\(coarse\))f(grid)h(patches,)g(stor)o(ed)515 1455 y(in)35 +b(Fortran)g(or)o(der)-6 b(,)37 b(as)d(is)h(customary)g(in)g(Cactus.)68 +b(The)34 b(arrays)g Fj(src)g Fk(and)g Fj(dst)f Fk(have)515 +1555 y(the)40 b(shapes)f Fj(\(srciext,srcjext)o(,sr)o(ck)o(ext)o(\))33 +b Fk(and)40 b Fj(\(dstiext,dstjex)o(t,d)o(st)o(ke)o(xt\))o +Fk(,)515 1654 y(r)o(espectively)19 b(\227)i(this)h(corr)o(esponds)e(to) +h(the)g Fj(cctk)p 2117 1654 27 4 v 30 w(lsh)f Fk(\002eld)g(in)h(the)g +Fj(cGH)f Fk(str)o(uctur)o(e.)639 1754 y(The)25 b(thr)o(ee)e(bboxes)i +(describe)e(the)i(location)g(and)f(shape)g(of)h(the)f(two)i(arrays)d +(and)h(of)515 1853 y(the)k(r)o(egion)g(that)f(should)i(be)f(pr)o +(olongated)f(in)h(the)g(global)h(grid)e(point)i(index)f(system.)515 +1953 y(That)22 b(is,)h(while)g(the)f(two)h(arrays)f Fj(src)f +Fk(and)h Fj(dst)f Fk(ar)o(e)g(stor)o(ed)g(as)i(dense)f(arrays,)f(they)i +(cor)o(-)515 2053 y(r)o(espond)k(to)h(grid)f(patches)h(which)g(in)g +(general)f(have)h(non-unit)g(strides)g(in)g(the)g(global)515 +2152 y(index)18 b(system.)25 b(As)18 b(pr)o(olongation)g(is)h(an)f +(operation)g(that)g(is)g(performed)f(between)h(over)o(-)515 +2252 y(lapping)23 b(grids,)h(the)g(pr)o(olongation)g(r)o(egion)f(is)h +(the)f(same)g(for)h(both)g(the)f(coarse)g(and)g(the)515 +2352 y(\002ne)e(grids.)639 2451 y(A)32 b(few)f(constraints)i(must)f +(hold)g(for)g(these)g(data.)57 b(For)32 b(example,)h(the)f(shapes)g(of) +515 2551 y(the)22 b(arrays)f(must)i(be)f(the)g(same)g(as)g(the)g +(shapes)g(de\002ned)g(by)g(the)g(bounding)h(boxes;)g(the)515 +2650 y(strides)e(in)h(the)f(bounding)i(boxes)e(must)h(dif)o(fer)e(by)h +(the)h(r)o(e\002nement)f(factor;)f(the)i(bound-)515 2750 +y(ing)j(boxes)h(must)f(overlap,)h(and)e(the)h(r)o(egion's)h(bounding)g +(box)f(must)h(be)e(contained)i(in)515 2850 y(the)j(arrays)g(bounding)h +(boxes,)i(etc.)51 b(Checking)30 b(these)g(constraints)g(makes)g(up)f +(about)515 2949 y(thr)o(ee)20 b(quarters)g(of)h(the)g(r)o(estriction)g +(r)o(outine.)639 3049 y(The)f(bboxes)g(themselves)g(ar)o(e)f(her)o(e)g +(r)o(epr)o(esented)e(as)j(Fortran)g(arrays.)k(Their)19 +b(mean-)515 3149 y(ing)i(is)515 3283 y Fj(bbox\(:,1\))38 +b Fk(lower)21 b(boundary)f(\(inclusive\))515 3408 y Fj(bbox\(:,2\))38 +b Fk(upper)20 b(boundary)g(\(inclusive\))515 3533 y Fj(bbox\(:,3\))38 +b Fk(stride)515 3664 y +SDict begin H.S end + 515 3664 a 515 3664 a +SDict begin 12 H.A end + 515 3664 +a 515 3664 a +SDict begin [ /View [/XYZ H.V] /Dest (subsubsection.4.3.2) cvn H.B +/DEST pdfmark end + 515 3664 a 88 x Fl(4.3.2)81 b(Prolongation)515 +3910 y Fk(Ther)o(e)20 b(ar)o(e)g(many)i(pr)o(olongation)g(operators)f +(implemented.)28 b(They)22 b(dif)o(fer)e(in)h(the)h(or)o(der)515 +4010 y(of)c(their)h(interpolation)g(in)g(space)e(\(\002rst)i(and)f +(thir)o(d,)g(or)g(linear)g(and)g(cubic)g(interpolation\))515 +4110 y(and)i(in)i(time)f(\(\002rst)g(and)g(second,)g(or)g(linear)g(and) +g(quadratic\).)k(The)c(higher)h(the)f(or)o(der)f(of)515 +4209 y(interpolation,)h(the)g(lar)o(ger)e(is)i(the)f(stencil,)h(i.e.)f +(the)h(mor)o(e)f(ghost)i(zones)e(and)g(time)h(levels)515 +4309 y(ar)o(e)e(necessary)-9 b(,)20 b(and)g(the)h(mor)o(e)g(expensive)f +(the)h(operation)g(becomes.)639 4408 y(The)217 b(pr)o(olongation)h +(operators)f(live)g(in)g(the)h(\002les)515 4508 y Fj(CarpetLib/src/pr)o +(ol)o(on)o(gat)o(e)p 1572 4508 27 4 v 25 w(3d)p 1685 +4508 V 31 w(real8*.F77)p Fk(,)65 b(and)60 b(the)h(\002le)f(names)g +(indicate)515 4608 y(their)41 b(or)o(ders:)65 b Fi(n)q +Fj(tl)40 b Fk(stands)h(for)g Fi(n)h Fk(time)f(levels,)46 +b(and)40 b Fj(o)q Fi(n)h Fk(stands)g(for)g(an)f(or)o(der)h +Fi(n)515 4707 y Fk(interpolation)21 b(in)h(space)e(\(which)h(uses)g(a)f +(stencil)h(that)g(is)h Fi(n)d Fg(+)f Fk(1)j(grid)g(points)g(wide\).)639 +4807 y(Apart)30 b(fr)o(om)h(taking)g(mor)o(e)g(than)h(one)f +Fj(src)f Fk(array)g(ar)o(gument)h(when)g(using)h(mor)o(e)515 +4907 y(than)23 b(one)g(time)g(level,)g(the)g(interface)e(to)j(the)f(pr) +o(olongation)g(operator)f(is)i(equivalent)f(to)515 5006 +y(that)d(of)h(the)g(r)o(estriction)g(operator)f(described)g(above.)1905 +5255 y(11)p eop end +%%Page: 12 12 +TeXDict begin 12 11 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 +a 515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.12) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (section.5) cvn H.B /DEST pdfmark +end + 515 440 a 86 x Fm(5)119 +b(Regridding,)30 b(how)g(and)g(where)e(and)i(when)515 +715 y Fk(The)25 b(thorn)h Fj(Carpet)d Fk(pr)o(ovides)h(a)h(r)o(outine)g +Fj(RegisterRegridRou)o(tin)o(e)19 b Fk(wher)o(e)25 b(one)g(can)515 +815 y(r)o(egister)20 b(a)h(r)o(egridding)g(r)o(outine.)27 +b(Such)21 b(a)f(r)o(egridding)h(r)o(outine)g(does)g(not)h(have)f(to)h +(actu-)515 914 y(ally)k(r)o(egrid)g(anything,)i(it)f(only)g(has)g(to)g +(r)o(eturn)e(the)i(new)g(desir)o(ed)e(grid)h(hierar)o(chy)-9 +b(,)27 b(i.e.)515 1014 y(basically)20 b(a)g(description)h(of)g(a)f +Fj(gh)p Fk(.)639 1114 y(Thorn)g Fj(CarpetRegrid)15 b +Fk(pr)o(ovides)k(a)g(user)g(interface)f(to)i(the)g(r)o(egridding)f(r)o +(outines)h(in)515 1213 y(Carpet.)j(All)18 b(it)g(does)g(is)h(take)e(a)h +(r)o(egridding)f(speci\002cation)h(fr)o(om)g(the)g(user)g(and)g +(translate)515 1313 y(that)24 b(into)i(a)e Fj(gh)p Fk(.)36 +b(As)25 b(usual,)g(the)g(parts)f(wher)o(e)g(the)h(computer)g(has)f(to)h +(listen)h(to)f(what)f(a)515 1412 y(human)d(being)g(intends)g(ar)o(e)f +(the)h(most)g(complicated.)639 1512 y(As)26 b(humans)h(ar)o(e)e +(usually)i(mor)o(e)e(adept)h(at)f(getting)i(used)f(to)h(computers)f +(than)h(the)515 1612 y(other)e(way)g(ar)o(ound,)g(it)g(is)h(useful)f +(and)f(pr)o(obably)h(necessary)f(to)i(get)f(acquainted)f(with)515 +1711 y(how)d(Carpet)f(thinks)i(in)f(or)o(der)f(to)h(make)g(it)g(do)f +(what)h(is)g(intended.)639 1811 y(Carpet)27 b(does)h(not)h(deal)e(with) +i(r)o(eal-valued)c(coor)o(dinates.)47 b(Carpet)27 b(deals)g(with)i(in-) +515 1911 y(teger)23 b(grid)h(point)h(locations)g(only)-9 +b(,)26 b(and)e(it)g(counts)h(grid)f(points)h(in)g(terms)f(of)g(the)g +(\002nest)515 2010 y(possible)e(grid)g(\(not)g(the)g(\002nest)g(curr)o +(ently)f(existing)i(grid\).)28 b(The)21 b(\002nest)i(possible)f(grid)g +(is)515 2110 y(de\002ned)j(by)h(the)g(maximum)h(number)f(of)g(r)o +(e\002nement)f(levels)h(set)g(in)h Fj(Carpet)p Fk(.)38 +b(Chang-)515 2209 y(ing)19 b(this)h(parameter)e(will)i(change)f(the)g +(meaning)h(of)f(many)g(other)g(values)g(in)h(parameter)515 +2309 y(\002les,)33 b(such)e(as)f(e.g.)h(iteration)f(numbers)h +(\(termination,)j(output\).)55 b(The)31 b(only)g(param-)515 +2409 y(eter)g(that)h(is)h(speci\002ed)f(in)g(terms)g(of)h(the)f +(coarsest)g(grid)g(is)g(the)g(shape)g(of)g(the)h(coars-)515 +2508 y(est)38 b(grid)h(in)g(the)f Fj(global)p 1381 2508 +27 4 v 29 w(*)g Fk(parameters)g(of)g Fj(Carpet)p Fk(.)77 +b(I)38 b(ther)o(efor)o(e)f(suggest)i(to)g(set)515 2608 +y Fj(max)p 652 2608 V 30 w(refinement)p 1122 2608 V 27 +w(levels)25 b Fk(to)j(some)f(lar)o(ge)g(number)g(\(e.g.)f(10\),)i(and)e +(then)i(not)g(chang-)515 2708 y(ing)21 b(it)g(while)h(experimenting)f +(with)g(other)g(parameter)e(settings.)639 2807 y(Carpet)d(also)i(does)f +(not)h(know)g(about)g(symmetries.)25 b(When)17 b(specifying)h(the)f +(location)515 2907 y(of)k(a)g(\002ne)g(grid)h(in)f(terms)h(of)f(grid)g +(points,)h(it)g(is)g(the)f(r)o(esponsibility)h(of)g(the)f(user)g(to)h +(place)515 3007 y(the)32 b(\002ne)g(grid)g(corr)o(ectly)-9 +b(.)59 b(For)32 b(that)g(one)h(has)f(to)h(take)e(ghost)i(zones)g(and)e +(symmetry)515 3106 y(zones)21 b(into)g(account.)639 3206 +y(It)c(is)g(also)f(possible)i(to)e(specify)h(the)f(\002ne)h(grid)g +(locations)g(in)g(terms)g(of)f(r)o(eal-valued)e(co-)515 +3305 y(or)o(dinates.)32 b(In)23 b(this)h(case,)f Fj(CarpetRegrid)18 +b Fk(translates)23 b(these)g(into)h(integer)f(grid)g(points.)515 +3405 y(A)i(good)g(translation)h(is)g(quite)g(complicated,)f(because)g +(it)g(has)h(to)f(take)g(many)h(user)f(ex-)515 3505 y(pectations)g(into) +g(account,)g(such)h(as)e(the)h(location)g(of)g(the)g(origin,)h +(staggering)f(with)g(r)o(e-)515 3604 y(spect)19 b(to)h(the)g(origin,)g +(symmetry)g(boundary)g(conditions,)h(the)e(number)h(of)f(ghost)i(zones) +515 3704 y(etc.)40 b(The)26 b(curr)o(ent)f(translation)h(is)h(naive)e +(and)g(leads)h(to)g(unexpected)f(r)o(esults)g(in)i(many)515 +3804 y(cases.)32 b(A)23 b(r)o(outine)g(that)h(does)f(most)h(of)f(the)h +(time)f(what)h(the)f(user)g(expects)g(while)h(being)515 +3903 y(easy)g(to)i(understand)f(is)g(pr)o(obably)f(important)i(for)f +(the)g(ease)f(of)i(use)f(of)g(Carpet,)g(but)g(it)515 +4003 y(might)d(be)e(some)h(time)g(until)h(it)f(is)g(written.)639 +4102 y Fj(CarpetRegrid)e Fk(contains)25 b(also)f(a)f(r)o(outine)h(that) +g(measur)o(es)f(the)g(err)o(or)-6 b(,)24 b(as)f(pr)o(ovided)515 +4202 y(in)d(a)g(grid)g(function,)g(and)g(the)g(automatically)g(decides) +f(wher)o(e)h(to)g(r)o(e\002ne.)25 b(This)20 b(is)h(called)515 +4302 y(AMR)f(\(adaptive)f(mesh)i(r)o(e\002nement\))g(if)f(it)h(works)h +(ef)o(\002ciently)-9 b(.)639 4401 y(Much)30 b(of)g Fj(CarpetRegrid)24 +b Fk(is)31 b(just)f(slabbed)f(together)h(in)g(an)g(attempt)f(to)h +(\002nd)h(out)515 4501 y(what)f(people)h(need)f(and)g(expect.)54 +b(The)31 b(thorn)g(is)g(a)g(mess,)i(and)d(a)g(complete)h(r)o(ewrite)515 +4601 y(might)20 b(be)f(a)g(good)h(idea,)e(once)i(one)f(knows)i(what)e +(exactly)g(the)g(r)o(ewritten)g(thorn)h(should)515 4700 +y(do.)1905 5255 y(12)p eop end +%%Page: 13 13 +TeXDict begin 13 12 bop 0 0 a +SDict begin /product where{pop product(Distiller)search{pop pop pop +version(.)search{exch pop exch pop(3011)eq{gsave newpath 0 0 moveto +closepath clip/Courier findfont 10 scalefont setfont 72 72 moveto(.)show +grestore}if}{pop}ifelse}{pop}ifelse}if end + 0 0 a 515 232 a +SDict begin H.S end + 515 232 +a 515 232 a +SDict begin H.R end + 515 232 a 515 232 a +SDict begin [ /View [/XYZ H.V] /Dest (page.13) cvn H.B /DEST pdfmark +end + 515 232 a 515 440 a +SDict begin H.S end + 515 +440 a 515 440 a +SDict begin 12 H.A end + 515 440 a 515 440 a +SDict begin [ /View [/XYZ H.V] /Dest (section.6) cvn H.B /DEST pdfmark +end + 515 440 a 86 x Fm(6)119 +b(Random)31 b(ramblings)515 715 y Fk(Carpet)c(uses)i(the)g(STL,)f +(because)g(the)g(STL)g(pr)o(ovides)g(very)h(useful)f(container)h +(classes)515 815 y(such)e(as)g(vectors,)i(sets,)f(and)f(lists.)46 +b(W)-6 b(riting)27 b(these)h(abstract)e(datatypes)g(oneself)h(does)515 +914 y(not)21 b(make)f(sense)g(in)h(these)f(times.)26 +b(It)21 b(makes)f(much)h(mor)o(e)f(sense)g(to)h(politick)g(computer)515 +1014 y(administrators)g(to)g(upgrade)e(their)i(softwar)o(e.)639 +1114 y(The)h(STL)f(and)h Fj(CarpetLib)p Fk('s)c(classes)k(need)f(to)h +(be)g(instantiated)g(explicitly)-9 b(.)29 b(Several)515 +1213 y(compilers)i(have)g(several)f(\223automatic\224)g(schemes)h(that) +g(handle)g(all)g(template)f(issues)515 1313 y(\223just)g(\002ne\224.)53 +b(Except)29 b(they)h(don't.)54 b(One)30 b(wants)g(to)h(select)f(the)g +(following:)45 b(No)30 b(auto-)515 1412 y(matic)e(inclusion)h(of)f +Fj(.cc)f Fk(\002les,)j(no)e(automatic)g(template)g(instantiation)h(at)e +(link)i(time.)515 1512 y(Instead,)20 b(most)h(templates)f(ar)o(e)f +(instantiated)h(explicitly)h(by)f Fj(CarpetLib)p Fk(.)i(It)e(is)h(also) +f(nec-)515 1612 y(essary)27 b(to)g(specify)g(to)g(instantiate)h(used)f +(templates)f(automatically)-9 b(.)45 b(The)27 b(explicit)g(in-)515 +1711 y(stantiations)32 b(of)f Fj(CarpetLib)p Fk('s)d(classes)j(live)g +(in)h(the)f Fj(.cc)f Fk(\002les)i(corr)o(esponding)f(to)h(the)515 +1811 y Fj(.hh)18 b Fk(\002le)i(that)g(de\002ne)f(the)h(templates.)25 +b(The)20 b(STL)f(templates)g(ar)o(e)f(instantiated)i(in)g(the)g(\002le) +515 1911 y Fj(CarpetLib/src/de)o(fs)o(.c)o(c)p Fk(.)639 +2010 y(Carpet)e(makes)h(extensive)f(use)h(of)g(the)g +Fj(assert\(\))d Fk(macr)o(o)i(in)h(C.)g(This)g(is)g(a)g(quick)g(and)515 +2110 y(easy)j(way)h(to)g(ensur)o(e)f(that)g(a)g(certain)h(condition)g +(holds.)32 b(Assert)23 b(statements)g(abort)f(the)515 +2209 y(code)c(if)f(the)i(condition)g(does)f(not)h(hold.)25 +b(Although)19 b(I)f(try)g(to)h(pr)o(ovide)e(useful)h(err)o(or)f(mes-) +515 2309 y(sages)25 b(to)h(the)f(user)-6 b(,)26 b(many)f(unexpected)g +(cases)g(ar)o(e)f(only)i(caught)f(deep)f(inside)i(Carpet)515 +2409 y(and)g(manifest)g(themselves)h(as)g(assertion)g(failur)o(es.)41 +b(If)27 b(you)g(r)o(eport)f(an)g(assertion)h(fail-)515 +2508 y(ur)o(e,)i(it)f(is)h(vitally)f(important)h(to)f(r)o(emember)g +(theaccompanying)g(\002le)h(name)f(and)g(line)515 2608 +y(number)-6 b(.)35 b(It)24 b(would)h(also)f(be)g(useful)g(to)h(extract) +e(fr)o(om)g(the)h(cor)o(e)g(\002le)g(a)g(stack)g(backtrace)515 +2708 y(and)c(the)h(values)f(of)h(the)g(local)g(variables)e(of)i(the)g +(curr)o(ent)f(stack)h(frame.)639 2807 y(Using)37 b(symmetry)f(boundary) +g(conditions)h(such)g(as)e(octant)h(mode)g(is)h(curr)o(ently)515 +2907 y(still)e(awkwar)o(d)e(in)h(Carpet.)65 b(Ther)o(e)34 +b(ar)o(e)e(several)i(r)o(easons)g(for)g(this:)53 b Fj(CarpetRegrid)515 +3007 y Fk(does)28 b(not)g(know)h(about)f(symmetries,)i(and)e(hence)g +(doesn't)g(take)g(them)g(into)h(account)515 3106 y(when)21 +b(choosing)h(r)o(e\002nement)e(r)o(egions.)25 b(The)c(symmetry)g +(conditions)g(on)g(the)g(\002ner)f(grid)515 3206 y(might)i(be)f(dif)o +(fer)o(ent)e(fr)o(om)i(the)g(conditions)i(on)e(the)h(coarser)e(grids,)h +(and)g(the)g(symmetry)515 3305 y(thorns)31 b(cannot)f(cope)f(with)i +(this,)h(so)f(this)f(situation)h(must)f(be)g(avoided:)42 +b(one)31 b(cannot)515 3405 y(use)24 b Fj(avoid)p 889 +3405 27 4 v 29 w(origin=yes)p Fk(,)d(because)j(the)g(\002ner)h(grids)f +(all)h(have)e Fj(avoid)p 2797 3405 V 30 w(origin=no)d +Fk(due)515 3505 y(to)h(the)g(vertex-centr)o(ed)d(r)o(e\002nement.)1905 +5255 y(13)p eop end +%%Trailer + +userdict /end-hook known{end-hook}if +%%EOF diff --git a/Carpet/CarpetWeb/favicon.ico b/Carpet/CarpetWeb/favicon.ico Binary files differnew file mode 100644 index 000000000..f8974cd29 --- /dev/null +++ b/Carpet/CarpetWeb/favicon.ico diff --git a/Carpet/CarpetWeb/feature-requests.html b/Carpet/CarpetWeb/feature-requests.html new file mode 100644 index 000000000..f753bb2dd --- /dev/null +++ b/Carpet/CarpetWeb/feature-requests.html @@ -0,0 +1,84 @@ +<?xml version="1.0" encoding="ISO-8859-15"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> + <title>Carpet Feature Requests</title> + </head> + + <body> + <h1>Carpet Feature Requests</h1> + + <p>As Carpet is being looked at (and used?) by more and more + people, they express more and more wishes about things they miss + in Carpet. Some of these can be quickly fulfilled, others will + take months to implement. Here is a collection of these, so that + people know we don't ignore them.</p> + + <hr /> + + <h2>Small Stuff</h2> + + <ul> + <li>Find a nice Carpet logo</li> + <li>Add Doxygen tags</li> + <li>Compile and run on a few strange supercomputer architectures</li> + <li>Adapt CarpetSlab to new hyperslabbing interface</li> + <li>Slowly create many test cases for Carpet</li> + </ul> + + <h2>Heavier Stuff</h2> + + <ul> + <li>Compile Carpet and PUGH together</li> + <li>Don't restrict all grid functions</li> + <li>Make CarpetInterp interpolate in time as well</li> + <li>Design and write a nicer interface to specify fine grid + locations</li> + <li>Introduce the "convergence level" parameter</li> + <li>Do not enable all storage all the time</li> + </ul> + + <h2>Good Stuff</h2> + + <ul> + <li>Checkpointing and Restart</li> + <li>Parallel performance</li> + <li>Elliptic solvers</li> + </ul> + + <h2>Stuff that would be nice, but won't be needed in the near + future</h2> + + <ul> + <li>Cell centring</li> + <li>Improve the A of the AMR algorithm</li> + </lu> + + <hr /> + + <p> + <a href="http://www.xemacs.org/About/created.html"><img + src="cbxSmall.jpg" alt="Created with XEmacs!" height="36" + width="100" /></a> + + <a href="http://www.anybrowser.org/campaign/"><img + src="logoab8.png" alt="Best Viewed With Any Browser" height="31" + width="88" /></a> + + <a href="http://validator.w3.org/check/referer"><img + src="valid-xhtml10.png" alt="Valid XHTML 1.0!" height="31" + width="88" /></a> + </p> + + <address><a href="mailto:schnetter@uni-tuebingen.de">Erik Schnetter</a></address> +<p> +<!-- Created: Thu Aug 14 20:16:15 CEST 2003 --> +<!-- hhmts start --> +Last modified: Tue Aug 19 13:56:50 CEST 2003 +<!-- hhmts end --> +</p> + </body> +</html> diff --git a/Carpet/CarpetWeb/index.html b/Carpet/CarpetWeb/index.html new file mode 100644 index 000000000..c69a5ceda --- /dev/null +++ b/Carpet/CarpetWeb/index.html @@ -0,0 +1,287 @@ +<?xml version="1.0" encoding="ISO-8859-15"?> +<!DOCTYPE html + PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "DTD/xhtml1-transitional.dtd"> +<!-- $Header: /home/eschnett/C/carpet/Carpet/Carpet/CarpetWeb/index.html,v 1.9 2004/08/07 10:38:07 schnetter Exp $ --> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" /> + <title>CarpetCode</title> + </head> + + <body> + + <h1 align="center">CarpetCode</h1> + +<table> +<tr> +<td valign="top" bgcolor="#ffcc77" width="1%"> + +<p><b>CarpetCode</b><br /> +<a href="http://www.carpetcode.org/">home page</a></p> + +<p><b>Documentation</b><br /> +<a href="doc/documentation.ps">Introduction</a> (ps, 300 kB)<br /> +<a href="doc/first-steps.ps">First Steps</a> (ps, 160 kB)<br /> +<a href="doc/internals.ps">Internals</a> (ps, 130 kB)</p> + +<p><b>Mailing lists</b><br /> +<a href="http://lists.carpetcode.org/listinfo/developers/">Subscribe</a><br /> +<a href="http://lists.carpetcode.org/archives/developers/">Archive</a></p> + +<p><b>Development</b><br /> +<a href="http://bugs.carpetcode.org/">Bugzilla</a><br /> +<a href="feature-requests.html">Missing features</a><br /> +<a href="bugs.html">Known bugs</a></p> + +<p><b>Related</b><br /> +<a href="http://www.cactuscode.org/">Cactus</a></p> +<!-- <a href="http://testweb.aei.mpg.de/NumRelWeb/">numrel@aei</a></p> --> + +<p><b>Feedback</b><br /> +<a href="mailto:schnetter@aei.mpg.de">Send email</a></p> + +</td> +<td valign="top"> + + <p>Carpet is a mesh refinement driver for <a + href="http://www.cactuscode.org/">Cactus</a>. Cactus is a + framework for solving time-dependent partial differential + equations on uniform grids, and Carpet is an extension of Cactus + that make mesh refinement possible. Carpet was originally written + in 2001 by <a + href="http://www.tat.physik.uni-tuebingen.de/~schnette/">Erik + Schnetter</a> at the <a + href="http://www.tat.physik.uni-tuebingen.de/">TAT</a> + (Theoretische Astrophysik Tübingen) and is currently maintained at + the <a href="http://www.aei.mpg.de/">AEI</a> (Max-Planck-Institut + für Gravitationsphysik, Albert-Einstein-Institut). These pages + describe Carpet and its current development.</p> + + <hr /> + + <h2>News</h2> + + <p><b>July 31, 2004:</b> Carpet seems to have reached a point + where it is stable enough to be useful for at least some projects. + Consequently, people expressed the wish to have a version of + Carpet which is stable and sees no disrupting development. The + idea is to have two "branches" of Carpet: a stable version for + production use, and a development version which might not be as + stable. We plan to make the split in about three weeks. The + discussion about this is held on the mailing list; your input is + welcome.</p> + + <p><b>April 7, 2004:</b> Up to now, all Carpet thorns have been + living in a single arrangement for Cactus. This caused problems, + because stable thorns, development thorns, and outdated thorns + were sitting next to each other, confusing newcomers. We have <a + href="#getting-the-code">moved the Carpet arrangement</a> to a new + repository and split it into four. Access to the old Carpet + arrangement has been disabled.</p> + + <p><b>March 3, 2004:</b> We have recently had trouble with I/O + throuth the <a + href="http://zeus.ncsa.uiuc.edu/~jshalf/FlexIO/">FlexIO</a> + library. We suspect that it might have a bug that causes HDF5 + output to fail under certain, random conditions. We have written + a new thorn CarpetIOHDF5 which uses the <a + href="http://hdf.ncsa.uiuc.edu/HDF5/">HDF5</a> library directly, + while remaining compatible to the FlexIO file format. Please test + this thorn, and report any problems or incompatibilities you + find.</p> + + <p>In <b>January 2004</b>, <a + href="http://www.tat.physik.uni-tuebingen.de/~kobras/">Daniel + Kobras</a> set up <a href="http://bugs.carpetcode.org/">Bugzilla + for Carpet</a>. <a href="http://www.bugzilla.org/">Bugzilla</a> + is a bug-tracking system that will, so we hope, help us remember + what is missing or broken in Carpet.</p> + + <p>In <b>October 2003</b>, Erik Schnetter, Scott H. Hawley, and + Ian Hawke published the preprint "Evolutions in 3D numerical + relativity using fixed mesh refinement" as <a + href="http://arXiv.org/abs/gr-qc/0310042">gr-qc/0310042</a>. Its + main point is to present tests of Carpet with the BSSN code (AEI's + spacetime evolution code), and to show that mesh refinement does + not introduce instabilities.</p> + + <p>In <b>August 2003</b>, <a + href="http://www.carpetcode.org/">these web pages</a> were + created.</p> + + <p><b>May 2003</b> has informally been termed <a + href="CarpetMonth/index.html">"Carpet month"</a>. In a flurry of + activity, bugs were fixed and some features added. The BSSN code + of the numerical relativity group at the <a + href="http://www.aei.mpg.de/">AEI</a> now works together with + Carpet.</p> + + <hr /> + + <h2>Documentation</h2> + + <p>We have accumulated a few pieces of documentation:</p> + <ul> + <li>An <a href="doc/documentation.ps">introduction</a> + (ps, 300 kB) to Carpet, as well as a guide to the + first steps for using it. Everybody should have read this. + (This is the same as the Arrangement Guide from the Carpet + sources.)</li> + + <li><a + href=http://www.astro.psu.edu/nr/people/sperhake_ulrich.html">Ulrich + Sperhake</a> wrote a tutorial outlining the <a + href="doc/first-steps.ps">first steps</a> (ps, 160 kB) + that one has to take to install Carpet and run an example + application.</li> + + <li>An explanation of the <a href="doc/internals.ps">internal + workings</a> (ps, 130 kB) of Carpet. You should read + this if you want to modify Carpet.</li> + + <li>The individual Thorn Guides of Carpet. They are available + with the source code. They give details about the thorns' APIs + and user interfaces.</li> + + <li>Thanks to <a + href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</a>, we now + have an <a href="doxygen/html/index.html">overview</a> over all + the routines and data structures in Carpet. Most individual + Doxygen tags are still missing, but the extracted documentation + is already very useful. (The online documentation might not + always be up to date; in case of doubt, extract the + documentation yourself.)</li> + </ul> + + <hr /> + + <h2>Interacting with the developers</h2> + + <p>Most discussions about Carpet, i.e. user questions, feature + requests, and bug reports, are held on the Carpet developers' + mailing list <a + href="mailto:developers@lists.carpetcode.org">developers@lists.carpetcode.org</a>. + You can subscribe and unsubscribe from our <a + href="http://lists.carpetcode.org/">list management web page</a>. + You will also find the mailing list archive there. We thank <a + href="http://www.tat.physik.uni-tuebingen.de/~kobras/">Daniel + Kobras</a> for managing the mailing list server.</p> + + <p>We have started to use <a + href="http://www.bugzilla.org/">Bugzilla</a> to keep track of + requested features or reported bugs in Carpet. You can submit or + comment on issues from our <a + href="http://bugs.carpetcode.org/">Bugzilla pages</a> once you + have created an account there. The old <a + href="feature-requests.html">list of missing features</a> and <a + href="bugs.html">list of known bugs</a> have not yet been moved + over to Bugzilla.</p> + + <hr /> + + <h2 id="getting-the-code">Getting the code</h2> + + <p>Carpet is distributed under the <a + href="http://www.gnu.org/licenses/licenses.html">GNU General + Public License (GPL)</a>. It might be released under the GNU + Lesser General Public License (LGPL) in the future, to match the + distribution terms of Cactus.</p> + + <p>Carpet is a driver for Cactus. It works as a part of Cactus, + and you will need to have the developers' version of Cactus + installed before you can use Carpet. Please look at the <a + href="http://www.cactuscode.org/">Cactus web pages</a> for an + introduction to Cactus and for installation instructions.</p> + + <p>Carpet is available via anonymous <a + href="http://www.cvshome.org/">CVS</a>. The CVSROOT is + <code>:pserver:cvs_anon@cvs.carpetcode.org:/home/cvs/carpet</code>, + and there are several arrangements, each living in a directory. + The arrangement <code>Carpet</code> contains the basic driver part + that everybody needs. The arrangement <code>CarpetExtra</code> + contains useful add-ons and some example code. Development of new + thorns happens in the <code>CarpetDev</code> arrangement, which + means that the code in there is not to be trusted. And finally, + there is a graveyard arrangement <code>CarpetAttic</code> of + things that only used to be useful and are now in a state of + decay.</p> + + <p>The password for anonymous CVS access is <code>anon</code>. We + thank the <a + href="http://www.tat.physik.uni-tuebingen.de/">Institut für + Astronomie und Astrophysik</a> of the Universität Tübingen for + hosting the CVS server.</p> + + <hr /> + + <h2>Pretty pictures</h2> + + <p>We are currently collecting pretty pictures and movies of + simulations that were performed with Carpet. Sorry; there is + nothing to see so far.</p> + + <hr /> + + <h2>Making sense of results</h2> + + <p>Three-dimensional time-dependent simulation results are + difficult enough to interpret when the grid is uniform. With mesh + refinement, the sheer amount of available data makes it necessary + to use professional tools to examine the data. This is not only + the case for "big physics runs", where one (should) know in + advance what to expect, but especially during development, where + things do not always go as planned. <a + href="http://www.aei.mpg.de/~tradke/">Thomas Radke</a> was kind + enough to write an <a + href="http://www.cactuscode.org/VizTools/OpenDX.html">import + module</a> for the visualisation tool <a + href="http://www.research.ibm.com/dx/">OpenDX</a>. He has also + produced an <a href="pictures/carpetwavetoy.jpeg">example + picture</a> (JPEG, 300 KB) from a test run with the scalar + wave equation.</p> + + <hr /> + + <h2>Related projects</h2> + + <ul> + <li>Physicsc: <a href="http://www.cactuscode.org/">Cactus</a>, <a + href="http://numrel.aei.mpg.de/">numrel@aei</a></li> + + <li>I/O: <a href="http://hdf.ncsa.uiuc.edu/HDF5/">HDF5</a>, <a + href="http://www.zib.de/benger/F5/doc/">F5</a></li> + + <li>Visualisation: <a href="http://www.amiravis.com/">Amira</a>, + <a href="http://www.opendx.org/">OpenDX</a></li> + </ul> + + <hr /> + + <p> + <a href="http://www.xemacs.org/About/created.html"><img + src="cbxSmall.jpg" alt="Created with XEmacs!" height="36" + width="100" /></a> + + <a href="http://www.anybrowser.org/campaign/"><img + src="logoab8.png" alt="Best Viewed With Any Browser" height="31" + width="88" /></a> + + <a href="http://validator.w3.org/check/referer"><img + src="valid-xhtml10.png" alt="Valid XHTML 1.0!" height="31" + width="88" /></a> + </p> + + <address><a href="mailto:schnetter@uni-tuebingen.de">Erik Schnetter</a></address> +<p> +<!-- Created: Tue Aug 12 12:12:08 CEST 2003 --> +<!-- hhmts start --> +Last modified: Sat Aug 7 12:37:09 CEST 2004 +<!-- hhmts end --> +</p> + +</td> +</tr> +</table> + </body> +</html> diff --git a/Carpet/CarpetWeb/logoab8.png b/Carpet/CarpetWeb/logoab8.png Binary files differnew file mode 100644 index 000000000..d7dedf419 --- /dev/null +++ b/Carpet/CarpetWeb/logoab8.png diff --git a/Carpet/CarpetWeb/pictures/carpetwavetoy.jpeg b/Carpet/CarpetWeb/pictures/carpetwavetoy.jpeg Binary files differnew file mode 100644 index 000000000..2fdaf4a8e --- /dev/null +++ b/Carpet/CarpetWeb/pictures/carpetwavetoy.jpeg diff --git a/Carpet/CarpetWeb/robots.txt b/Carpet/CarpetWeb/robots.txt new file mode 100644 index 000000000..8f9f069fc --- /dev/null +++ b/Carpet/CarpetWeb/robots.txt @@ -0,0 +1,3 @@ +# allow everything +User-agent: * +Disallow: diff --git a/Carpet/CarpetWeb/valid-xhtml10.png b/Carpet/CarpetWeb/valid-xhtml10.png Binary files differnew file mode 100644 index 000000000..2275ee6ea --- /dev/null +++ b/Carpet/CarpetWeb/valid-xhtml10.png diff --git a/Carpet/README b/Carpet/README new file mode 100644 index 000000000..a6cd536f6 --- /dev/null +++ b/Carpet/README @@ -0,0 +1,11 @@ +CVS info : $Header: /home/eschnett/C/carpet/Carpet/Carpet/README,v 1.9 2003/12/19 11:43:52 schnetter Exp $ + +Cactus Code Arrangement Carpet +Arrangement Author(s) : Erik Schnetter <schnetter@aei.mpg.de> +Arrangement Maintainer(s) : Erik Schnetter <schnetter@aei.mpg.de> +-------------------------------------------------------------------------- + +Purpose of the arrangement: + +This arrangement provides a parallel AMR (adaptive mesh refinement) +driver with MPI. See http://www.carpetcode.org/ for more information. diff --git a/Carpet/doc/Grid1.eps b/Carpet/doc/Grid1.eps new file mode 100644 index 000000000..257a57dfd --- /dev/null +++ b/Carpet/doc/Grid1.eps @@ -0,0 +1,188 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: Grid1.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Fri May 2 11:09:16 2003 +%%For: hawke@xeon06.aei-potsdam.mpg.de (Ian Hawke) +%%BoundingBox: 0 0 612 461 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 461 moveto 0 0 lineto 612 0 lineto 612 461 lineto closepath clip newpath +-49.5 526.5 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +7.500 slw +n 1200 1200 m 10800 1200 l 10800 8400 l 1200 8400 l + cp gs col0 s gr +% Polyline +n 3600 1200 m + 3600 8400 l gs col0 s gr +% Polyline +n 6000 1200 m + 6000 8400 l gs col0 s gr +% Polyline +n 8400 1200 m + 8400 8400 l gs col0 s gr +% Polyline +n 1200 3600 m + 10800 3600 l gs col0 s gr +% Polyline +n 1200 6000 m + 10800 6000 l gs col0 s gr +% Polyline +15.000 slw + [60] 0 sd +n 3600 3600 m 8400 3600 l 8400 6000 l 3600 6000 l + cp gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 4800 3600 m + 4800 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 7200 3600 m + 7200 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 6000 3600 m + 6000 6000 l gs col1 s gr [] 0 sd +% Polyline + [90] 0 sd +n 3600 4800 m + 8400 4800 l gs col1 s gr [] 0 sd +% Polyline +30.000 slw + [15 90] 90 sd +n 6000 4800 m 7200 4800 l 7200 6000 l 6000 6000 l + cp gs col2 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 6600 4800 m + 6600 6000 l gs col2 s gr [] 0 sd +% Polyline + [15 90] 90 sd +n 6000 5400 m + 7200 5400 l gs col2 s gr [] 0 sd +/Times-Roman ff 360.00 scf sf +3525 8775 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +8250 8775 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 360.00 scf sf +10650 8775 m +gs 1 -1 sc (16) col0 sh gr +/Times-Roman ff 360.00 scf sf +4725 6375 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +6525 6375 m +gs 1 -1 sc (9) col0 sh gr +/Times-Roman ff 360.00 scf sf +1125 8775 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +7125 6375 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 8550 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 6150 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 3750 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 360.00 scf sf +825 1350 m +gs 1 -1 sc (12) col0 sh gr +/Times-Roman ff 360.00 scf sf +3300 4950 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +5700 5550 m +gs 1 -1 sc (5) col0 sh gr +/Times-Roman ff 360.00 scf sf +5925 8775 m +gs 1 -1 sc (8) col0 sh gr +$F2psEnd +rs diff --git a/Carpet/doc/Grid1.fig b/Carpet/doc/Grid1.fig new file mode 100644 index 000000000..42763db47 --- /dev/null +++ b/Carpet/doc/Grid1.fig @@ -0,0 +1,51 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 1200 1200 10800 1200 10800 8400 1200 8400 1200 1200 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 3600 1200 3600 8400 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 6000 1200 6000 8400 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 8400 1200 8400 8400 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1200 3600 10800 3600 +2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2 + 1200 6000 10800 6000 +2 2 1 2 1 7 50 0 -1 4.000 0 0 -1 0 0 5 + 3600 3600 8400 3600 8400 6000 3600 6000 3600 3600 +2 1 1 2 1 7 50 0 -1 6.000 0 0 -1 0 0 2 + 4800 3600 4800 6000 +2 1 1 2 1 7 50 0 -1 6.000 0 0 -1 0 0 2 + 7200 3600 7200 6000 +2 1 1 2 1 7 50 0 -1 6.000 0 0 -1 0 0 2 + 6000 3600 6000 6000 +2 1 1 2 1 7 50 0 -1 6.000 0 0 -1 0 0 2 + 3600 4800 8400 4800 +2 2 2 3 2 7 50 0 -1 6.000 0 0 -1 0 0 5 + 6000 4800 7200 4800 7200 6000 6000 6000 6000 4800 +2 1 2 3 2 7 50 0 -1 6.000 0 0 -1 0 0 2 + 6600 4800 6600 6000 +2 1 2 3 2 7 50 0 -1 6.000 0 0 -1 0 0 2 + 6000 5400 7200 5400 +4 0 0 50 0 0 24 0.0000 4 255 180 3525 8775 4\001 +4 0 0 50 0 0 24 0.0000 4 255 360 8250 8775 12\001 +4 0 0 50 0 0 24 0.0000 4 255 360 10650 8775 16\001 +4 0 0 50 0 0 24 0.0000 4 255 180 4725 6375 6\001 +4 0 0 50 0 0 24 0.0000 4 255 180 6525 6375 9\001 +4 0 0 50 0 0 24 0.0000 4 255 180 1125 8775 0\001 +4 0 0 50 0 0 24 0.0000 4 255 360 7125 6375 10\001 +4 0 0 50 0 0 24 0.0000 4 255 180 825 8550 0\001 +4 0 0 50 0 0 24 0.0000 4 255 180 825 6150 4\001 +4 0 0 50 0 0 24 0.0000 4 255 180 825 3750 8\001 +4 0 0 50 0 0 24 0.0000 4 255 360 825 1350 12\001 +4 0 0 50 0 0 24 0.0000 4 255 180 3300 4950 6\001 +4 0 0 50 0 0 24 0.0000 4 255 180 5700 5550 5\001 +4 0 0 50 0 0 24 0.0000 4 255 180 5925 8775 8\001 diff --git a/Carpet/doc/Makefile b/Carpet/doc/Makefile new file mode 100644 index 000000000..8c402b013 --- /dev/null +++ b/Carpet/doc/Makefile @@ -0,0 +1,29 @@ +# $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/Makefile,v 1.2 2002/11/29 16:48:35 schnetter Exp $ + +NAME=documentation + +all: ${NAME}.dvi ${NAME}.ps ${NAME}.ps.gz ${NAME}.pdf + +${NAME}.dvi: carpet.bib + +%.dvi: %.tex + latex $* + bibtex $* + latex $* + latex $* + +%.ps: %.dvi + dvips $* + +%.pdf: %.dvi + pdflatex $* + thumbpdf $* + pdflatex $* + +%.gz: % + gzip --best -c $* > $*.gz + +clean: + $(RM) ${NAME}.aux ${NAME}.bbl ${NAME}.blg ${NAME}.dvi ${NAME}.log ${NAME}.out ${NAME}.pdf ${NAME}.ps ${NAME}.ps.gz ${NAME}.tpt + +.PSEUDO: all clean diff --git a/Carpet/doc/Periodic1.eps b/Carpet/doc/Periodic1.eps new file mode 100644 index 000000000..ed463e2c5 --- /dev/null +++ b/Carpet/doc/Periodic1.eps @@ -0,0 +1,201 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: Periodic1.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Wed Jul 16 14:12:03 2003 +%%For: admin@nbdell08.aei-potsdam.mpg.de () +%%BoundingBox: 0 0 239 132 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 132 moveto 0 0 lineto 239 0 lineto 239 132 lineto closepath clip newpath +-174.8 292.5 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Arc +7.500 slw +gs clippath +5377 3399 m 5433 3378 l 5380 3237 l 5394 3360 l 5324 3257 l cp +3566 3378 m 3622 3399 l 3675 3257 l 3606 3360 l 3619 3237 l cp +eoclip +n 4500.0 3637.5 937.5 -163.7 -16.3 arc +gs col0 s gr + gr + +% arrowhead +n 5324 3257 m 5394 3360 l 5380 3237 l 5324 3257 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 3619 3237 m 3606 3360 l 3675 3257 l 3619 3237 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +4777 3399 m 4833 3378 l 4780 3237 l 4794 3360 l 4724 3257 l cp +2966 3378 m 3022 3399 l 3075 3257 l 3006 3360 l 3019 3237 l cp +eoclip +n 3900.0 3637.5 937.5 -163.7 -16.3 arc +gs col0 s gr + gr + +% arrowhead +n 4724 3257 m 4794 3360 l 4780 3237 l 4724 3257 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 3019 3237 m 3006 3360 l 3075 3257 l 3019 3237 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +6033 3821 m 5977 3800 l 5924 3942 l 5994 3840 l 5980 3962 l cp +4222 3800 m 4166 3821 l 4219 3962 l 4206 3840 l 4275 3942 l cp +eoclip +n 5100.0 3562.5 937.5 163.7 16.3 arcn +gs col0 s gr + gr + +% arrowhead +n 5980 3962 m 5994 3840 l 5924 3942 l 5980 3962 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 4275 3942 m 4206 3840 l 4219 3962 l 4275 3942 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +6633 3821 m 6577 3800 l 6524 3942 l 6594 3840 l 6580 3962 l cp +4822 3800 m 4766 3821 l 4819 3962 l 4806 3840 l 4875 3942 l cp +eoclip +n 5700.0 3562.5 937.5 163.7 16.3 arcn +gs col0 s gr + gr + +% arrowhead +n 6580 3962 m 6594 3840 l 6524 3942 l 6580 3962 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 4875 3942 m 4806 3840 l 4819 3962 l 4875 3942 l cp gs 0.00 setgray ef gr col0 s +% Ellipse +n 4200 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 4800 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 5400 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Polyline +n 2925 3525 m 3075 3525 l 3075 3675 l 2925 3675 l + cp gs col0 s gr +% Polyline +n 3525 3525 m 3675 3525 l 3675 3675 l 3525 3675 l + cp gs col0 s gr +% Polyline +n 5925 3525 m 6075 3525 l 6075 3675 l 5925 3675 l + cp gs col0 s gr +% Polyline +n 6525 3525 m 6675 3525 l 6675 3675 l 6525 3675 l + cp gs col0 s gr +/Times-Roman ff 360.00 scf sf +2925 4875 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +3450 4875 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 360.00 scf sf +4125 4875 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +4725 4875 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +5325 4875 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 360.00 scf sf +5925 4875 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 360.00 scf sf +6525 4875 m +gs 1 -1 sc (12) col0 sh gr +$F2psEnd +rs diff --git a/Carpet/doc/Periodic1.fig b/Carpet/doc/Periodic1.fig new file mode 100644 index 000000000..b99903fab --- /dev/null +++ b/Carpet/doc/Periodic1.fig @@ -0,0 +1,39 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 0 -1 0.000 0 0 1 1 4500.000 3637.500 3600 3375 4500 2700 5400 3375 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 0 1 1 3900.000 3637.500 3000 3375 3900 2700 4800 3375 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 1 1 1 5100.000 3562.500 4200 3825 5100 4500 6000 3825 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 1 1 1 5700.000 3562.500 4800 3825 5700 4500 6600 3825 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4200 3600 75 75 4200 3600 4125 3600 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4800 3600 75 75 4800 3600 4725 3600 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5400 3600 75 75 5400 3600 5325 3600 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 2925 3525 3075 3525 3075 3675 2925 3675 2925 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 3525 3525 3675 3525 3675 3675 3525 3675 3525 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 5925 3525 6075 3525 6075 3675 5925 3675 5925 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6525 3525 6675 3525 6675 3675 6525 3675 6525 3525 +4 0 0 50 0 0 24 0.0000 4 255 180 2925 4875 0\001 +4 0 0 50 0 0 24 0.0000 4 255 180 3450 4875 2\001 +4 0 0 50 0 0 24 0.0000 4 255 180 4125 4875 4\001 +4 0 0 50 0 0 24 0.0000 4 255 180 4725 4875 6\001 +4 0 0 50 0 0 24 0.0000 4 255 180 5325 4875 8\001 +4 0 0 50 0 0 24 0.0000 4 255 360 5925 4875 10\001 +4 0 0 50 0 0 24 0.0000 4 255 360 6525 4875 12\001 diff --git a/Carpet/doc/Periodic2.eps b/Carpet/doc/Periodic2.eps new file mode 100644 index 000000000..067fdcbcf --- /dev/null +++ b/Carpet/doc/Periodic2.eps @@ -0,0 +1,262 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: Periodic2.eps +%%Creator: fig2dev Version 3.2 Patchlevel 3d +%%CreationDate: Wed Jul 16 14:10:26 2003 +%%For: admin@nbdell08.aei-potsdam.mpg.de () +%%BoundingBox: 0 0 239 132 +%%Magnification: 1.0000 +%%EndComments +/$F2psDict 200 dict def +$F2psDict begin +$F2psDict /mtrx matrix put +/col-1 {0 setgray} bind def +/col0 {0.000 0.000 0.000 srgb} bind def +/col1 {0.000 0.000 1.000 srgb} bind def +/col2 {0.000 1.000 0.000 srgb} bind def +/col3 {0.000 1.000 1.000 srgb} bind def +/col4 {1.000 0.000 0.000 srgb} bind def +/col5 {1.000 0.000 1.000 srgb} bind def +/col6 {1.000 1.000 0.000 srgb} bind def +/col7 {1.000 1.000 1.000 srgb} bind def +/col8 {0.000 0.000 0.560 srgb} bind def +/col9 {0.000 0.000 0.690 srgb} bind def +/col10 {0.000 0.000 0.820 srgb} bind def +/col11 {0.530 0.810 1.000 srgb} bind def +/col12 {0.000 0.560 0.000 srgb} bind def +/col13 {0.000 0.690 0.000 srgb} bind def +/col14 {0.000 0.820 0.000 srgb} bind def +/col15 {0.000 0.560 0.560 srgb} bind def +/col16 {0.000 0.690 0.690 srgb} bind def +/col17 {0.000 0.820 0.820 srgb} bind def +/col18 {0.560 0.000 0.000 srgb} bind def +/col19 {0.690 0.000 0.000 srgb} bind def +/col20 {0.820 0.000 0.000 srgb} bind def +/col21 {0.560 0.000 0.560 srgb} bind def +/col22 {0.690 0.000 0.690 srgb} bind def +/col23 {0.820 0.000 0.820 srgb} bind def +/col24 {0.500 0.190 0.000 srgb} bind def +/col25 {0.630 0.250 0.000 srgb} bind def +/col26 {0.750 0.380 0.000 srgb} bind def +/col27 {1.000 0.500 0.500 srgb} bind def +/col28 {1.000 0.630 0.630 srgb} bind def +/col29 {1.000 0.750 0.750 srgb} bind def +/col30 {1.000 0.880 0.880 srgb} bind def +/col31 {1.000 0.840 0.000 srgb} bind def + +end +save +newpath 0 132 moveto 0 0 lineto 239 0 lineto 239 132 lineto closepath clip newpath +-174.8 292.5 translate +1 -1 scale + +/cp {closepath} bind def +/ef {eofill} bind def +/gr {grestore} bind def +/gs {gsave} bind def +/sa {save} bind def +/rs {restore} bind def +/l {lineto} bind def +/m {moveto} bind def +/rm {rmoveto} bind def +/n {newpath} bind def +/s {stroke} bind def +/sh {show} bind def +/slc {setlinecap} bind def +/slj {setlinejoin} bind def +/slw {setlinewidth} bind def +/srgb {setrgbcolor} bind def +/rot {rotate} bind def +/sc {scale} bind def +/sd {setdash} bind def +/ff {findfont} bind def +/sf {setfont} bind def +/scf {scalefont} bind def +/sw {stringwidth} bind def +/tr {translate} bind def +/tnt {dup dup currentrgbcolor + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add + 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} + bind def +/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul + 4 -2 roll mul srgb} bind def + /DrawEllipse { + /endangle exch def + /startangle exch def + /yrad exch def + /xrad exch def + /y exch def + /x exch def + /savematrix mtrx currentmatrix def + x y tr xrad yrad sc 0 0 1 startangle endangle arc + closepath + savematrix setmatrix + } def + +/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def +/$F2psEnd {$F2psEnteredState restore end} def + +$F2psBegin +10 setmiterlimit + 0.06000 0.06000 sc +% +% Fig objects follow +% +% Polyline +30.000 slw +n 4125 3525 m + 4275 3675 l gs col1 s gr +% Polyline +n 4125 3675 m + 4275 3525 l gs col1 s gr +% Polyline +n 4425 3525 m + 4575 3675 l gs col1 s gr +% Polyline +n 4425 3675 m + 4575 3525 l gs col1 s gr +% Polyline +n 4725 3525 m + 4875 3675 l gs col1 s gr +% Polyline +n 4725 3675 m + 4875 3525 l gs col1 s gr +% Polyline +n 5025 3525 m + 5175 3675 l gs col1 s gr +% Polyline +n 5025 3675 m + 5175 3525 l gs col1 s gr +% Polyline +n 5325 3525 m + 5475 3675 l gs col1 s gr +% Polyline +n 5325 3675 m + 5475 3525 l gs col1 s gr +% Polyline +n 5625 3525 m + 5775 3675 l gs col1 s gr +% Polyline +n 5625 3675 m + 5775 3525 l gs col1 s gr +% Polyline +n 3900 3525 m + 3900 3675 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 3825 3600 m + 3975 3600 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 3600 3525 m + 3600 3675 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 3525 3600 m + 3675 3600 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 6000 3525 m + 6000 3675 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 5925 3600 m + 6075 3600 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 6300 3525 m + 6300 3675 l gs col1 0.00 shd ef gr gs col1 s gr +% Polyline +n 6225 3600 m + 6375 3600 l gs col1 0.00 shd ef gr gs col1 s gr +% Arc +7.500 slw +gs clippath +5377 3399 m 5433 3378 l 5380 3237 l 5394 3360 l 5324 3257 l cp +3566 3378 m 3622 3399 l 3675 3257 l 3606 3360 l 3619 3237 l cp +eoclip +n 4500.0 3637.5 937.5 -163.7 -16.3 arc +gs col0 s gr + gr + +% arrowhead +n 5324 3257 m 5394 3360 l 5380 3237 l 5324 3257 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 3619 3237 m 3606 3360 l 3675 3257 l 3619 3237 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +5677 3399 m 5733 3378 l 5680 3237 l 5694 3360 l 5624 3257 l cp +3866 3378 m 3922 3399 l 3975 3257 l 3906 3360 l 3919 3237 l cp +eoclip +n 4800.0 3637.5 937.5 -163.7 -16.3 arc +gs col0 s gr + gr + +% arrowhead +n 5624 3257 m 5694 3360 l 5680 3237 l 5624 3257 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 3919 3237 m 3906 3360 l 3975 3257 l 3919 3237 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +6033 3821 m 5977 3800 l 5924 3942 l 5994 3840 l 5980 3962 l cp +4222 3800 m 4166 3821 l 4219 3962 l 4206 3840 l 4275 3942 l cp +eoclip +n 5100.0 3562.5 937.5 163.7 16.3 arcn +gs col0 s gr + gr + +% arrowhead +n 5980 3962 m 5994 3840 l 5924 3942 l 5980 3962 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 4275 3942 m 4206 3840 l 4219 3962 l 4275 3942 l cp gs 0.00 setgray ef gr col0 s +% Arc +gs clippath +6333 3821 m 6277 3800 l 6224 3942 l 6294 3840 l 6280 3962 l cp +4522 3800 m 4466 3821 l 4519 3962 l 4506 3840 l 4575 3942 l cp +eoclip +n 5400.0 3562.5 937.5 163.7 16.3 arcn +gs col0 s gr + gr + +% arrowhead +n 6280 3962 m 6294 3840 l 6224 3942 l 6280 3962 l cp gs 0.00 setgray ef gr col0 s +% arrowhead +n 4575 3942 m 4506 3840 l 4519 3962 l 4575 3942 l cp gs 0.00 setgray ef gr col0 s +% Ellipse +n 4200 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 4800 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Ellipse +n 5400 3600 75 75 0 360 DrawEllipse gs col0 s gr + +% Polyline +n 2925 3525 m 3075 3525 l 3075 3675 l 2925 3675 l + cp gs col0 s gr +% Polyline +n 3525 3525 m 3675 3525 l 3675 3675 l 3525 3675 l + cp gs col0 s gr +% Polyline +n 5925 3525 m 6075 3525 l 6075 3675 l 5925 3675 l + cp gs col0 s gr +% Polyline +n 6525 3525 m 6675 3525 l 6675 3675 l 6525 3675 l + cp gs col0 s gr +/Times-Roman ff 360.00 scf sf +2925 4875 m +gs 1 -1 sc (0) col0 sh gr +/Times-Roman ff 360.00 scf sf +3450 4875 m +gs 1 -1 sc (2) col0 sh gr +/Times-Roman ff 360.00 scf sf +4125 4875 m +gs 1 -1 sc (4) col0 sh gr +/Times-Roman ff 360.00 scf sf +4725 4875 m +gs 1 -1 sc (6) col0 sh gr +/Times-Roman ff 360.00 scf sf +5325 4875 m +gs 1 -1 sc (8) col0 sh gr +/Times-Roman ff 360.00 scf sf +5925 4875 m +gs 1 -1 sc (10) col0 sh gr +/Times-Roman ff 360.00 scf sf +6525 4875 m +gs 1 -1 sc (12) col0 sh gr +$F2psEnd +rs diff --git a/Carpet/doc/Periodic2.fig b/Carpet/doc/Periodic2.fig new file mode 100644 index 000000000..f8fc9e532 --- /dev/null +++ b/Carpet/doc/Periodic2.fig @@ -0,0 +1,99 @@ +#FIG 3.2 +Landscape +Center +Inches +Letter +100.00 +Single +-2 +1200 2 +5 1 0 1 0 7 50 0 -1 0.000 0 0 1 1 4500.000 3637.500 3600 3375 4500 2700 5400 3375 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 0 1 1 4800.000 3637.500 3900 3375 4800 2700 5700 3375 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 1 1 1 5100.000 3562.500 4200 3825 5100 4500 6000 3825 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +5 1 0 1 0 7 50 0 -1 0.000 0 1 1 1 5400.000 3562.500 4500 3825 5400 4500 6300 3825 + 1 1 1.00 60.00 120.00 + 1 1 1.00 60.00 120.00 +6 4050 3450 4350 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4125 3525 4275 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4125 3675 4275 3525 +-6 +6 4350 3450 4650 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4425 3525 4575 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4425 3675 4575 3525 +-6 +6 4650 3450 4950 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 3525 4875 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 4725 3675 4875 3525 +-6 +6 4950 3450 5250 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5025 3525 5175 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5025 3675 5175 3525 +-6 +6 5250 3450 5550 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5325 3525 5475 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5325 3675 5475 3525 +-6 +6 5550 3450 5850 3750 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5625 3525 5775 3675 +2 1 0 3 1 7 50 0 -1 0.000 0 0 -1 0 0 2 + 5625 3675 5775 3525 +-6 +6 3750 3450 4050 3750 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 3900 3525 3900 3675 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 3825 3600 3975 3600 +-6 +6 3450 3450 3750 3750 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 3600 3525 3600 3675 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 3525 3600 3675 3600 +-6 +6 5850 3450 6150 3750 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 6000 3525 6000 3675 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 5925 3600 6075 3600 +-6 +6 6150 3450 6450 3750 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 6300 3525 6300 3675 +2 1 0 3 1 1 50 0 0 0.000 0 0 -1 0 0 2 + 6225 3600 6375 3600 +-6 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4200 3600 75 75 4200 3600 4125 3600 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 4800 3600 75 75 4800 3600 4725 3600 +1 3 0 1 0 7 50 0 -1 0.000 1 0.0000 5400 3600 75 75 5400 3600 5325 3600 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 2925 3525 3075 3525 3075 3675 2925 3675 2925 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 3525 3525 3675 3525 3675 3675 3525 3675 3525 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 5925 3525 6075 3525 6075 3675 5925 3675 5925 3525 +2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5 + 6525 3525 6675 3525 6675 3675 6525 3675 6525 3525 +4 0 0 50 0 0 24 0.0000 4 255 180 2925 4875 0\001 +4 0 0 50 0 0 24 0.0000 4 255 180 3450 4875 2\001 +4 0 0 50 0 0 24 0.0000 4 255 180 4125 4875 4\001 +4 0 0 50 0 0 24 0.0000 4 255 180 4725 4875 6\001 +4 0 0 50 0 0 24 0.0000 4 255 180 5325 4875 8\001 +4 0 0 50 0 0 24 0.0000 4 255 360 5925 4875 10\001 +4 0 0 50 0 0 24 0.0000 4 255 360 6525 4875 12\001 diff --git a/Carpet/doc/carpet.bib b/Carpet/doc/carpet.bib new file mode 100644 index 000000000..f95b7da84 --- /dev/null +++ b/Carpet/doc/carpet.bib @@ -0,0 +1,50 @@ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/carpet.bib,v 1.2 2003/08/15 15:36:05 schnetter Exp $ + +@Misc{Carpet__erik-schnetter, + author = {Erik Schnetter}, + title = {\href{mailto:schnetter@uni-tuebingen.de} {\textless + schnetter@uni-tuebingen.de\textgreater}} +} + +@Misc{Carpet__astro-psu-edu, + author = {{Department for} Astronomy and Astrophysics}, + title = {\href{http://www.astro.psu.edu/} + {http://www.astro.psu.edu/}} +} + +@Misc{Carpet__psu-edu, + author = {{Penn State University}}, + title = {\href{http://www.psu.edu/} {http://www.psu.edu/}} +} + +@Misc{Carpet__cactuscode-org, + author = {{Cactus web pages}}, + title = {\href{http://www.cactuscode.org/} + {http://www.cactuscode.org/}} +} + +@Misc{Carpet__gnuplot-info, + author = {gnuplot}, + title = {\href{http://www.gnuplot.info/} + {http://www.gnuplot.info/}} +} + +@Misc{Carpet__FlexIO, + author = {John Shalf}, + title = {{FlexIO} library: + \href{http://zeus.ncsa.uiuc.edu/~jshalf/FlexIO/} + {http://zeus.ncsa.uiuc.edu/\textasciitilde + jshalf/FlexIO/}} +} + +@Misc{Carpet__HDF, + author = {HDF}, + title = {\href{http://hdf.ncsa.uiuc.edu/} + {http://hdf.ncsa.uiuc.edu/}} +} + +@Misc{Carpet__CVS, + author = {CVS}, + title = {\href{http://www.cvshome.org/} + {http://www.cvshome.org/}} +} diff --git a/Carpet/doc/documentation.tex b/Carpet/doc/documentation.tex new file mode 100644 index 000000000..546b93d4d --- /dev/null +++ b/Carpet/doc/documentation.tex @@ -0,0 +1,892 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/documentation.tex,v 1.10 2003/07/21 18:48:08 schnetter Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevent thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be sparated with a \\ or a comma +% - You can define your own macros are OK, but they must appear after +% the START CACTUS THORNGUIDE line, and do not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphix package. +% More specifically, with the "includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us (later) to create a PDF version of the ThornGuide +% via pdflatex. | +% - References should be included with the latex "bibitem" command. +% - use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/}} +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/documentation.tex,v 1.10 2003/07/21 18:48:08 schnetter Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../doc/latex/cactus} +\usepackage{hyperref} + +\begin{document} + +% The author of the documentation +\author{Erik Schnetter \textless schnetter@uni-tuebingen.de\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{Carpet} + +% the date your document was last changed, if your document is in CVS, +% please use: +\date{$ $Date: 2003/07/21 18:48:08 $ $} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} +This text describes the Carpet arrangement. Carpet is a mesh +refinement driver for Cactus that can replace PUGH, the standard +unigrid driver. Carpet supports multiple refinement levels and +multiple grid patches. Carpet can run in parallel, but not yet very +efficiently so. Carpet does not yet support multiple grid +hierarchies, i.e.\ shadow hierarchies or automatic convergence tests. +\end{abstract} + + + +\section{Overview} + +\subsection{Fixed Mesh Refinement, aka Box-in-Box} + +Fixed Mesh Refinement (FMR), also known as box-in-box, is a way to +increase the local resolution in unigrid applications, while retaining +the basic unigrid character of an application. A small number (maybe +two or three) of grids with varying resolution overlay each other, +where the coarsest grid has the largest extent. This allows the +application to benefit from the higher resolution of the smaller grids +while keeping the outer boundary far out at the same time. The main +advantage of FMR are that it needs far less resources than globally +increasing the resolution. + +\subsection{Carpet} + +Carpet is the name of an FMR driver, i.e.\ the back end that handles +storage allocation for the grid functions, parallelism, I/O, and the +various inter-grid operations. Carpet was developed in early summer +of 2000 by Erik Schnetter \cite{Carpet__erik-schnetter}, then a +research scholar in the Department for Astronomy and Astrophysics +\cite{Carpet__astro-psu-edu} of Penn State University +\cite{Carpet__psu-edu}. In spring 2001, Carpet was coupled to Cactus +as a drop-in enhancement for the standard unigrid Cactus driver PUGH. + +\subsection{Cactus} + +From the main Cactus web pages \cite{Carpet__cactuscode-org}: +\begin{quote} +Cactus is an open source problem solving environment designed for +scientests and engineers. Its modular structure easily enables +parallel computation across different architectures and collaborative +code development between different groups. Cactus originated in the +academic research community, where it was developed and used over many +years by a large international collaboration of physicists and +computational scientists. +\end{quote} + + + +\section{Introduction} + +\subsection{Fixed Mesh Refinement} + +A standard way of solving partial differential equations are finite +differences on a regular grid. This is also called \emph{unigrid}. +Such an application discretises its problem space onto a single, +rectangular grid which has everywhere the same grid spacing. This +grid might be broken up into several parts for parallelisation +purposes, but parallelisation should be transparent to the physics +part of the application. + +Increasing the resolution in a unigrid application is somewhat +expensive. For example, increasing the resolution by a factor of two +requires a factor of eight more storage in three dimensions. Given a +constant Courant factor, the calculation time will even go up by a +factor of sixteen. This behaviour makes it easy to find problems that +cannot be solved on contemporary supercomputers, no matter how big and +fast those computers are. + +Apart from physical insight, which often has to be used to decrease +the problem size until it fits the current hardware, there are also +numerical and algorithmic methods to decrease the resource +requirements of the application. Most applications need the high +resolution only in a part of the simulation domain. Discretisation +methods that don't require a uniform resolution, such as finite +elements, can implement non-uniform resolutions very naturally. One +problem with finite elements is that many physicists today are not +familiar with finite elements, or shy away from their perceived +complexity, or are not willing to adapt existing finite difference +code. + +Fixed Mesh Refinement (FMR) is a poor man's way of implementing a +non-uniform resolution into a unigrid application with minimal changes +to its structure. Instead of only one grid, there are several grids +or grid patches with different resolutions. The coarsest grid usually +encloses the whole simulation domain. Successively finer grids +overlay the coarse grid at those locations where a higher resolutions +is needed. The coarser grids provide boundary conditions to the finer +grid through interpolation. + +Instead of updating only one grid, the application has to update all +grids. The usual approach is to first take a step on the coarsest +grid, and then recursively take several smaller steps on the finer +grids. The Courant criterion requires that the step sizes on the +finer grids be smaller than on the coarse grid. The boundary values +for the finer grids are found through interpolation in space and time +from the coarser grid. In the end, the information on the finer grids +is injected into the coarse grids. + +Strictly speaking there is no need for a coarse grid on the regions +covered by the finer grids. But as stated above, the resources +required for treating the overlapping region on the coarse grid are +only minimal compared to treating the finer grids. And because a +coarse grid with a hole often creates complications, this obvious +optimisation is often left out. + +\subsection{Carpet} + +Carpet is a C++ library that provides infrastructure to describe +regions of varying resolution in a convenient and efficient way. +Carpet contains routines to manage grid hierarchies, containing the +relationships between the components of the grid on the different +refinement and convergence levels. Carpet has a notion of simulation +time and grid spacing, which are necessary for interpolation, and +contains efficient interpolators. + +Carpet can run on several processors in parallel using MPI for +communication. Each grid can be broken down into several components, +and every component has a home processor. Carpet also contains +operators to move certain regions to a different processor, or to +synchronise all components of a grid. + +Carpet is also an arrangement of thorns for Cactus, implementing a +driver and associated I/O routines for both ASCII and binary I/O. It +should be possible to substitute Carpet for the standard Cactus driver +PUGH without changes to the application thorns and thus use Carpet as +a unigrid driver. Making use of the FMR capabilities of Carpet +usually requires some rearranging of the application, comparable in +general to the changes necessary for a uniprocessor application to run +on multiple processors. + +The driver section of Carpet contains the logic to manage storage for +the grid functions, to traverse the grid hierarchy for all scheduled +routines, and to automatically apply the necessary inter-grid +operators for prolongation (interpolation of the fine grid boundaries) +and restriction (injecting the fine grid information back into the +coarse grid). + +The ASCII I/O routines use the quasi-standard gnuplot +\cite{Carpet__gnuplot-info} format. The binary I/O routines use the +FlexIO library \cite{Carpet__FlexIO} written by John Shalf. It allows +efficient and platform independent I/O. The FlexIO format is based on +HDF \cite{Carpet__HDF} and also supported by several visualisation +packages. + +Carpet is copyrighted by Erik Schnetter, and is available under the +GPL licence from a CVS \cite{Carpet__CVS} repository. + +\subsection{WaveToy} + +Cactus comes with a sample application called \emph{WaveToy}, which +solves the scalar wave equation with various initial data and boundary +conditions. An an example, I have extended WaveToy so that is uses +Carpet's FMR capabilities. WaveToy serves both as a test case for +Carpet, and as example of how to convert an application to using FMR. + +The equation solved by WaveToy is the well known scalar wave equation, +discretised using the Leapfrog method with three time levels, yielding +second order accuracy in space and time. A typical set of initial +data are a plane wave, and a typical boundary condition is +periodicity. Those allow long term simulations as well as easy and +meaningful comparisons to the analytic solution. + + + +\section{Compiling Cactus With Carpet} + +Carpet has been written in C++, using templates and the STL (Standard +Template Library). Both templates and the STL make writing and +debugging code a lot easier. Without templates, I would have had to +put much effort into making Carpet support all of Cactus' data types. +Without the STL, I would have had to spend quite some time +implementing basic containers such as lists or sets. I still had to +implement a custom vector type, because STL's vector type is optimised +for large vectors only, and I needed threedimensional vectors of +integers. + +The inner loops of Carpet are the inter-grid operators, that is the +routines that copy, restrict, and prolongate between grids. Due to +Cactus it was rather easy to write these in \textsc{Fortran 77}, which +makes them both fast and portable. + +Carpet is an arrangement in Cactus. It can theoretically be compiled +without any external library, if you omit the binary I/O support which +requires the FlexIO library. FlexIO is already part of Cactus in the +thorn CactusExternal/FlexIO. I suggest that you enable support for +the HDF format in the FlexIO library, although this is not necessary. +For that, you have to install the HDF5 libraries first. + +\subsection{Hurdle 1: STL} + +Some operating systems do not have a compliant STL (Standard Template +Library) installed. If not, then you are in trouble. Carpet does +make use of the STL, and there is no way around that. + +\subsection{Hurdle 2: Templates} + +Some compilers contain switches to instantiate some or all templates +automatically. This usually does not work when files are put into +libraries, which is what Cactus does. The scheme that I found working +on all machines is to instantiate most templates by hand, and have the +compiler instantiate the missing templates for every object file. +This is the default for gcc. On SGIs, you have to pass the options +\texttt{-no\_auto\_include -ptused} to the C++ compiler. + +The C++ standard specifies a limit when using templates as template +parameters. Carpet's use of the GNU STL exceeds this limit. Gcc +requires the option \texttt{-ftemplate-depth-30} to enable this. + +\subsection{WaveToy} + +Unfortunately, PUGH and Carpet cannot yet be both compiled into a +single application. (This will be fixed soon.) That means that you +will have separate executables for unigrid and for mesh refinement +applications. + +Configuring Carpet is not quite trivial, because Cactus provides +currently no way to autodetect the settings for Carpet. Hence you +will have to set the settings manually. I propose that you start with +on of the pre-made options files in the directory +\texttt{Carpet/Carpet/options}. Try e.g.\ \texttt{carpet-harpo-sgi} +for an SGI, or \texttt{carpet-lilypond} for Linux with gcc, or +\texttt{carpet-lilypond-ic} for Linux with the Intel compilers. Once +you have a working options file for your machine, send it to me, so +that I can include it. + +As for the thorn list: Carpet has its own ASCII output thorn, which +outputs more information than CactusBase/IOASCII. The thorn list that +I use is + +\begin{verbatim} +CactusBase/Boundary # boundary (grid) [ ] { } +CactusBase/CartGrid3D # grid ( ) [ ] {driver} +#CactusBase/IOASCII # IOASCII (IO,Hyperslab) [ ] {IO} +CactusBase/IOBasic # IOBasic (IO) [ ] {IO} +CactusBase/IOUtil # IO ( ) [ ] { } +CactusBase/LocalInterp # LocalInterp ( ) [ ] { } +CactusBase/Time # time ( ) [ ] { } +CactusConnect/HTTPD # HTTPD (Socket) [ ] {Cactus} +CactusConnect/HTTPDExtra # http_utils (httpd,IO) [ ] { } +CactusConnect/Socket # Socket ( ) [ ] { } +CactusExternal/FlexIO # FlexIO ( ) [ ] { } +CactusExternal/jpeg6b # jpeg6b ( ) [ ] { } +CactusIO/IOJpeg # IOJpeg (IO,Hyperslab,jpeg6b) [ ] {IO} +CactusUtils/NaNChecker # NaNChecker ( ) [ ] { } +CactusWave/IDScalarWave # idscalarwave (wavetoy,grid) [ ] {grid} +CactusWave/IDScalarWaveC # idscalarwave (wavetoy,grid) [ ] {grid} +CactusWave/IDScalarWaveCXX # idscalarwave (wavetoy,grid) [ ] {grid} +#CactusWave/IDScalarWaveElliptic # idscalarwaveelliptic (grid,wavetoy,ellbase) [ ] {idscalarwave} +CactusWave/WaveBinarySource # binarysource (wavetoy,grid,idscalarwave) [ ] { } +CactusWave/WaveToyC # wavetoy (Grid,Boundary) [ ] { } +CactusWave/WaveToyCXX # wavetoy (Grid,Boundary) [ ] { } +CactusWave/WaveToyF77 # wavetoy (Grid,Boundary) [ ] { } +#CactusWave/WaveToyF90 # wavetoy (Grid,Boundary) [ ] { } +#CactusWave/WaveToyFreeF90 # wavetoy (Grid,Boundary) [ ] { } +Carpet/Carpet # driver (CarpetLib) [ ] {Cactus,IO} +Carpet/CarpetIOASCII # IOASCII (CarpetLib,driver,Hyperslab) [ ] {IO} +Carpet/CarpetIOFlexIO # IOFlexIO (CarpetLib,driver,Hyperslab,FlexIO) [ ] {IO} +#Carpet/CarpetIOHDF5 # IOHDF5 (CarpetLib,driver,Hyperslab) [ ] {IO} +#Carpet/CarpetIOSer # IOSer (CarpetLib,driver,Hyperslab) [ ] {IO} +Carpet/CarpetLib # CarpetLib ( ) [ ] { } +Carpet/CarpetReduce # reduce (CarpetLib,driver) [ ] { } +Carpet/CarpetRegrid # CarpetRegrid (CarpetLib,driver) [ ] { } +Carpet/CarpetSlab # Hyperslab (CarpetLib,driver) [ ] { } +\end{verbatim} + +The thorns prefixed with \texttt{\#} are disabled. IOASCII conflicts +with CarpetIOASCII. I disabled IDScalarWaveElliptic because there is +no elliptic solver for mesh refinement, and I disabled WaveToyF90 and +WaveToyFreeF90 because gcc does not yet contain a Fortran 90 compiler. +CarpetIOHDF5 is not yet finished, and CarpetIOSer needs the Ser +library which is not publically available. + +The CactusConnect, CactusIO, and CactusUtils thorns are not necessary, +but are nice to have around. You can safely omit these. + + + +\section{Running The Example Applications} + +Although Carpet works fine with the standard WaveToy thorns, all the +example parameter files in the CactusWave arrangement use PUGH, and +can therefore not be directly used. + +The coordinate thorn CactusBase/CartGrid3D does not provide periodic +boundary conditions. These are normally provided by the driver PUGH. +However, Carpet does not contain any boundary conditions. If you want +to apply periodic boundaries, you will therefore have to use the +AlphaThorns/Cart3d coordinate thorn instead, which does provide +periodicity. Unfortunately, AlphaThorns/Cart3d is incompatible with +CactusBase/CartGrid3D. There is a version of WaveToy in the Carpet +arrangement that has been adapted to AlphaThorns/Cart3d. I suggest +that you use this version of WaveToy instead of CactusWave to run test +problems, because periodicity makes for nice testing setups. + +You can find quite a few example parameter files in the directory +\texttt{Carpet/WaveToyF77/par}. I especially recommend the +\texttt{wavetoyf77\_periodic\_*} set, which comes in two sizes +(\texttt{coarse} and \texttt{fine}, corresponding to a small and a +large simulation domain) and three different refinement hierarchies +(with one, two, and three level altogether, respectively). This set +thus forms a convergence test, which you can run and test yourself. +The set \texttt{wavetoyf77\_rad\_full\_*} uses radiative instead of +periodic boundaries and should also be nice to look at. The file +\texttt{wavetoyf77\_rad\_automatic.par} is an attempt at adaptive mesh +refinement, which may or may not work, depending on the current status +of Carpet. + +Second order convergence requires second order interpolation in time, +which requires that at least three time levels are present. + + + +\section{Fold Your Own FMR Application} + +There are three steps to take from a simple unigrid uniprocessor toy +application to a full-blown FMR multiprocessor production application. +Those steps are almost independent, and I would like to explain them +and their implications in some detail below. + +\subsection{Multiple Processors} + +The probably best known of these is the step from using one to using +several processors, also known as parallelisation. Because many +people are already familiar with this step, I will describe it first. + +In a uniprocessor application, it is possible to access every grid +point in arbitrary manners. In order to allow multiple processors to +run efficiently in parallel, the grid is broken down into several +rectangular components, and each processor is assigned one of these +components. + +The components will usually overlap by a few grid points, so as to +allow the processors to e.g.\ calculate spatial derivatives (which +require neighbouring grid points) without having to communicate for +every grid point. From time to time it is then necessary to +synchronise the overlapping region, which is the only time at which +communication happens. This allows the application to run almost +unchanged, i.e.\ without invoking communication itself. The +synchronisation routine is provided by the driver and not by the +application. + +Of course a serial applicate usually will have to be changed to +support multiple processors. In order to do so, all the operations +that the application performs have to be classified into one of two +categories: + +One category contains the so-called \emph{local} operations. These +are operations that are applied to each and every grid point +individually, and that do not depend on any other grid point except +nearby neighbours. Each local operation will thus involve a loop over +all grid points, and in order to run on multiple processors, after +each such loop the synchronisation routine has to be called. An +example of a local operation would be calculating a spatial +derivative. + +The other category contains so-called \emph{global} operations. These +operations do not depend on individual grid points, and thus do not +involve loops over grid points. The result of a global operation is +the same on all processors; therefore global operations don't involve +communication and don't require synchronisation. An example of a +global operation would be to check how many time steps have been +taken, and decide whether the simulation should be terminated. + +Typically most operations can be classified or rewritten to be either +local or global. But often there are operations that fit neither +category, and these parts of an application are hardest to +parallelise. Applying the boundary conditions, to give another +example, might seem at first to be neither local nor global. But in a +slight (yet completely correct) stretch of the term "applied to all +grid points", boundary conditions can be classified as local; they are +a local operation that just does nothing to most grid points. + +To give one more example, calculating an error norm does not fit these +categories. It is neither local nor global. It is not local because +the results involved all grid points (and not only nearby neighbours), +and it is not global because it does involve the grid points. All +operations that do not fit the two category require typically special +handling, and often require hand-coded communication in the +application. Luckily calculating various norms is such a common case +that there are special routines for that already present, called +\emph{reduction operators}. + +\subsection{Multiple Resolution Levels} + +There are several reasons why an application might want to incorporate +more than one grid, overlapping and each with a different resolution. + +The most commonly known reason is probably a convergence test, where +the very same problem is treated in different resolutions. +Differences in the result are then likely caused by insufficient +resolution on the coarser (or on all) grids. For a convergence test, +the grids are completely independent, and it does not matter whether +the simulation runs on all grids simultaneously or sequentially. In +order to treat the grid sequentially, the application does not have to +be changed at all. + +The reason of interest here is of course FMR. For FMR, the order in +which the grids are treated is fixed. As described above, there is +first a time step on the coarse grid, and then recursively several +smaller steps on the finer grids. This order does require certain +changes in the application. The sequence of operations that form a +single time step have to be identified and isolated. (Which is to say +that there has to be a routine that calculates a time step, that is, a +complete time step, and nothing else.) It is then the task of the FMR +driver to call this routine for the correct grids in the correct +order. + +Other reasons for multiple resolution levels are e.g.\ multigrid +algorithms for elliptic equations, which I do not want to mention +here, or shadow hierarchies to determine truncation errors, which I +also want to skip here. Shadow hierarchies are very similar to the +convergence levels described above. + +Apart from this order in which the operations are performed on the +grids, there is one more complication for FMR. The boundary values of +the finer grids have to be calculated from the coarser grids through +interpolation. An because the time steps on the finer grids are +smaller, there is not always a corresponding value on the coarser +grids available. This makes it necessary to interpolate in time +between time steps on the coarser grids. The alternative would be to +take smaller steps on the coarser grids, and this would be very +expensive. + +These interpolations in time make it necessary that the driver knows +which grid function contains values corresponding to what time. The +usual way to achieve this is to have several time levels per grid +function; three time levels allow for a second order interpolation in +time. Only grid functions with enough time levels can be +interpolated, i.e.\ boundary conditions can be calculated only for +those. + +Fortunately time levels are rather widespread in applications, so they +are no new concept to introduce. Unfortunately they are often abused, +so that values corresponding to the wrong time are stored in a time +level, usually with the excuse of saving storage. This will in +general not work with FMR, because the driver then cannot interpolate +in time, leading to incorrect values on the boundaries of the finer +grids. + +\subsection{Multiple Grid Components} + +Sometimes it is convenient to have a simulation domain that is not a +rectangle. It might instead be an L-shaped simulation domain, or a +domain that consists of two disconnected rectangular regions. This +issue becomes more important with FMR, because there it is often +convenient to have several disconnected refined regions. As long as +there are enough processors available, each processor can be assigned +a region or a part thereof, and no new concept need be introduced. +If, however, there are fewer processors than regions, then a new +problem arises. + +A common case for that problem might be a simulation containing just +two refined regions, and running on a single processor. The refined +grid the consists of two component. The problem then is that the two +components cannot be treated sequentially: Imagine the time evolution +routine working on (say) the first component. It will at some time +call the synchronisation routine. At that time there are no values +from the second component available, because the second component has +not been treated yet. Therefore the synchronisation routine cannot +complete. That means in turn that the time evolution routine cannot +complete working on the first component, leading to a deadlock. Work +on neither component can be completed before work on the other +component. + +The solution is to break up the time evolution routine into several +smaller routines, each consisting of a single either local or global +operation. (``Local'' and ``global'' have here the exact same +meanings that were defined above for parallelisation.) A local +operation works, by definition, on individual grid points. Hence the +local routines have to be called once for every grid component. A +global operation, by definition, does not depend on individual grid +points. Hence it has to be called only once per processor, and not +once per component. That means that the driver has to be told the +category individual routine is in. + +\subsection{Example} + +Let me finish this section with an detailed example. Suppose you want +to solve the equation +\begin{eqnarray} + \frac{d}{dt} u & = & f(u) \quad , +\end{eqnarray} +integrating using the midpoint rule, i.e.\ the simplemost second-order +time integration scheme. Given values at the previous time $u^{n-1}$, +one first calculates a first order solution using an Euler step, +leading to the intermediate result +\begin{eqnarray} + v^n & = & u^{n-1} + dt\; f(u^{n-1}) \quad . +\end{eqnarray} +The second and final step is then calculated via +\begin{eqnarray} + u^n & = & u^{n-1} + dt\; f(\frac{1}{2} [u^{n-1} + v^n]) \quad . +\end{eqnarray} + +The corresponding pseudo code would look like +\begin{enumerate} +\item +Calculate Euler step, storing the result into $u^n$ +\item +Apply boundary conditions to $u^n$ +\item +Synchronise $u^n$ +\item +Calculate average of $u^{n-1}$ and $u^n$, storing the result into +$v^n$ +\item +Calculate second step, storing the result again into $u^n$ +\item +Apply boundary conditions again to $u^n$ +\item +Synchronise again $u^n$ +\end{enumerate} + +The above algorithm looks a bit different from a naive implementation +of the midpoint rule. One difference is that both the first and the +second step store their result into $u^n$. This is necessary because +it would be inconvenient to apply boundary conditions to the +intermediate value $v^n$. Remember, in order to apply boundary +conditions on the finer grids, there have to be several time levels +present. With the above scheme, only $u$ needs several time levels. +$v$ is used only as a temporary (and could conceivably be completely +eliminated). + +Note also that the first step goes all the way from time level $n-1$ +to time level $n$. The midpoint rule can be rewritten (in fact, is +usually written) so that the first step is only a half step, leading +to the time level $n - \frac{1}{2}$. This is not possible for FMR, +because interpolating to the time $n - \frac{1}{2}$ is not possible, +and thus there could be no boundary conditions applied after the first +step. + +The second thing to note is that the application of the boundary +condition and the synchronisation have been separated rather +artificially. Normally synchronisation would be considered part of +the boundary condition. In this case, however, the applying the +boundary condition is a local operation, whereas synchronisation +counts as global operation. (It is not obvious that synchronisation +should be global, but as the synchronisation routine is a part of +Carpet, it was up to me to decide this.) As explained above, local +and global operations have to be separated. + +Separating the evolution steps and the boundary condition routines is, +on the other hand, just a notational convenience. There could well be +a single routine implementing both. + +For Cactus, the order in which to call the individual parts of the +time evolution routines is described in the schedule routines, i.e.\ +in the files called \texttt{schedule.ccl}. By default a routine is +assumed to be local; global routines have to be tagged with +\texttt{OPTIONS: GLOBAL}. + +The tag \texttt{SYNC: groupname} indicates that the group +\texttt{groupname} should be synchronised after the scheduled routine +has been called for all grid components. This obviously makes sense +only for local routines. Using the \texttt{SYNC:} tag is preferred +over calling the synchronisation routine \texttt{CCTK\_SyncGroup} +directly. + +The example thorn WaveToy in Carpet's arrangement is a bit simpler +than what is described here, because it uses the Leapfrog scheme which +consists of only a single step. I would suggest looking at WaveToy as +an initial FMR example. + +The thorn SpaceToy is implemented very close to the way described +here. It evolves two variables phi and psi, but it is also coupled to +the thorn HydroToy. This coupling introduces some additional +complications. The thorn HydroToy, on the other hand uses a +predictor-corrector scheme, which is also a two step scheme and thus +more complex that WaveToy. All the coupling between SpaceToy and +HydroToy is contained in SpaceToy. I would thus suggest looking at +HydroToy first. + +I assume that converting an application to FMR is straightforward +after handling the time levels has been straightened out. + + + +\section{Further documentation} + +The individual thorns in the Carpet arrangement might contain further +documentation, which is also available in the thorn guide. +Additionally, there is a document \texttt{internals.tex} in the +arrangement's doc directory, and a document +\texttt{threelev\_initdata.tex} in thorn \texttt{Carpet}'s doc +directory. + + +\section{Frequently Asked Questions} +\label{sec:faq} + +Here are a few of the more frequently asked questions with some +answers. +\begin{enumerate} +\item \textbf{If I run without any refined grids, why don't I get the + same results as with PUGH?} + + There are two possible reasons. The most common is that the you are + not comparing exactly the same output. It used to be the case that + norms would disagree (this is no longer the case). If it is the + ASCII output that disagress, then you should note that the default + output format for CarpetIOASCII gives more digits than + CactusBase/IOASCII. If you want to get ``identical'' results for + this output, try setting \texttt{IOASCII::out\_format = ".14f"}). + + The second reason is subtle differences are bugs in the + implementation. Good luck finding these... +\item \textbf{I switch on a refined grid. Why do I not see it output? + Why is the output strange?} + +\begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{Grid1.eps} + \caption{How the grids are indexed in Carpet. This is an + artificial three level example using C-style numbering (0 + origin). Note that the numbering is with respect to the finest + grid.} + \label{fig:Grid1} + \end{center} +\end{figure} + As soon as you switch on refinement the way the grids are numbered + by index changes. The numbering is done with respect to the + \textit{finest} grid but covers the entire domain. An example of how + the numbering works is given in figure~\ref{fig:Grid1}. It is + important to note that this also applies to the numbering in + time. So with the grid structure of figure~\ref{fig:Grid1} output + for the coarsest grid only occurs on iterations $0,4,8,\dots$, for + the medium grid only on iterations $0,2,4,\dots$, and for the finest + grid on iterations $0,1,2,\dots$. Note that here the finest grid is + not the finest \textit{existing} grid, but the finest + \textit{possible} grid. This is controlled by the + \texttt{Carpet::max\_refinement\_levels} parameter. + + So, there are plenty of reasons why the output might be strange: + \begin{itemize} + \item You are requesting output on iterations when not all grids are + output. For example, requesting output every $5^{\text{}th}$ + iteration with the above grid structure would only output the + coarse grid every 20 iterations. + \item You are requesting output along an index that does not + intersect with any grid points. For example, the line defined by + $j = 6$ in the example above corresponds to the center of the box, + but does not intersect the coarse grid at all! + \item Requesting output along a line defined by a coordinate value + will give you the index closest to it. This may not agree on the + different refinement levels. In the example above the coordinate + value $y=5.1$ is closest to $j=5$ on the fine grid, $j=6$ on the + medium grid, and $j=4$ on the coarse grid. All the different lines + will be output but you should not expect points that appear to + overlap in the output to agree as they're actually not at the same + point. + \item CarpetRegrid (which sets up the refined boxes) knows nothing + about symmetries. So if you have a simulation in, for example, + octant mode with $x,y,z\in[0,10]$ and you leave all the parameters + to be the defaults, the following will happen: + \begin{itemize} + \item CarpetRegrid creates a refined box at the center of the + \textit{index space}. This might cover something like + $x,y,z\in[3,7]$. + \item When the IO thorn requests the output lines and planes it + does know the symmetries, so tries to put the lines and planes + as close to the origin $x=y=z=0$ as possible. + \item When output occurs the lines and planes don't intersect the + fine grid and so you get no output. + \end{itemize} + \end{itemize} + + Morals: Comparing 1D output on different refinement levels can be + very frustrating. 2D output is usually much more informative. Using + symmetry conditions with Carpet is tricky. + +\item {\bf I want to run with periodic boundaries. Why aren't things + working correctly?} + + You thought symmetry boundaries were bad? Periodic boundaries are + even worse. + + Firstly, Carpet does not itself implement periodic boundaries. The + thorn {\tt TAT/Periodic} is ``more or less'' driver independent and + does. This should be used to implement the actual boundary + conditions. You should not need to change your code - just activate + the thorn with the appropriate parameters. + + Secondly, periodic boundaries do {\bf not} work the same way as + symmetry boundaries. This is because you cannot specify a point in + coordinate space where the boundary actually lies; it really lies in + the index space. The following example will hopefully help. + + Take a 1D slice through the grid. There are 7 points with 2 boundary + (ghost) zones (0,2 and 10,12), so only 3 points are actually being + evolved (4, 6, 8). Periodic boundaries means that the boundary points + are identified with certain evolved points. For example, point 2 is + to the left of the first evolved point and so must be identified + with the \textit{last} evolved point (8). The identifications are + shown in figure~\ref{fig:Periodic1}. + \begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{Periodic1.eps} + \caption{Periodic grids identify boundary points and interior + points. The interior points are given by circles and the + boundary points by squares. The identifications are shown by the + arrows.} + \label{fig:Periodic1} + \end{center} + \end{figure} + + We then want to place a refined region across the entire width of + the domain but also have the correct periodic boundaries. The + crucial point is to ensure that points that are identified on the + coarse grid are identified in the same way on the fine grid. For + example, point 2 must still be identified with point 8. Therefore + point 2 must remain a boundary point and point 8 an interior + point. Point 4 must also be identified with point 10. There are + therefore 2 possibilities: + \begin{itemize} + \item Point 3 is the first interior point on the refined grid and + point 8 the last. Therefore the point to the ``left'' of point 3, + point 2, is still identified with point 8. + \item Point 4 is the first interior point on the refined grid and + point 9 the last. This possibility is illustrated in + figure~\ref{fig:Periodic2}. + \end{itemize} + \begin{figure}[htbp] + \begin{center} + \includegraphics[scale=0.5]{Periodic2.eps} + \caption{A periodic refined grid. The boundary zones are blue + plus signs, the interior blue crosses. Note that the interior + points on the refined grid extend \textit{outside} the + interior on the base grid. However, equivalent points on both + grids coincide.} + \label{fig:Periodic2} + \end{center} + \end{figure} + + So to specify the particular refined grid shown in + figure~\ref{fig:Periodic2} you would specify a lower bound of 2, an + upper bound of 11, and that both boundaries are outer boundaries. An + example for a $44 \times 7 \times 7$ grid where the ``centre half'' + of the grid in the $x$ direction is refined and the refined region + covers the entirety of the $y$ and $z$ directions, you could use +\begin{verbatim} +carpet::max_refinement_levels = 2 +carpetregrid::refinement_levels = 2 +carpetregrid::refined_regions = "manual-gridpoint-list" +carpetregrid::gridpoints = "[ [ ([22,2,2]:[62,11,11]:[1,1,1]) ] ]" +carpetregrid::outerbounds = "[ [ [[0,0],[1,1],[1,1]] ] ]" +\end{verbatim} + +\end{enumerate} + +%% \bibliographystyle{amsalpha} % initials + year +%% \bibliography{carpet} + +\begin{thebibliography}{{Pen}} + +\bibitem[AA]{Carpet__astro-psu-edu} +{Department for} Astronomy and Astrophysics, + \emph{{http://www.astro.psu.edu/}}. + +\bibitem[{Cac}]{Carpet__cactuscode-org} +{Cactus web pages}, \emph{{http://www.cactuscode.org/}}. + +\bibitem[CVS]{Carpet__CVS} +CVS, \emph{{http://www.cvshome.org/}}. + +\bibitem[gnu]{Carpet__gnuplot-info} +gnuplot, \emph{{http://www.gnuplot.info/}}. + +\bibitem[HDF]{Carpet__HDF} +HDF, \emph{{http://hdf.ncsa.uiuc.edu/}}. + +\bibitem[{Pen}]{Carpet__psu-edu} +{Penn State University}, \emph{{http://www.psu.edu/}}. + +\bibitem[Sch]{Carpet__erik-schnetter} +Erik Schnetter, \emph{{\textless + schnetter@uni-tuebingen.de\textgreater}}. + +\bibitem[Sha]{Carpet__FlexIO} +John Shalf, \emph{{FlexIO} library: + {http://zeus.ncsa.uiuc.edu/\textasciitilde jshalf/FlexIO/}}. + +\bibitem[TAT]{Carpet__tat-physik-uni-tuebingen-de} +Theoretische Astrophysik T\"ubingen, + \emph{{http://www.tat.physik.uni-tuebingen.de/}}. + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document} diff --git a/Carpet/doc/first-steps.tex b/Carpet/doc/first-steps.tex new file mode 100644 index 000000000..cfa0e7577 --- /dev/null +++ b/Carpet/doc/first-steps.tex @@ -0,0 +1,583 @@ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/first-steps.tex,v 1.3 2004/08/05 14:43:52 schnetter Exp $ + +\documentclass[11pt]{article} + +\usepackage{epsfig,amsmath,amssymb,amsfonts,mathrsfs} +\RequirePackage{amssymb} +\RequirePackage{amsfonts} +\pagestyle{headings} + +%\bibliographystyle{chicagoa} +%\bibliography{uli.bib} + +\setlength{\textwidth}{17cm} +\setlength{\oddsidemargin}{-0.4cm} +\setlength{\topmargin}{0.0cm} +\setlength{\textheight}{22cm} +%\setlength{\parindent}{0.5cm} + +\numberwithin{equation}{section} + +\renewcommand{\textfraction}{0} +\renewcommand{\topfraction}{1} +%\renewcommand{\bottomfraction}{1} +\renewcommand{\floatpagefraction}{1} + +\begin{document} + + +\title{A user's perspective on getting started with Carpet} +\author{Ulrich Sperhake, Erik Schnetter} +\date{$ $Date: 2004/08/05 14:43:52 $ $} +\maketitle + + + +%============================================================================= +\section{Introduction} + +These notes provide information on how to install and use the package +Carpet as seen from a user's point of view. Carpet is a set of Thorns +that provide fixed and to some extent adapted mesh refinement in +the Cactus environment. As Cactus is a necessary requirement for +using Carpet, these notes will inevitably contain some information about +Cactus as well. + +The reader should regard these notes as a first draft and the information +represents the author's personal experiences rather than an exhaustive +recipe on getting Carpet to work on an arbitrary given platform. In this sense I +am hopeful that users as well as developers will continue to add to this +document to make it more useful in the future. + +Useful starting points for retrieving more detailed information on +various issues are the project's web pages\\ + +\hspace{1cm}{\tt http://www.cactuscode.org}\\ + +\hspace{1cm}{\tt http://www.carpetcode.org}\\ + + +%============================================================================= +\section{Downloading the necessary packages} + +One first needs to download the Cactus version 4.0.13 (or +alternatively for the more daring the development version). +A more detailed description about how this is done can be found on the +Cactus web page +% +\begin{center} + {\tt http://www.cactuscode.org} +\end{center} +% +Here we will summarize the required steps for downloading the complete +Cactus-4.0.13 package. Change to a suitable directory on your system +and log onto the Cactus cvs server via\\ + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.cactuscode.org:/cactus login} \\ + +which will prompt you for a password which is {\tt anon}. +For the development version you will need to choose +the directory {\tt /cactusdevcvs} instead. +Next check out the Cactus +flesh which will create a directory {\tt Cactus} under your current location\\ + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.cactuscode.org:/cactus checkout Cactus} \\ + +The rest of the cactus checkout is best done with the scripts that are shipped +as part of Cactus. Change to that directory\\ + +\hspace{1cm}{\tt cd Cactus} \\ + +and enter the command\\ + +\hspace{1cm}{\tt make checkout} \\ + +That will give you various options to choose those parts of cactus you +want to ckeckout. The default option {\em arrangements} is quite +satisfactory for this purpose, so just hit return. You will then be +given a list of (at the time of writing) 13 Cactus arrangements. Getting +them all is a good idea, so choose once more the default option by pressing +return. Depending on your internet connection this may take a while. +Once all is downloaded you want to quit the script. This is not the +default option, so type {\tt q} and hit return. \\ + +In order to run the WaveToy example that comes with CarpetExtra +(see below) you will need to check out +Erik Schnetter's package TAT. First switch the directory to\\ + +\hspace{1cm}{\tt cd arrangements} \\ + +then checkout\\ + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.cactuscode.org:/arrangements checkout TAT} \\ + +Again this may take a little time. Finally you will have to check out the +{\tt Carpet} package. As of mid April 2004 Carpet consists of 4 arrangements. +{\tt Carpet} contains all the necessary thorns you will need to run Carpet +in the first place. The latest cutting edge thorns currently under +development are located in {\tt CarpetDev}. Do not be too surprised, though, +if you find some the tools in there not to be fully functional. +Packages not required to run {\tt Carpet}, but probably useful for +various purposes, such as scalar wave examples, +are located in {\tt CarpetExtra}. +% Detailed instructions can be found on the +% web page +% +% \begin{center} +% {\tt http://www.carpetcode.org}\\ +% \end{center} +% +Remain in the {\tt arrangements} directory for this purpose and log +into the carpet cvs-server\\ + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.carpetcode.org:/home/cvs/carpet login}\\ + +the password being once more {\tt anon}. Next checkout Carpet by typing\\ + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.carpetcode.org:/home/cvs/carpet checkout Carpet} + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.carpetcode.org:/home/cvs/carpet checkout CarpetExtra} + +\hspace{1cm}{\tt cvs -d :pserver:cvs\_anon@cvs.carpetcode.org:/home/cvs/carpet checkout CarpetDev}\\ + + + +%============================================================================= +\section{Documentation} + +Documentation about Cactus, Carpet and their separate thorns comes +in different forms. Most importantly you generate the UsersGuide and +ReferenceManual for Cactus by going into the {\tt Cactus} directory +and typing + +\hspace{1cm}{\tt make UsersGuide}\\ + +\hspace{1cm}{\tt make ReferenceManual}\\ + +\hspace{1cm}{\tt make ArrangementDoc}\\ + +\hspace{1cm}{\tt make ThornDoc}\\ + +(four separate commands). They will be created in postscript format under +the directory\\ + +\hspace{1cm}{\tt doc}\\ + +relative to your current position, i.e.\,the {\rm Cactus} directory. +In addition each thorn may contain a subdirectory {\tt doc} where +the author (or users) may store additional documentation, typically +in the form of a file {\tt documentation.tex}. + + +%============================================================================= +\section{Compilers} + +Before we indulge in using Cactus/Carpet, we have to address issues +concerning the system you are working on. We begin with the compilers +although we will not be able to deal with the subject in an exhaustive +fashion. +Basically these notes list our experiences with local machines +(i.e. at Penn State) and may or may not be valid for your environment. +Users are encouraged to add their experiences to this list. + +At Penn State we largely work with the Intel compilers and the success +of compilations has been found to depend sensitively on which version of the +Intel compilers we are using. We will discuss some error messages +encountered in the process of compiler testing below. + +Free download (at least for Linux) of +the Intel compiler (Fortran and C++) for +non-commercial private or academic use is available from the web page +% +\begin{center} + {\tt http://downloadfinder.intel.com/scripts-df/support\_intel.asp} +\end{center} +% +(click on Software Development, check for the compilers on your system +and follow their instructions). + +In case you haven't got root access, +you may need to install the compiler locally or you will have to ask your +sys-admin. Additional difficulties may arise in case you have no +root access, i.e. install locally, while your sys-admin keeps +some older version installed. In order to make sure that no conflict +arises thereof (e.g. by linking against old versions of the library) +the environment variable {\tt LD\_LIBRARY\_PATH} must point to your local +new version and not to the old version in {\tt /usr/local} or wherever. +You will probably end up with error messages such as +{\tt undefined symbols ...} otherwise. We decided to use the Intel compiler +for both Fortran and C++ code. This was mainly a result of the current +version of g++ not having the complete stl libraries that are made use of +extensively in Carpet. \\ +An important aspect of the Intel compilers is that they come in various +different versions. Even the same version number (say 7.1) comes in many +different releases. You can check this by typing \\ + +\hspace{1cm}{\tt ifc -V}\\ + +and likewise for {\tt icc}. Note in particular the date of build given in the +form of {\em 20030307Z}. This corresponds to the March 2003 build of +version 7.1 and caused difficulties for me. I encountered an error message +like\\ + +\hspace{1cm}{\tt /home/terminator/sperhake/src/2004\_02\_16\_cactus-FMR/configs/test01/build/CarpetLib/} + +\hspace{1cm}{\tt data.cc(173): error: no instance of overloaded function "dist::datatype"} + +\hspace{1cm}{\tt matches the argument list}\\ + +This can be rectified by switching to a newer release, at least the +September 2003 build of version 7.1 (I'd recommend doing that for both +the Fortran and the C++ compiler). + +Some Cactus-Carpet users have reported problems, such as segmentation faults, +by using the most recent versions of the Intel compilers, namely the March +2004 release of version 7.1 and the latest version 8.0. So far we have +been using the former of these without encountering any difficulties, +but you should probably stick to the December or September 2003 version +of 7.1 if you can. + +On my Gentoo Linux laptop, on the other hand, I experienced trouble with +the September 2003 version of 7.1. +I received error messages like\\ + +\hspace{1cm}{\tt struct stat stat\_bbox ...} + +\hspace{1cm}{\tt Incomplete components in structure not allowed}\\ + +at compilation (I have forgotten the exact wording, but you'll recognize it). +I managed to work around this by using the Intel Fortran +and C++ compilers version 8.0 (build October 2003). +As I have not done extensive code development on this laptop, though, +I cannot really comment on the potential issues concerning the 8.0 version +mentioned above. \\ +%In case you decide to use version 8.0, however, note that it does not +%accept the {\tt rpath} option as specified in the {\tt LDFLAGS} entry +%of the configuration file (see below). This option, for +%what little I know, tells the linker about the paths for shared libraries. +%The error message obtained with the {\tt rpath} option was something like\\ + +%\hspace{1cm}{\tt undefined reference to CCTK\_FullVersion, CCTK\_TimeInfo}\\ + +Trouble may also arise from preprocessing +in case you are using RedHat 7.3 (possibly also with other versions). +This is essentially related to the +treatment of white space in Fortran files. +Should you encounter rather stupid error messages which clearly indicate +that proper lines of Fortran have been corrupted by introducing white space +(e.g. line breaks) at preprocessing, you should check your cpp and possibly +download another (probably older) version. +Details about this can be found on +% +\begin{center} + {\tt http://www.cactuscode.org/Documentation/Architectures/Linux.html} +\end{center} +% +which also gives a link to the preprocessor of the older RedHat 6.2 +distribution. I downloaded that older version and it solved the preprocessing +problems I encountered prior to that. \\ + + +%============================================================================= +\section{Libraries} +\label{sec: libraries} + +As much as the compiler issue is strongly dependent on your platform, +the extent to which you will have to install new libraries will depend on +what your system administrator has already done for you. Again these notes +cannot be exhaustive and rather focus on our experience. Feel free, +as before, to add to our list. + +%============================================================================= +\subsection{HDF library} + +The HDF5 library is required for handling in/output in +a particular binary data +format. The use of these libraries in Cactus/Carpet is entirely optional, +but in the end I found it easier to install the libraries than to +convince my system that I do not want to use them. They should be useful +in the long run anyway, so I recommend their installation unless +they are already part of your system. + +Let us start with the hdf5 libraries. The binary version can be obtained from +% +\begin{center} + {\tt ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/hdf5-1.6.1/bin} +\end{center} +% +As before I prefer compiling the source which you can get from +% +\begin{center} + {\tt ftp://ftp.ncsa.uiuc.edu/HDF/HDF5/hdf5-1.6.1/src} +\end{center} +% +Again the instructions in the {\tt INSTALL} file are straightforward. I +included the C++ interface by setting the options\\ + +\hspace{1cm}{\tt ./configure --enable-cxx}\\ + +and used the variables {\tt CPPFLAGS} and {\tt LDFLAGS} to ensure that the +szip libraries were found (see {\tt INSTALL} file). The Fortran interface +did not work for me, so I did not enable that. In future versions of +this document this issued may be readdressed. Finally you may need to point +the environment variable {\tt LD\_LIBRARY\_PATH} in your {\tt .bashrc} +or {\tt .cshrc} to the directory containing the hdf5 library.\\ + + +%============================================================================= +\subsection{Parallelization} + +This subsection is relevant only if you plan to do multi processor runs +(which you are rather likely to do, though, since it is a key feature of +Cactus/Carpet). There are various packages that take care of +parallelization, such as {\tt MPICH} or {\tt lam} and your machine +will probably come equipped with one of these. + +I have only had the need to install a message passing interface +{\tt (MPI)} on my laptop. It's a single processor laptop but +you can emulate multi-processor runs none the less. Furthermore +it appears to me that Carpet expects {\tt MPI} at least in the +form of a header file {\tt mpi.h}, so you'd better install it. +I chose the {\tt lam} package for this +purpose, so that is the only experience I have to report. + +Installation of this package was straightforward on my Gentoo +Linux laptop by typing\\ + +\hspace{1cm}{\tt emerge lam-mpi}\\ + +Depending on your Linux flavor installation may be done differently, +for example using {\tt rpm}. {\tt lam} is started by typing\\ + +\hspace{1cm}{\tt lamboot}\\ + +and then executables can be started via\\ + +\hspace{1cm}{\tt mpirun -np} $<$n$>$ $<$executable$>$\\ + +where $<$n$>$ is the number of processors and $<$executable$>$ +the binary file (with full path) you want to run. + + +%============================================================================= +\section{Creating a configuration} + +%============================================================================= +\subsection{The configuration file} + +Eventually we can start writing a configuration file for a Cactus-Carpet +project. In this configuration file the paths to various files, such as +libraries and compilers need to be specified. Naturally these paths will +differ from machine to machine. In this subsection I will assume +the installation path + +\hspace{1cm}{\tt /usr/local/}$<$name$>$\\ + +for most libraries, +where $<$name$>$ is the name of the library, e.g. {\tt hdf4} or {\tt szip}. +I further assume that each of these directories contains subdirectories +{\tt lib} and {\tt include} which contain the libraries and header files. +Similarly I presume that all compilers/preprocessors are installed in the +directory\\ + +\hspace{1cm}{\tt /usr/local/for\_carpet/bin}\\ + +This is, of course, not where they reside on your machine +(nor on mine), but it'll be sufficient for this document and +you will merely have to replace each of these paths with the correct one +on your system. + +We are now in the position to create the configuration file, say +{\tt mycode\_carpet.cfg} (you can store that file wherever you think +convenient). We will focus on the most important entries +in this file only. Please refer to the Cactus documentation +for a more detailed description. First we specify information +about the compilers\\ + +\hspace{1cm}{\tt F90 \hspace{1cm} /usr/local/for\_carpet/bin/ifc} + +\hspace{1cm}{\tt F77 \hspace{1cm} /usr/local/for\_carpet/bin/ifc} + +\hspace{1cm}{\tt CC \hspace{1.2cm} /usr/local/for\_carpet/bin/icc} + +\hspace{1cm}{\tt CXX \hspace{1cm} /usr/local/for\_carpet/bin/icc} + +\hspace{1cm}{\tt CPP \hspace{1cm} /usr/local/for\_carpet/bin/cpp} + +\hspace{1cm}{\tt FPP \hspace{1cm} /usr/local/for\_carpet/bin/cpp}\\ + + +(the exact amount of white space between the variables {\tt F90, F77,...} and +their entries should not matter and you may even put in an $=$ sign). +Note that you do not need to specify the +full path if your environment variable {\tt PATH} points to the correct +versions of the compilers/preprocessors already.\\ +Next we need to specify information about the message passing interface. +In my case that was {\tt lam}, so the next entries in my +file {\tt mycode\_carpet.cfg} are\\ + +\hspace{1cm}{\tt MPI \hspace{2.5cm} LAM} + +\hspace{1cm}{\tt LAM\_INC\_DIR \hspace{1cm} /usr/include} + +\hspace{1cm}{\tt LAM\_LIB\_DIR \hspace{1cm} /usr/lib}\\ + +In case you are using a different {\tt MPI} package refer to the Cactus +users guide to find the correct entry for {\tt MPI}. Make sure that you +specify the correct paths for the corresponding header files +and libraries (ask your sys-admin if necessary).\\ +Next we specify the libraries to be included in the compilation. For the +7.1 version of the Intel compilers in combination with {\tt lam} +we found the following to work fine\\ + +\hspace{1cm}{\tt LIBS \hspace{2cm} crypt lapack blas g2c z BINDF90 CEPCF90 +F90 IEPCF90 PEPCF90} + +\hspace{4.2cm}{\tt POSF90 cprts cxa guide imf intrins irc ircmt ompstub svml} + +\hspace{4.2cm}{\tt unwind X11 ieeeio df m mpi lam pmpi}\\ + +(all in one line). It goes without saying that all these libraries must +be installed on your machine. Most of them probably are and the +installation of some that may not is described in more detail above +in Sec.\,\ref{sec: libraries}. \\ +The paths to some of these libraries may not be known automatically by the +linker and needs to be specified separately. This is done with the variable +{\tt LIBDIRS} which I had to set to\\ + +\hspace{1cm}{\tt LIBDIRS \hspace{1.4cm} /usr/local/intel/compiler70/ia32/lib} + +\hspace{4.2cm}{\tt /usr/X11R6/lib /usr/local/IEEEIO/lib /usr/local/hdf4/lib} + +\hspace{4.2cm}{\tt /usr/lib/gcc-lib/i386-redhat-linux/egcs-2.91.66}\\ + +(again on all in one line). As before you will have to adjust this line to +your demands.\\ +Finally I set + +%\hspace{1cm}{\tt LDFLAGS \hspace{1.4cm} -Wl,-rpath,/usr/nrlocal/petsc-2.1.0/lib/libO/linux}\\ + +\hspace{1cm}{\tt PTHREADS \hspace{1.2cm} yes}\\ + +though I am not sure what this is exactly doing. +%As has been mentioned above the first of these lines is valid for +%version 7.1 of the Intel compiler and should be omitted if you are using +%version 8.0. + + + +%============================================================================= +\subsection{make-config} + +In order to create a configuration change into the {\tt Cactus} +directory and type\\ + +\hspace{1cm}{\tt make} $<$name$>${\tt-config options=}$<$config-file$>$\\ + +where you can choose an arbitrary $<$name$>$ for your configuration and +$<$config-file$>$ is the file (with full path) created in the previous +subsection. + +%============================================================================= +\subsection{Creating a thornlist} + +Next you will need to generate a thornlist, i.e.\,a list of all those +thorns you want to compile. This is done in the {\tt Cactus} directory +by typing\\ + +\hspace{1cm}{\tt make} $<$name$>${\tt-thornlist}\\ + +where $<$name$>$ must be the same as in setting up the configuration. +This command +will search all arrangements for all thorns and eventually prompt you +whether you want to modify the list. As all thorns are activated by default +you do want to modify the list and type {\em yes} and hit return. This +will open an editor session where you can unselect thorns by putting a +hash '\#' at the beginning of the line. Unselect all thorns in this +way except for the following\\ + +\hspace{1cm}{\tt CactusBase/Boundary} + +\hspace{1cm}{\tt CactusBase/CartGrid3D} + +\hspace{1cm}{\tt CactusBase/CoordBase} + +\hspace{1cm}{\tt CactusBase/IOBasic} + +\hspace{1cm}{\tt CactusBase/IOUtil} + +\hspace{1cm}{\tt CactusBase/LocalInterp} + +\hspace{1cm}{\tt CactusBase/SymBase} + +\hspace{1cm}{\tt CactusBase/Time} + +\hspace{1cm}{\tt Carpet/Carpet} + +\hspace{1cm}{\tt Carpet/CarpetIOASCII} + +\hspace{1cm}{\tt Carpet/CarpetIOHDF5} + +\hspace{1cm}{\tt Carpet/CarpetInterp} + +\hspace{1cm}{\tt Carpet/CarpetLib} + +\hspace{1cm}{\tt Carpet/CarpetReduce} + +\hspace{1cm}{\tt Carpet/CarpetRegrid} + +\hspace{1cm}{\tt Carpet/CarpetSlab} + +\hspace{1cm}{\tt CarpetExtra/IDScalarWave} + +\hspace{1cm}{\tt CarpetExtra/WaveToyF77}\\ + +Before you compile, you need to apply one modification to the file\\ + +{\tt arrangements/CarpetExtra/WaveToyF77/configuration.ccl}\\ + +namely remove the entry {\tt Cart3d} from the list of {\tt REQUIRED} +thorns. This thorn is actually required but, for some reason unknown +to me, must not be mentioned here. It gave an error message complaining +that there is no thorn {\tt Cart3d}. Having applied this modification +you can start compiling by typing\\ + +\hspace{1cm}{\tt make} $<$name$>$ + +There is no guarantee, but at least you have a chance of compiling through +without error messages (do not be intimidated by the odd warning, though). +In case you still cannot compile, please add your wisdom to this document to +help future users. + + +%============================================================================= +\subsection{Running the first application: WaveToyF77} + +If you've gotten this far, you should be able to run your first +simulation with mesh refinement. Change to some convenient directory +for this purpose and copy over from relative to the main {\tt Cactus} +directory the parameter file\\ + +\hspace{1cm}{\tt arrangements/CarpetExtra/WaveToyF77/par/wavetoyf77\_rad\_full\_rl2.par}\\ + +You will need to adjust this parameter file a little to get it running (I am +not aware of a WaveToy-parameter file that does not require such minor +modification). First add to the first line beginning with {\tt ActiveThorns} +the thorns {\tt Slab CoordBase SymBase} (that is within the quotes). +Finally you should be able to run this example by typing something like\\ + +\hspace{1cm}{\tt mpirun -np 1} $\tilde{\,\,}${\tt /Cactus/exe/cactus-}$<$name$>$ {\tt wavetoyf77\_rad\_full\_rl2.par}\\ + +where $<$name$>$ is again the name of the configuration above. In case you do +not have your main {\tt Cactus} directory under your home directory you will +need to adjust that part in the command.\\ +By running this command you should obtain a directory +{\tt wavetoyf77\_rad\_full\_rl2} with the resulting data in ascii format. +You can check for example the file\\ + +\hspace{1cm}{\tt wavetoyf77\_rad\_full\_rl2/phi.x.asc}\\ + +(relative to the directory where you ran the code) +which lists the data on the separate refinement levels. + +\end{document} diff --git a/Carpet/doc/internals.tex b/Carpet/doc/internals.tex new file mode 100644 index 000000000..3acbaa9b1 --- /dev/null +++ b/Carpet/doc/internals.tex @@ -0,0 +1,777 @@ +% $Header: /home/eschnett/C/carpet/Carpet/Carpet/doc/internals.tex,v 1.4 2003/05/03 13:29:23 schnetter Exp $ + +\documentclass{article} + +\usepackage{amsfonts} +\usepackage{amssymb} +\usepackage[english] {babel} +\usepackage{exscale} +\usepackage[final]{graphicx} +\usepackage[backref,draft=false]{hyperref} +%\usepackage{concrete} +\usepackage{mathpple} +%\usepackage{pslatex} + +\newcommand{\todo}[1]{\rule{1em}{1ex}~{\small [{#1}]}} + +\sloppypar + +\begin{document} + +\title{Carpet under the hood} +\author{Erik Schnetter \textless schnetter@uni-tuebingen.de\textgreater} +\date{$ $Date: 2003/05/03 13:29:23 $ $} +\maketitle + +\begin{abstract} + This document describes the internal workings of the Carpet + arrangement. Its intended readership are people who extend Carpet, + or who use Carpet more thant the average user. This document is + supposed to be read in conjuction with and guiding through the + source code. +\end{abstract} + +\tableofcontents + +\section{Overview} + + The Carpet driver, which lives in the Carpet arrangement, is + divided into several parts. The thorn \texttt{Carpet} is the main + driver piece; it provides all the routines and structures that + Cactus expects from it. The thorn \texttt{CarpetLib} is the + workhorse that does all the bookkeeping and data shuffling. Those + two alone form a valid Cactus driver; the other thorns provide + additional functionality. The thorns \texttt{CarpetInterp}, + \texttt{CarpetReduce}, and \texttt{CarpetSlab} provide the + corresponding interpolation, reduction, and slabbing interfaces. + The thorns \texttt{CarpetIOASCII} and \texttt{CarpetIOFlexIO} + provide I/O methods. Finally, thorn \texttt{CarpetRegrid} provides + a user interface to select where and what to refine. (The actual + refinement is handled in \texttt{CarpetLib}.) + + + +\section{Terminology} + + Carpet is called ``Carpet'' because a carpet consists of many + individual patches. + + Carpet is a mesh refinement driver. It knows about a hierarchy of + \emph{refinement levels}, where each level is decomposed into a set + of cuboid \emph{grid patches}. For historic reasons it also has a + notion of \emph{multigrid levels}, but those are currently unused. + They might conceivably be reactivated to form multigrid stacks to + solve elliptic equations. The grid patch is the smallest unit of + grid points that Carpet deals with. Carpet parallelises by + assigning sets of grid patches to processors. + + A multi-patch run is a run where more than one grid patch (of the + same refinement level) is assigned to a single processor. This is + a situation that can occur even without refinement. This is also a + situation that cannot occur with PUGH, so that most thorns cannot + handle this situation. In multi-patch runs one has to distinguish + between \emph{local mode}, where one has access to a single grid + patch, and \emph{global mode}, where one cannot access individual + grid patches, but can instead perfom global operations such as + synchronisation, interpolation, or reduction. This part of Cactus + is currently (2003-04-30) undergoing changes. + + Carpet uses vertex-centered refinement. That is, each coarse grid + point coincides with a fine grid point. To \emph{regrid} means to + select a new set of grid patches for each refinement level. To + \emph{recompose} the grid hierarchy means to move data around. + Regridding is only about bookkeeping, while recomposing is about + data munging. + + Each grid patch can be divided in up to four zones: the interior, + the outer boundary, and the ghost zone, and the refinement + boundary. The interior is where the actual compuations go on. The + outer boundary is where the users' outer boundary condition is + applied; from Carpet's point of view, these two are the same. (The + only difference is that Carpet sets \texttt{cctk\_bbox} + correspondingly.) The ghost zones are boundaries to other grid + patches on the same refinement level (that might live on a + different processor). The refinement boundary is the boundary of + the refined region in a level, and it is filled by prolongation + (interpolation) from the next coarser level. Both the ghost zones + and the prolongation boundary are filled by \emph{synchronising}. + + Grid patches that are on the same refinement level never overlap + except with their ghost zones. Conversly, all ghost zones must + overlap with a non-ghost zone of another grid patch of the same + level. All refinement boundaries must overlap with a grid patch on + the next coarser level. (This is also called \emph{proper + nesting}.) + + Except for exceptions, Carpet numbers grid point indices and time + levels with integers. It counts always in terms of the finest + grid, so that coarser grids have \emph{strides} that are powers of + the refinement factor. This has the advantage that different + refinement levels can use the same global numbering scheme. + + The grid patches are described by a \emph{bounding box} + (abbreviated bbox, see \texttt{CarpetLib/src/bbox.*}.). This is a + triplet of \emph{vectors} (see \texttt{CarpetLib/src/vect.*}), + where each triplet specifies \emph{lower bound}, \emph{upper + bound}, and \emph{stride}, much as is conventional in Fortran. + Triplets are enclosed in round parentheses $(\cdot:\cdot:\cdot)$, + and vectors are enclosed in square brackets $[\cdot,\cdot,\cdots]$. + A typical grid patch might have a bounding box which is denoted by + $([0,0,0]:[20,20,20]:[2,2,2])$. This is to be read as + $(\textrm{lower}:\textrm{upper}:\textrm{stride})$, meaning that the + grid patch has one corner grid point at $[0,0,0]$, the diagonally + opposite corner grid point at $[20,20,20]$, and the grid points are + spaced two ``fine grid spacings'' apart. This grid patch contains + $11 \times 11 \times 11$ grid points. Empty bboxes have an upper + bound that is strictly lower than the lower bound. The files + \texttt{CarpetLib/src/vect.*} contains many useful routines to deal + with short vectors, and the files \texttt{CarpetLib/src/bbox.*} + contain routines deal with an algebra of bboxes. The files + \texttt{CarpetLib/src/bboxset.*} contain routines that handle sets + of bboxes. + + + +\section{The driver} + + The driver consists of the two thorns \texttt{Carpet} and + \texttt{CarpetLib}. \texttt{Carpet} is the front end to + Cactus, while \texttt{CarpetLib} is the back end to the + machine. \texttt{Carpet} specifies the grid shape, decides when to + allocate and deallocate storage, cycles through thes schedule bins, + and passes all internal information in the \texttt{cGH} structure + to the thorns. + + + +\subsection{Specifying the grid extent} + + \texttt{Carpet} defines the usual parameters necessary to specify + the extent of the grid. Everything that has to do with coordinates + and symmetries is handled elsewhere, and the driver does not know + about that. + + The \texttt{global\_*} parameters specify the global extent of the + coarsest grid. Not all of this grid needs to be covered by grid + patches. It is conceivable to have an L-shaped simulation domain + without any refinement. This situation can be described to Carpet + by specifying a global shape that is the convex hull of the domain, + and then using two cuboid grid patchs to fill in the shape of + the~L. + + The \texttt{ghost\_*} parameters specify the number of ghost zones. + The \texttt{periodic*} parameters are unused; they are only there + because some thorns look at these parameters. Carpet itself does + not supply periodic boundary conditions; they have to be handled by + another thorn. The size of the prolongation boundary is the same + as the number of ghost zones. + + The parameter \texttt{max\_refinement\_levels} specifies the + maximum number of levels that can be present in a run, including + the base level. This parameter, together with + \texttt{refinement\_factor}, define the grid point numbering + scheme, which (see above) depends on the finest possible grid. + However, none of the finer levels will be activated automatically. + The \texttt{multigrid\_*} parameters are unused. + + The parameter \texttt{base\_extents} specifies the shapes of the + grid patches that are present on the coarsest grid. This can be + used to set up e.g.\ an L-shaped domain. The parameter + \texttt{base\_outerbounds} specifies which of the grid patches' + boundaries are to be treated as outer boundaries, i.e.\ for which + of those \texttt{cctk\_bbox} should be set to 1. + + Carpet currently ignores \texttt{enable\_all\_storage} and always + enables all storage. This is because it is not yet clear how + individual grid function can be allocated and deallocated while + still keeping enough data for the boundary prolongation. + + Checksumming and poisoning are means to find thorns that alter grid + variables that should not be altered, or that fail to fill in grid + variables that they should fill in. + + None of the above specifies anything about refined grids. Refined + grid are created and destroyed at run time, possibly guided by the + thorn \texttt{CarpetRegrid} which provides a nice user interface. + + + +\subsection{The timeline} + + It is \texttt{Carpet}'s task to walk through the schedule bins and + call all user routines. Only some fairly fundamental + initialisation happens in the flesh before Carpet takes control. + The overall picture of what happens when is: +\begin{enumerate} +\item + Startup (see file \texttt{Carpet/src/CarpetStartup.cc}). This is + the only scheduled routine; everything else happens by overloading + and registering. This routine does nothing but registering and + overloading. +\item + SetupGH (see file \texttt{Carpet/src/SetupGH.cc}). This routine + does the bulk of initialising Carpet. It sets up the internal + structures for all grid variables. +\item + Initialise (see file \texttt{Carpet/src/Initialise.cc}). This + routine walks the initialisation part of the scheduling bins. +\item + Evolve (see file \texttt{Carpet/src/Evolve.cc}). This routine + walks the evolution part of the scheduling bins. It also contains + the main evolution loop. +\item + Shutdown (see file \texttt{Carpet/src/Shutdown.cc}). This routine + walks the shutdown part of the scheduling bins. Normally, nothing + interesting happens here. +\end{enumerate} + These stages are explained in the following sections. + + + +\subsubsection{Initialisation} + + (See file \texttt{Carpet/src/Initialise.cc}.) In this stage Carpet + initialises the simulation. This includes setting up the grids, + calling routines to register symmetries and boundary conditions, as + well as calculating the actual initial data on several refinement + levels. It traverses the scheduling bins in the following order: +\begin{enumerate} +\itemsep 0pt +\item + Set \texttt{cctk\_iteration} to zero +\item + Set \texttt{cctk\_time} to the initial time +\item + PARAMCHECK +\item + Loop over refinement levels, starting from coarsest: +\item \quad + BASEGRID +\item \quad + INITIAL +\item \quad + POSTINITIAL +\item \quad + POSTSTEP +\item \quad + Regrid (possibly creating new levels) +\item + End loop over refinement levels +\item + Restrict from finer to coarser grids +\item + If desired, perform Scott Hawley's initialisation scheme for three + timelevels +\item + Loop over refinement levels, starting from coarsest: +\item \quad + RECOVER\_VARIABLES +\item \quad + CPINITIAL +\item \quad + ANALYSIS +\item \quad + OutputGH +\item + End loop over refinement levels +\end{enumerate} + + In the beginning, only the coarsest level exists. The first loop + starts by initialising this level. At the end of this loop, more + levels are created if desired. This makes it possible to make this + decision depend on an automatic refinement criterion. + + + +\subsubsection{Evolution} + + (See file \texttt{Carpet/src/Evolve.cc}.) In this stage Carpet + performs the main time evolution loop. This is further complicated + by the fact that finer grids need to take more and smaller time + steps than coarser grids. In Carpet's time step counting scheme, + which is based on the finest grid time steps, this means that the + coarser grids are skipped in the remaining time steps. Thus the + elegant recursive scheme is flattened out. The scheduling bins in + the main time evolution loop are traversed in the following order: +\begin{enumerate} +\itemsep 0pt +\item + Advance \texttt{cctk\_iteration} +\item + Loop over refinement levels, starting from coarsest: +\item \quad + If the current level needs to be treated at this iteration: +\item \quad \quad + Calculate current \texttt{cctk\_time} +\item \quad \quad + Cycle time levels +\item \quad \quad + PRESTEP +\item \quad \quad + EVOL +\item \quad \quad + POSTSTEP +\item \quad \quad + Regrid +\item + End loop over refinement levels +\item + Restrict from finer to coarser grids +\item + Loop over refinement levels, starting from coarsest: +\item \quad + If the current level needs to be treated at this iteration: +\item \quad \quad + CHECKPOINT +\item \quad \quad + ANALYSIS +\item \quad \quad + OutputGH +\item + End loop over refinement levels +\end{enumerate} + + The condition whether a refinement level needs to be treated at the + current iteration is different for the two loops. In the first + loop, the coarse grids need to be advanced before the finer grids, + so the condition is $iter \,\mathrm{mod}\, stride = 1$. Here + $iter$ is the current iteration, and $stride$ the stride of the + current refinement level, i.e.\ the factor by which the finest grid + is finer than the current grid. In the second loop above, the + coarse grids need to be treated after the finer grids, so that the + condition reads $iter \,\mathrm{mod}\, stride = stride$. + + + +\subsection{Calling scheduled routines} + + (See file \texttt{Carpet/src/CallFunction.cc}.) The process by + which the scheduling bins are traversed is different from the + process which actually calls the routines within the scheduling + bins. The former has to do with mesh refinement, making sure that + the coarse and fine grids are evolved in the right order. The + latter has to do with treating multiple patches, i.e.\ with local + mode and global mode operations, as mentioned above. + + In the function \texttt{CallFunction}, all the arguments that are + passed to the scheduled routines have to be set up. Additionally, + the \texttt{cGH} structure has to be filled in. Some fields in the + \texttt{cGH} structure are always kept up-to-date during the + refinement level loops, such as the time step size and the grid + spacing. The file \texttt{Carpet/src/helper.cc} contains helper + routines that allow easy looping over refinement levels and over + grid patches. (Grid patches are also called \emph{compoments} in + Carpet. The expression component seems to be confusing, so that I + switched to using \emph{patch} instead. Some source code still + reflects the old conventsion.) + + The function \texttt{CallFunction} first distinguishes between + global mode functions and local mode functions. +\begin{description} +\item[Global mode functions] + are called once (on each processor). They are passed all the + global data, such as \texttt{cctk\_gsh} and + \texttt{cctk\_delta\_space}, but none of the local data, such as + \texttt{cctk\_lsh} or \texttt{cctk\_bbox}. Grid functions are not + accessible, and they are passed as null pointers. However, grid + scalars and grid arrays are accessible. There is an untested + gateway to directly call local mode functions from global mode + functions. +\item[Local mode functions] + might be called several times (on each processor), once for each + grid patch that is assigned to this processor. They receive the + global data as well as data for a single grid patch. It is illegal + to perform global operations, such as synchronisation, + interpolation, or reduction, in local mode. +\end{description} + + The distinction between global and local mode is only important for + multi-patch runs. For single-patch runs, the distinction does not + exist. + + Multi-patch runs are only necessary when there are more grid + patches on a refinement level than there are processors. This is + normally not the case for fixed mesh refinement. Things are + different for adaptive mesh refinement, which can create many + refined regions. + + + +\subsection{Grid arrays and grid scalars} + + Grid scalars are implemented as zero-dimensional grid arrays with + \texttt{DISTRIB=CONSTANT}. + + Grid arrays are implemented as grid functions, where each grid + array group has their own refinement hierarchy that consists of a + single level only and is never changed at run time. Grid arrays + with less than 3 dimension are extended to have an extent of 1 (and + no ghost zones) in the remaining dimensions, so that all quantities + in Carpet have 3 dimensions\footnote{This is set by a compile-time + constant and could be changed to allow for grid functions and + arrays with more than 3 dimensions.}. \texttt{DISTRIB=CONSTANT} grid arrays + are implemented by internally enlarging the grid array in the $z$ + direction, and then distributing this array onto the processors. + + + +\subsection{Flesh interfaces} + + The flesh has many interfaces that need to be filled in by a + driver. These are in particular all the routines that are + overloaded in the SetupGH stage. Those overloaded routines as well + as other helper function are implemented in the following files: +\begin{description} +\itemsep 0pt +\item[\texttt{Carpet/src/Checksum.cc}] + catching illegal changes to grid variables +\item[\texttt{Carpet/src/Comm.cc}] + synchronisation, prolongation +\item[\texttt{Carpet/src/Cycle.cc}] + time level handling +\item[\texttt{Carpet/src/Poison.cc}] + catching uninitialised grid variables +\item[\texttt{Carpet/src/Restrict.cc}] + restriction from finer to coarser grids +\item[\texttt{Carpet/src/Storage.cc}] + enabling and disabling storage +\item[\texttt{Carpet/src/helpers.cc}] + small low-level helper routines +\item[\texttt{Carpet/src/variables.cc}] + the global variables that keep Carpet's current state (this is used + instead of a GH extension --- should probably be changed some time) +\end{description} + + Most of these files are fairly self-contained, and they mostly + marshal the actual work to \texttt{CarpetLib}. + + + +\subsection{Interfaces to other thorns} + + Some other thorns, mostly from the Carpet arrangement, do need to + access internal data of Carpet. Carpet keeps its internal state in + global variables which are declared in + \texttt{Carpet/src/carpet\_public.hh} and defined in + \texttt{Carpet/src/variables.cc}. Entities that can be accessed + from C are declared in \texttt{Carpet/src/carpet\_public.h}; some + of these would be quite useful if they were provided by the flesh. + + + +\subsection{Missing parts} + + \texttt{Carpet} does not handle staggered grids. \texttt{Carpet} + does not provide cell-centered refinement. \texttt{Carpet} always + enables all storage. \texttt{Carpet} does not run efficiently in + parallel. + + + +\section{The workhorse} + + While \texttt{Carpet} provides the necessary interfaces to the + flesh, the grunt work is actually done by \texttt{CarpetLib}. This + thorn grew from an earlier mesh refinement of mine (Erik Schnetter) + library that was independent of Cactus. It has in the mean time + been thoroughly changed, and it does not make sense any more to use + it independent of Cactus. \texttt{CarpetLib} contains of three + major parts: a set of generic useful helpers, the grid hierarchy + and data handling, and interpolation operators. Especially the + latter could probably be separated out. While \texttt{CarpetLib} + is written in C++, the interpolators are written in + \textsc{Fortran77}. + + + +\subsection{The helpers} + + The helpers correspond closely to Carpet's terminology. A class + \texttt{vect<T,D>} provides small \texttt{D}-dimensional vectors of + the type \texttt{T}, with all the operators that one has learned to + enjoy from Haskell and Fortran 90. A \texttt{vect} corresponds to + a grid point location. The class \texttt{bbox<T,D>} provides + \texttt{D}-dimensional bounding boxes using type \texttt{T} as + indices. A \texttt{bbox} defines the location and shape of a grid + patch. Finally, \texttt{bboxset<T,D>} is a collection of \texttt{bbox}es. + \texttt{bboxsets} are a useful extension of the algebra of bboxes, as it + closes the \texttt{bbox} algebra under the union operation. + + The files \texttt{CarpetLib/src/defs.*} defines useful small + helpers and instantiates the STL templates. + \texttt{CarpetLib/src/dist.*} provides some routines around MPI. + Carpet is closely coupled to MPI and does not work without it. + + (Instead of inserting switches into Carpet to make it work without + MPI, it would make more sense to use a dummy version of MPI. PETSc + does contain such a dummy version. It is also easily possible to + use a free MPI version such as MPICH and use that to run on a + single processor. However, I cannot see any real need for making + Carpet work without MPI.) + + + +\subsection{The grid hierarchy} + + The grid hierarchy is described by a set of classes. Except for + the actual data, all structures and all information is replicated + on all processors. +\begin{description} +\item[\texttt{gh}] + is a grid hierarchy. It describes, for each refinement level, the + location of the grid patches. This \texttt{gh} does not contain + ghost zones or prolongation boundaries. There exists only one + common \texttt{gh} for all grid functions. +\item[\texttt{dh}] + is a data hierarchy. It extends the notion of a \texttt{gh} by + ghost zones and prolongation boundaries. The \texttt{dh} does most + of the bookkeeping work, deciding which grid patches interact with + what other grid patches through synchronisation, prolongation, + restriction, and boundary prolongation. Unexpected situations are + often caught in one of \texttt{dh}'s many self checks. As all grid + functions have the same number of ghost zones, there exists also + only one \texttt{dh} for all grid functions. +\item[\texttt{th}] + is a time hierarchy. It extends the notion of a \texttt{gh} by + multiple time levels. There exists one \texttt{th} per grid + function group. This is a small class that keeps track of the + current time on the different refinement levels. (Note that + different refinement levels usually live at different times.) +\item[\texttt{gf}] + is a grid function of a certain variable type. There is one + instance of \texttt{gf} for every grid function, whether it has + storage or not. Each \texttt{gf} is associated with a \texttt{dh} + and a \texttt{th} and holds the storage for all levels and all + patches. It provides interfaces to access and modify these data, + either directly or through interpolation operators. \texttt{gf} + also handles the data movement during a regridding operation. +\item[\texttt{ggf}] + is an abstract superclass of \texttt{gf} which is independent of + the variable type. This is necessary in C++ to prevent egregious + code duplication due to class templates. Most of the routines in + \texttt{gf} are actually declared in \texttt{ggf}, and they either + are virtual functions themselves, or they call virtual functions + that are declared in \texttt{gf}. +\item[\texttt{data}] + is a container for a grid patch of a certain variable type. This is + a glorified multi-dimensional array that knows how to move between + processors. \texttt{data} is not only used to store the grid + patches that make up a \texttt{gf}, it is also used to move parts + of patches around, e.g.\ for synchronisation or prolongation. +\item[\texttt{gdata}] + is an abstract superclass of \texttt{data} for much the same + reasons as for \texttt{ggf}. All information that is independent + of the variable type is kept in \texttt{gdata}. +\end{description} + + + +\subsection{The interpolators} + + There are three kinds of ``interpolators'': for prolongation, for + restricting, and for copying. The latter is only a glorified + hyperslabber that moves parts of grid patches between grid patches. + + The interpolators used for restriction and prolongation are + different from those used for the generic interpolation interface + in Cactus. The reason is that interpolation is expensive, and + hence the interpolation operators used for restriction and + prolongation have to be streamlined and optimised. As one knows + the location of the sampling points for the interpolation, one can + calculate the coefficients in advance, saving much time compared to + calling a generic interpolation interface. + + + +\subsubsection{Restriction} + + Restriction operators move data from finer to coarser grids. They + are typically called after both the coarse and the fine grid have + been advanced to the same time, and they overwrite parts of the + coarse grid with information from the fine grid, coupling the + coarse grid evolution to the fine grid evolution. In principle, + there could be restriction operators with different orders of + accuracy. Currently only a single restriction operator is + implemented that uses sampling. + + The interface of the restriction operator (see file + \texttt{CarpetLib/src/restrict\_3d\_real8.F77}) is +\begin{verbatim} +subroutine restrict_3d_real8 + (src, srciext, srcjext, srckext, + dst, dstiext, dstjext, dstkext, + srcbbox, dstbbox, regbbox) + + integer srciext, srcjext, srckext + CCTK_REAL8 src(srciext,srcjext,srckext) + integer dstiext, dstjext, dstkext + CCTK_REAL8 dst(dstiext,dstjext,dstkext) + integer srcbbox(3,3), dstbbox(3,3), regbbox(3,3) +\end{verbatim} + This interpolator assumes that space has three dimensions. The + arrays \texttt{src} and \texttt{dst} contain the source (fine) and + destination (coarse) grid patches, stored in Fortran order, as is + customary in Cactus. The arrays \texttt{src} and \texttt{dst} have + the shapes \texttt{(srciext,srcjext,srckext)} and + \texttt{(dstiext,dstjext,dstkext)}, respectively --- this + corresponds to the \texttt{cctk\_lsh} field in the \texttt{cGH} + structure. + + The three bboxes describe the location and shape of the two arrays + and of the region that should be prolongated in the global grid + point index system. That is, while the two arrays \texttt{src} and + \texttt{dst} are stored as dense arrays, they correspond to grid + patches which in general have non-unit strides in the global index + system. As prolongation is an operation that is performed between + overlapping grids, the prolongation region is the same for both the + coarse and the fine grids. + + A few constraints must hold for these data. For example, the + shapes of the arrays must be the same as the shapes defined by the + bounding boxes; the strides in the bounding boxes must differ by + the refinement factor; the bounding boxes must overlap, and the + region's bounding box must be contained in the arrays bounding + boxes, etc. Checking these constraints makes up about three + quarters of the restriction routine. + + The bboxes themselves are here represented as Fortran arrays. + Their meaning is +\begin{description} +\itemsep 0pt +\item[\texttt{bbox(:,1)}] + lower boundary (inclusive) +\item[\texttt{bbox(:,2)}] + upper boundary (inclusive) +\item[\texttt{bbox(:,3)}] + stride +\end{description} + + + +\subsubsection{Prolongation} + + There are many prolongation operators implemented. They differ in + the order of their interpolation in space (first and third, or + linear and cubic interpolation) and in time (first and second, or + linear and quadratic). The higher the order of interpolation, the + larger is the stencil, i.e.\ the more ghost zones and time levels + are necessary, and the more expensive the operation becomes. + + The prolongation operators live in the files + \texttt{CarpetLib/src/prolongate\_3d\_real8*.F77}, and the file + names indicate their orders: \texttt{$n$tl} stands for $n$ time + levels, and \texttt{o$n$} stands for an order $n$ interpolation in + space (which uses a stencil that is $n+1$ grid points wide). + + Apart from taking more than one \texttt{src} array argument when + using more than one time level, the interface to the prolongation + operator is equivalent to that of the restriction operator + described above. + + + +\section{Regridding, how and where and when} + + The thorn \texttt{Carpet} provides a routine + \texttt{RegisterRegridRoutine} where one can register a regridding + routine. Such a regridding routine does not have to actually + regrid anything, it only has to return the new desired grid + hierarchy, i.e.\ basically a description of a \texttt{gh}. + + Thorn \texttt{CarpetRegrid} provides a user interface to the + regridding routines in Carpet. All it does is take a regridding + specification from the user and translate that into a \texttt{gh}. + As usual, the parts where the computer has to listen to what a + human being intends are the most complicated. + + As humans are usually more adept at getting used to computers than + the other way around, it is useful and probably necessary to get + acquainted with how Carpet thinks in order to make it do what is + intended. + + Carpet does not deal with real-valued coordinates. Carpet deals + with integer grid point locations only, and it counts grid points + in terms of the finest possible grid (not the finest currently + existing grid). The finest possible grid is defined by the maximum + number of refinement levels set in \texttt{Carpet}. Changing this + parameter will change the meaning of many other values in parameter + files, such as e.g.\ iteration numbers (termination, output). The + only parameter that is specified in terms of the coarsest grid is + the shape of the coarsest grid in the \texttt{global\_*} parameters + of \texttt{Carpet}. I therefore suggest to set + \texttt{max\_refinement\_levels} to some large number (e.g.\ 10), + and then not changing it while experimenting with other parameter + settings. + + Carpet also does not know about symmetries. When specifying the + location of a fine grid in terms of grid points, it is the + responsibility of the user to place the fine grid correctly. For + that one has to take ghost zones and symmetry zones into account. + + It is also possible to specify the fine grid locations in terms of + real-valued coordinates. In this case, \texttt{CarpetRegrid} + translates these into integer grid points. A good translation is + quite complicated, because it has to take many user expectations + into account, such as the location of the origin, staggering with + respect to the origin, symmetry boundary conditions, the number of + ghost zones etc. The current translation is naive and leads to + unexpected results in many cases. A routine that does most of the + time what the user expects while being easy to understand is + probably important for the ease of use of Carpet, but it might be + some time until it is written. + + \texttt{CarpetRegrid} contains also a routine that measures the + error, as provided in a grid function, and the automatically + decides where to refine. This is called AMR (adaptive mesh + refinement) if it works efficiently. + + Much of \texttt{CarpetRegrid} is just slabbed together in an + attempt to find out what people need and expect. The thorn is a + mess, and a complete rewrite might be a good idea, once one knows + what exactly the rewritten thorn should do. + + + +\section{Random ramblings} + + Carpet uses the STL, because the STL provides very useful container + classes such as vectors, sets, and lists. Writing these abstract + datatypes oneself does not make sense in these times. It makes + much more sense to politick computer administrators to upgrade + their software. + + The STL and \texttt{CarpetLib}'s classes need to be instantiated + explicitly. Several compilers have several ``automatic'' schemes + that handle all template issues ``just fine''. Except they don't. + One wants to select the following: No automatic inclusion of + \texttt{.cc} files, no automatic template instantiation at link + time. Instead, most templates are instantiated explicitly by + \texttt{CarpetLib}. It is also necessary to specify to instantiate + used templates automatically. The explicit instantiations of + \texttt{CarpetLib}'s classes live in the \texttt{.cc} files + corresponding to the \texttt{.hh} file that define the templates. + The STL templates are instantiated in the file + \texttt{CarpetLib/src/defs.cc}. + + Carpet makes extensive use of the \texttt{assert()} macro in C. + This is a quick and easy way to ensure that a certain condition + holds. Assert statements abort the code if the condition does not + hold. Although I try to provide useful error messages to the user, + many unexpected cases are only caught deep inside Carpet and + manifest themselves as assertion failures. If you report an + assertion failure, it is vitally important to remember + theaccompanying file name and line number. It would also be useful + to extract from the core file a stack backtrace and the values of + the local variables of the current stack frame. + + Using symmetry boundary conditions such as octant mode is currently + still awkward in Carpet. There are several reasons for this: + \texttt{CarpetRegrid} does not know about symmetries, and hence + doesn't take them into account when choosing refinement regions. + The symmetry conditions on the finer grid might be different from + the conditions on the coarser grids, and the symmetry thorns cannot + cope with this, so this situation must be avoided: one cannot use + \texttt{avoid\_origin=yes}, because the finer grids all have + \texttt{avoid\_origin=no} due to the vertex-centred refinement. + +\end{document} diff --git a/Carpet/doxygen/Doxyfile b/Carpet/doxygen/Doxyfile new file mode 100644 index 000000000..688dc1143 --- /dev/null +++ b/Carpet/doxygen/Doxyfile @@ -0,0 +1,1080 @@ +# Doxyfile 1.3.4 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project +# +# All text after a hash (#) is considered a comment and will be ignored +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" ") + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = Carpet + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = doxygen + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, +# Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en +# (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, +# Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. + +OUTPUT_LANGUAGE = English + +# This tag can be used to specify the encoding used in the generated output. +# The encoding is not always determined by the language that is chosen, +# but also whether or not the output is meant for Windows or non-Windows users. +# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES +# forces the Windows encoding (this is the default for the Windows binary), +# whereas setting the tag to NO uses a Unix-style encoding (the default for +# all platforms other than Windows). + +USE_WINDOWS_ENCODING = NO + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited +# members of a class in the documentation of that class as if those members were +# ordinary class members. Constructors, destructors and assignment operators of +# the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. It is allowed to use relative paths in the argument list. + +STRIP_FROM_PATH = /home/eschnett/Calpha/Cactus/arrangements/Carpet/ + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful is your file systems +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like the Qt-style comments (thus requiring an +# explict @brief command for a brief description. + +JAVADOC_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the DETAILS_AT_TOP tag is set to YES then Doxygen +# will output the detailed description near the top, like JavaDoc. +# If set to NO, the detailed description appears after the member +# documentation. + +DETAILS_AT_TOP = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# reimplements. + +INHERIT_DOCS = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources +# only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources +# only. Doxygen will then generate output that is more tailored for Java. +# For instance, namespaces will be presented as packages, qualified scopes +# will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = YES + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = YES + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = YES + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or define consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and defines in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = . + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp +# *.h++ *.idl *.odl *.cs *.php *.php3 *.inc + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = YES + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories +# that are symbolic links (a Unix filesystem feature) are excluded from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. + +EXCLUDE_PATTERNS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command <filter> <input-file>, where <filter> +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. + +INPUT_FILTER = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. + +SOURCE_BROWSER = YES + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = NO + +# If the REFERENCED_BY_RELATION tag is set to YES (the default) +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = YES + +# If the REFERENCES_RELATION tag is set to YES (the default) +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = YES + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 4 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet + +HTML_STYLESHEET = + +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, +# files or namespaces will be aligned in HTML using tables. If set to +# NO a bullet list will be used. + +HTML_ALIGN_MEMBERS = YES + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output dir. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [1..20]) +# that doxygen will group on one line in the generated HTML documentation. + +ENUM_VALUES_PER_LINE = 4 + +# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be +# generated containing a tree-like index structure (just like the one that +# is generated for HTML Help). For this to work a browser that supports +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are +# probably better off using the HTML help feature. + +GENERATE_TREEVIEW = NO + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, a4wide, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4wide + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = mathpple + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimised for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assigments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. This is useful +# if you want to understand what is going on. On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_PREDEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. + +PREDEFINED = CARPET_INT \ + CARPET_REAL \ + CARPET_COMPLEX + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all function-like macros that are alone +# on a line, have an all uppercase name, and do not end with a semicolon. Such +# function macros are typically used for boiler-plate code, and will confuse the +# parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or +# super classes. Setting the tag to NO turns the diagrams off. Note that this +# option is superceded by the HAVE_DOT option below. This is only a fallback. It is +# recommended to install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = NO + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similiar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will +# generate a call dependency graph for every global function or class method. +# Note that enabling this option will significantly increase the time of a run. +# So in most cases it will be better to enable call graphs for selected +# functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, jpg, or gif +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found on the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_WIDTH = 1024 + +# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height +# (in pixels) of the graphs generated by dot. If a graph becomes larger than +# this value, doxygen will try to truncate the graph, so that it fits within +# the specified constraint. Beware that most browsers cannot cope with very +# large images. + +MAX_DOT_GRAPH_HEIGHT = 1024 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes that +# lay further from the root node will be omitted. Note that setting this option to +# 1 or 2 may greatly reduce the computation time needed for large code bases. Also +# note that a graph may be further truncated if the graph's image dimensions are +# not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). +# If 0 is used for the depth value (the default), the graph is not depth-constrained. + +MAX_DOT_GRAPH_DEPTH = 0 + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES + +#--------------------------------------------------------------------------- +# Configuration::addtions related to the search engine +#--------------------------------------------------------------------------- + +# The SEARCHENGINE tag specifies whether or not a search engine should be +# used. If set to NO the values of all tags below this one will be ignored. + +SEARCHENGINE = NO diff --git a/Carpet/doxygen/README b/Carpet/doxygen/README new file mode 100644 index 000000000..746fc0270 --- /dev/null +++ b/Carpet/doxygen/README @@ -0,0 +1,16 @@ +$Header: /home/eschnett/C/carpet/Carpet/Carpet/doxygen/README,v 1.1 2003/11/05 21:04:37 schnetter Exp $ + +This directory contains, in CVS, the Doxygen configuration file. The +generated documentation will also be placed here, but should not go +into CVS. + +Create the Doxygen configuration by running the command + + doxygen doxygen/Doxyfile + +from one directory up, i.e. from the Carpet arrangement directory. +This will create html documentation in a subdirectory html, and latex +documentation in a subdirectory latex. The latex subdirectory +contains a makefile that creates pdf from the latex sources. + +-erik |