source: palm/trunk/DOC/app/chapter_3.5.3.html @ 53

Last change on this file since 53 was 48, checked in by raasch, 18 years ago

preliminary version, several changes to be explained later

File size: 11.0 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<html><head>
3  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
4 
5  <title>PALM chapter 3.5.3</title><meta name="GENERATOR" content="StarOffice 7  (Win32)">
6  <meta name="AUTHOR" content="Siegfried Raasch">
7  <meta name="CREATED" content="20040802;14001660">
8  <meta name="CHANGED" content="20041112;14483720">
9  <meta name="KEYWORDS" content="parallel LES model">
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.3 Definition of user-defined
18subdomains</h3>
19<p style="line-height: 100%;">By default, the values of the timeseries quantities and the horizontally averaged vertical profiles (saved in local files
20<a href="chapter_3.4.html#PLOT1D_DATA">PLOT1D_DATA</a>
21and <a href="chapter_3.4.html#LIST_PROFIL">LIST_PROFIL</a>)
22always refer to the total model domain. Independently, up to 9 time
23series or profiles for different user-defined subdomains can be
24computed and plotted additionally. Steering in principle is done
25via the initialization parameter <a href="chapter_4.1.html#statistic_regions">statistic_regions</a>.
26</p>
27<p style="line-height: 100%;">The exact definition of these subdomains
28has to be made by the user within the user-defined subroutine
29<tt><font style="font-size: 10pt;" size="2">init_user</font></tt>. The
30subdomains are defined with a mask array named <tt><font style="font-size: 10pt;" size="2">rmask</font></tt>,
31which has to be given the value 1.0 for all horizontal grid points
32belonging to
33the user-defined subdomain and the value 0.0, where grid points do not
34belong
35to the user-defined subdomain. In the model <tt><font size="2">rmask</font></tt>
36is
37declared as: </p>
38<ul>
39  <p style="line-height: 100%;"><tt><font style="font-size: 10pt;" size="2">REAL :: rmask (nys-1:nyn+1,nxl-1,nxr+1,0:9) .</font></tt></p>
40</ul>
41<p style="line-height: 100%;">The first two indices are the grid point
42indices in y and x-direction. With parallel model runs <tt><font style="font-size: 10pt;" size="2">nxl</font></tt><font style="font-size: 10pt;" size="2">,
43</font><tt><font style="font-size: 10pt;" size="2">nxr</font></tt><font style="font-size: 10pt;" size="2">,
44</font><tt><font style="font-size: 10pt;" size="2">nys</font></tt><font style="font-size: 10pt;" size="2">
45<font size="3">and</font> </font><tt><font style="font-size: 10pt;" size="2">nyn</font></tt>
46are the array bounds of the respective subdomain (don't confuse this
47with the user-defined subdomain!) on the
48respective processor. With runs on one processor <tt><font style="font-size: 10pt;" size="2">nys</font></tt><font style="font-size: 10pt;" size="2">
49= </font><tt><font style="font-size: 10pt;" size="2">nxl</font></tt><font style="font-size: 10pt;" size="2">
50= 0</font> and <font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">nxr
51=</font> </font><a href="chapter_4.1.html#nx">nx</a>
52and <font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">nyn
53=</font></font> <a href="chapter_4.1.html#ny">ny</a>.
54The third index determines the user-defined subdomain. The total model
55domain
56carries the index 0, the user-defined subdomains have the values 1 to
579. </p>
58<p style="line-height: 100%;">The following example should illustrate
59this. Two subdomains are defined by the user. The first is determined
60by all grid
61points which lie within a circle whose center is equal to the
62(horizontal) center of the model domain and whose diameter is equal
63to half of the total horizontal domain size (square total domain
64assumed).
65The second subdomain should be defined by all points outside of this
66domain. This may be obtained by the following lines of code in <tt><font style="font-size: 10pt;" size="2">user_init</font></tt>:
67</p>
68<ul>
69  <p style="line-height: 100%;"><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">USE
70grid_variables</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
71  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">USE indices</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
72  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">USE statistics</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
73  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">.</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
74  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">.</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
75  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">.</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
76  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">disc_center_x = dx * (nx + 1)/2</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
77  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">disc_center_y = dy * (ny + 1)/2</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
78  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">disc_radius = 0.5 * disc_center_x</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
79  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">DO&nbsp; i = nxl-1, nxr+1</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
80  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp; x = i * dx</font></font></tt><br>
81  <tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp; DO&nbsp; j = nys-1, nyn+1</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
82  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y = j * dy</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
83  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
84radial_distance = SQRT( ( x - disc_center_x )**2 + &amp;</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
85  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
86( y - disc_center_y )**2 )</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
87  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp; &nbsp; &nbsp; IF ( radial_distance
88&gt; disc_radius )&nbsp; THEN</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
89  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
90rmask(j,i,1) = 0.0</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
91  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
92rmask(j,i,2) = 1.0</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
93  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ELSE</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
94  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
95rmask(j,i,1) = 1.0</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
96  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
97rmask(j,i,2) = 0.0</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
98  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ENDIF</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"> <br>
99  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">&nbsp;&nbsp; ENDDO</font></font></tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace"><br>
100  </font></font><tt><font style="font-size: 10pt;" size="2"><font face="Cumberland, monospace">ENDDO</font></font></tt></p>
101</ul>
102<p style="line-height: 100%;">The module <span style="font-family: monospace;">statistics</span> must be used,
103because it contains <span style="font-family: monospace;">rmask</span>
104and the modules <span style="font-family: monospace;">grid_variables</span>
105and <span style="font-family: monospace;">indices</span> are
106necessary in this example, because grid spacing and indices are used.
107All array elements of <span style="font-family: monospace;">rmask</span>
108(<span style="font-family: monospace;">rmask(:,:,:)</span>) are preset
109by the model with 1.0. In no case this assignment must be
110changed for the total domain (<span style="font-family: monospace;">rmask(:,:,0)</span>)!
111Computations and output for the user-defined subdomains only take place
112if
113the user sets <a href="chapter_4.1.html#statistic_regions">statistic_regions</a>
114&ge; <i>1</i>. Beyond that, names for the user-defined subdomains can be
115assigned
116via the initialization parameter <a href="chapter_4.3.html#region">region</a>.
117Output of the names of the selected user-defined subdomains happens in
118the local files <a href="chapter_3.4.html#HEADER">HEADER</a>
119and <a href="chapter_3.4.html#RUN_CONTROL">RUN_CONTROL</a>
120within the user-defined subroutine <tt><font style="font-size: 10pt;" size="2">user_header</font></tt>.
121<br>
122&nbsp; </p>
123<hr>
124<p style="line-height: 100%;"><br>
125<font color="#000080"><font color="#000080"><a href="chapter_3.5.2.html"><font color="#000080"><img src="left.gif" name="Grafik1" align="bottom" border="2" height="32" width="32"></font></a><a href="index.html"><font color="#000080"><img src="up.gif" name="Grafik2" align="bottom" border="2" height="32" width="32"></font></a><a href="chapter_3.5.4.html"><font color="#000080"><img src="right.gif" name="Grafik3" align="bottom" border="2" height="32" width="32"></font></a></font></font></p>
126<p style="line-height: 100%;"><i>Last change:&nbsp;</i> 07/03/07 (SR)</p>
127</body></html>
Note: See TracBrowser for help on using the repository browser.