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