[5] | 1 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
---|
| 2 | <html><head> |
---|
[62] | 3 | <meta content="text/html; charset=windows-1252" http-equiv="CONTENT-TYPE"><title>PALM chapter 3.5</title> <meta content="StarOffice 7 (Win32)" name="GENERATOR"> <meta content="Siegfried Raasch" name="AUTHOR"> <meta content="20040802;10431831" name="CREATED"> <meta content="20041112;14292662" name="CHANGED"> <meta content="parallel LES model" name="KEYWORDS"> <style> |
---|
| 4 | <!-- |
---|
| 5 | @page { size: 21cm 29.7cm } |
---|
| 6 | --> |
---|
| 7 | </style></head> |
---|
| 8 | <body style="direction: ltr;" lang="en-US"><h3 style="line-height: 100%;">3.5 Programming of user-defined |
---|
| 9 | code |
---|
[5] | 10 | extensions<br> |
---|
[62] | 11 | </h3><p style="line-height: 100%;">Programming |
---|
| 12 | user-defined code |
---|
[5] | 13 | extensions usually requires exact knowledge of the internal structure |
---|
| 14 | of PALM. |
---|
| 15 | Appropriate explanations in <a href="chapter_2.0.html">chapter |
---|
[62] | 16 | 2.0</a> and the technical documentation are usually not |
---|
| 17 | sufficient |
---|
[5] | 18 | and must be supplemented by the rigorous study of the source code of |
---|
| 19 | the model. Programming experiences with FORTRAN95 and if necessary |
---|
| 20 | experiences with the parallelization tool MPI are absolutely |
---|
| 21 | neccessary! </p> |
---|
[62] | 22 | <p style="line-height: 100%;">Changes of the standard |
---|
| 23 | model code by the |
---|
[5] | 24 | user |
---|
| 25 | should be avoided whenever possible and are reserved to the |
---|
| 26 | developer-group of PALM. The corrections, revisions and extensions of |
---|
| 27 | the |
---|
| 28 | model accomplished by this group are published in the |
---|
| 29 | <a href="../tec/index.html">technical/numerical |
---|
| 30 | documentation</a> and the accordingly updated source files are |
---|
| 31 | accessible to the users (see <a href="chapter_5.1.html">chapter |
---|
| 32 | 5.1</a>).</p> |
---|
[62] | 33 | <p style="line-height: 100%;">However, the user frequently |
---|
| 34 | may feel the |
---|
[5] | 35 | need to make extensions of the model code for his/her own simulations. |
---|
| 36 | For this purpose, a set |
---|
| 37 | of interfaces is available, which can be used to add user-defined code |
---|
| 38 | to the model. This |
---|
[62] | 39 | chapter describes the programming of such user-defined code extensions.</p><p style="line-height: 100%;">The integration of user-defined |
---|
| 40 | code |
---|
[5] | 41 | occurs in the form of subroutine calls, which are made at a set of |
---|
| 42 | places in the model code, by default. These subroutines have |
---|
| 43 | pre-defined names, which must not be changed by the user. Their basic |
---|
| 44 | versions are a component of the standard model |
---|
| 45 | code and they are all included in the source code file |
---|
| 46 | <tt><font style="font-size: 10pt;" size="2">user_interface.f90</font></tt><font style="font-size: 10pt;" size="2">.</font> |
---|
[62] | 47 | <font color="#000000">The</font> basic versions |
---|
| 48 | accomplish nearly no |
---|
[5] | 49 | actions, thus they are pure templates, which can be extended by the |
---|
| 50 | user as required. Actions which are already accomplished in these |
---|
| 51 | basic versions by default should not be changed. Here is an example |
---|
| 52 | of such a basic version: </p> |
---|
| 53 | <p style="line-height: 100%;"> </p> |
---|
[62] | 54 | <pre style="line-height: 100%;"><font color="#000000"><font style="font-size: 10pt;" size="2">SUBROUTINE user_init</font></font><br><br><font color="#000000"><font style="font-size: 10pt;" size="2">!------------------------------------------------------------------------------</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">!</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">!</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">! Description:</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">! -----------</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">! Execution of user-defined initializing actions</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">!------------------------------------------------------------------------------</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">!</font></font><br><br><font color="#000000"> <font style="font-size: 10pt;" size="2">USE control_parameters</font></font><br><font color="#000000"> <font style="font-size: 10pt;" size="2">USE user</font></font><br><br><font color="#000000"> <font style="font-size: 10pt;" size="2">IMPLICIT NONE</font></font><br><br><font color="#000000"><font style="font-size: 10pt;" size="2">!</font></font><br><font color="#000000"><font style="font-size: 10pt;" size="2">!-- Here the user defined initializing actions follow:</font></font><br><br><br><font color="#000000"><font style="font-size: 10pt;" size="2">END SUBROUTINE user_init</font></font></pre><p style="line-height: 100%;">The communication (handling of |
---|
| 55 | variables) |
---|
[5] | 56 | with the model occurs via the |
---|
| 57 | global variables, which are defined within the individual FORTRAN - |
---|
| 58 | modules of PALM. The appropriate modules (they are all in the |
---|
| 59 | source code file <tt><font style="font-size: 10pt;" size="2">modules.f90</font></tt>) |
---|
[62] | 60 | must be declared by means of <font size="2"><font face="Cumberland, monospace">USE</font></font> |
---|
| 61 | statements in the |
---|
[5] | 62 | user-defined routines in order to be able to work with the variables |
---|
| 63 | contained in them. As in the example, this is already done with the |
---|
| 64 | module <tt><font style="font-size: 10pt;" size="2">control_parameters</font></tt>. |
---|
| 65 | This yields access to most of the existing parameters for steering the |
---|
[62] | 66 | model. Furthermore, the module <tt><font style="font-size: 11pt;" size="2">user</font></tt> |
---|
| 67 | appears in the example |
---|
[5] | 68 | above. This is a |
---|
| 69 | user-defined module (it is located at |
---|
| 70 | the beginning of the file <tt><font style="font-size: 10pt;" size="2">user_interface.f90</font></tt>) |
---|
| 71 | and can be used for communication between the user-defined routines. In |
---|
| 72 | this module own variables can be declared as desired. It |
---|
| 73 | is not used outside of the user code. </p> |
---|
[62] | 74 | <p style="line-height: 100%;">A very typical request of |
---|
| 75 | users is the |
---|
[5] | 76 | calculation and output of |
---|
| 77 | quantities which are not part of PALM's standard output. Several |
---|
| 78 | routines in the basic user interface are already designed and prepared |
---|
[62] | 79 | for calculating and output of such quantities (see <a href="chapter_3.5.4.html">3.5.4</a>).</p><p style="line-height: 100%;">As already mentioned, the |
---|
| 80 | contents of |
---|
[5] | 81 | the file <tt><font style="font-size: 10pt;" size="2">user_interface.f90</font></tt> |
---|
| 82 | can be used as a basis for extensions. However the file should not be |
---|
| 83 | manipulated directly (it is anyway write protected by default), but it |
---|
| 84 | should be |
---|
| 85 | copied to another file. User write permits for this new file must be |
---|
| 86 | declared by means of the unix command <tt><font style="font-size: 10pt;" size="2">chmod</font></tt>. |
---|
| 87 | </p> |
---|
[62] | 88 | <p style="line-height: 100%;">The following sections |
---|
| 89 | describe, which |
---|
[5] | 90 | interfaces for user-defined code exist in the |
---|
| 91 | model, how user parameters can be defined for steering this code |
---|
| 92 | and how it is translated and linked to the model. </p> |
---|
[62] | 93 | <hr><p style="line-height: 100%;"><br> |
---|
| 94 | <font color="#000080"><font color="#000080"><a href="chapter_3.4.html"><font color="#000080"><img name="Grafik1" src="left.gif" align="bottom" border="2" height="32" width="32"></font></a><a href="index.html"><font color="#000080"><img name="Grafik2" src="up.gif" align="bottom" border="2" height="32" width="32"></font></a><a href="chapter_3.5.1.html"><font color="#000080"><img name="Grafik3" src="right.gif" align="bottom" border="2" height="32" width="32"></font></a></font></font></p><p style="line-height: 100%;"><i>Last change: </i> |
---|
| 95 | $Id: chapter_3.5.html 62 2007-03-13 02:52:40Z raasch $</p> |
---|
[5] | 96 | </body></html> |
---|