1 | \hypertarget{namespacemod__oasis__reprosum}{}\section{mod\+\_\+oasis\+\_\+reprosum Module Reference} |
---|
2 | \label{namespacemod__oasis__reprosum}\index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
3 | |
---|
4 | |
---|
5 | O\+A\+S\+IS reproducible sum method from P. Worley. |
---|
6 | |
---|
7 | |
---|
8 | \subsection*{Functions/\+Subroutines} |
---|
9 | \begin{DoxyCompactItemize} |
---|
10 | \item |
---|
11 | subroutine, public \hyperlink{namespacemod__oasis__reprosum_ad6b4914497a4961339a1c95bfb807660}{oasis\+\_\+reprosum\+\_\+setopts} (repro\+\_\+sum\+\_\+use\+\_\+ddpdd\+\_\+in, repro\+\_\+sum\+\_\+rel\+\_\+diff\+\_\+max\+\_\+in, repro\+\_\+sum\+\_\+recompute\+\_\+in, repro\+\_\+sum\+\_\+master, repro\+\_\+sum\+\_\+logunit) |
---|
12 | \begin{DoxyCompactList}\small\item\em Set runtime options. \end{DoxyCompactList}\item |
---|
13 | subroutine, public \hyperlink{namespacemod__oasis__reprosum_a398280c78cff126b7622dbd96af675e4}{oasis\+\_\+reprosum\+\_\+calc} (arr, arr\+\_\+gsum, nsummands, dsummands, nflds, ddpdd\+\_\+sum, arr\+\_\+gbl\+\_\+max, arr\+\_\+gbl\+\_\+max\+\_\+out, arr\+\_\+max\+\_\+levels, arr\+\_\+max\+\_\+levels\+\_\+out, gbl\+\_\+max\+\_\+nsummands, gbl\+\_\+max\+\_\+nsummands\+\_\+out, gbl\+\_\+count, repro\+\_\+sum\+\_\+validate, repro\+\_\+sum\+\_\+stats, rel\+\_\+diff, commid) |
---|
14 | \begin{DoxyCompactList}\small\item\em Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. An alternative is to use an \char`\"{}almost |
---|
15 | always reproducible\char`\"{} floating point algorithm. \end{DoxyCompactList}\item |
---|
16 | subroutine \hyperlink{namespacemod__oasis__reprosum_a7ea3c5bad9db10c80eb528453602aed3}{oasis\+\_\+reprosum\+\_\+int} (arr, arr\+\_\+gsum, nsummands, dsummands, nflds, arr\+\_\+max\+\_\+shift, arr\+\_\+gmax\+\_\+exp, max\+\_\+levels, max\+\_\+level, validate, recompute, omp\+\_\+nthreads, mpi\+\_\+comm) |
---|
17 | \begin{DoxyCompactList}\small\item\em Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. The accuracy of the fixed point algorithm is controlled by the number of \char`\"{}levels\char`\"{} of integer expansion, the maximum value of which is specified by max\+\_\+level. \end{DoxyCompactList}\item |
---|
18 | logical function, public \hyperlink{namespacemod__oasis__reprosum_a0f773341a7a6883b2f65d395a6b25b08}{oasis\+\_\+reprosum\+\_\+tolexceeded} (name, nflds, master, logunit, rel\+\_\+diff) |
---|
19 | \begin{DoxyCompactList}\small\item\em Test whether distributed sum exceeds tolerance and print out a warning message. \end{DoxyCompactList}\item |
---|
20 | subroutine \hyperlink{namespacemod__oasis__reprosum_afe237975bf8e718f32523c3929911102}{oasis\+\_\+reprosum\+\_\+ddpdd} (arr, arr\+\_\+gsum, nsummands, dsummands, nflds, mpi\+\_\+comm) |
---|
21 | \begin{DoxyCompactList}\small\item\em Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on He and Ding\textquotesingle{}s implementation of the double-\/double algorithm. \end{DoxyCompactList}\item |
---|
22 | subroutine, private \hyperlink{namespacemod__oasis__reprosum_a24f9efa3ca739811888206eaf71d4690}{ddpdd} (dda, ddb, len, itype) |
---|
23 | \item |
---|
24 | subroutine, private \hyperlink{namespacemod__oasis__reprosum_affb09b4ec9b001bf2ebbc51feebd8004}{split\+\_\+indices} (total, num\+\_\+pieces, ibeg, iend) |
---|
25 | \end{DoxyCompactItemize} |
---|
26 | \subsection*{Variables} |
---|
27 | \begin{DoxyCompactItemize} |
---|
28 | \item |
---|
29 | logical, public \hyperlink{namespacemod__oasis__reprosum_a89140c250e34a903bc9aa546574988d6}{oasis\+\_\+reprosum\+\_\+recompute} = .false. |
---|
30 | \item |
---|
31 | real(r8), public \hyperlink{namespacemod__oasis__reprosum_a6a80f4226d35d0842617e6eb6c9406e1}{oasis\+\_\+reprosum\+\_\+reldiffmax} = -\/1.\+0\+\_\+r8 |
---|
32 | \item |
---|
33 | logical \hyperlink{namespacemod__oasis__reprosum_aab06d0de9a82726d347ac52bb276355d}{repro\+\_\+sum\+\_\+use\+\_\+ddpdd} = .false. |
---|
34 | \item |
---|
35 | logical \hyperlink{namespacemod__oasis__reprosum_a48a084c213295b9eaa78c0552a10741a}{detailed\+\_\+timing} = .false. |
---|
36 | \end{DoxyCompactItemize} |
---|
37 | |
---|
38 | |
---|
39 | \subsection{Detailed Description} |
---|
40 | O\+A\+S\+IS reproducible sum method from P. Worley. |
---|
41 | |
---|
42 | \subsection{Function/\+Subroutine Documentation} |
---|
43 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a24f9efa3ca739811888206eaf71d4690}\label{namespacemod__oasis__reprosum_a24f9efa3ca739811888206eaf71d4690}} |
---|
44 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!ddpdd@{ddpdd}} |
---|
45 | \index{ddpdd@{ddpdd}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
46 | \subsubsection{\texorpdfstring{ddpdd()}{ddpdd()}} |
---|
47 | {\footnotesize\ttfamily subroutine, private mod\+\_\+oasis\+\_\+reprosum\+::ddpdd (\begin{DoxyParamCaption}\item[{complex(r8), dimension(len), intent(in)}]{dda, }\item[{complex(r8), dimension(len), intent(inout)}]{ddb, }\item[{integer, intent(in)}]{len, }\item[{integer, intent(in)}]{itype }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}} |
---|
48 | |
---|
49 | |
---|
50 | |
---|
51 | Definition at line 1354 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
52 | |
---|
53 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a398280c78cff126b7622dbd96af675e4}\label{namespacemod__oasis__reprosum_a398280c78cff126b7622dbd96af675e4}} |
---|
54 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+calc@{oasis\+\_\+reprosum\+\_\+calc}} |
---|
55 | \index{oasis\+\_\+reprosum\+\_\+calc@{oasis\+\_\+reprosum\+\_\+calc}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
56 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+calc()}{oasis\_reprosum\_calc()}} |
---|
57 | {\footnotesize\ttfamily subroutine, public mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+calc (\begin{DoxyParamCaption}\item[{real(r8), dimension(dsummands,nflds), intent(in)}]{arr, }\item[{real(r8), dimension(nflds), intent(out)}]{arr\+\_\+gsum, }\item[{integer, intent(in)}]{nsummands, }\item[{integer, intent(in)}]{dsummands, }\item[{integer, intent(in)}]{nflds, }\item[{logical, intent(in), optional}]{ddpdd\+\_\+sum, }\item[{real(r8), dimension(nflds), intent(in), optional}]{arr\+\_\+gbl\+\_\+max, }\item[{real(r8), dimension(nflds), intent(out), optional}]{arr\+\_\+gbl\+\_\+max\+\_\+out, }\item[{integer, dimension(nflds), intent(in), optional}]{arr\+\_\+max\+\_\+levels, }\item[{integer, dimension(nflds), intent(out), optional}]{arr\+\_\+max\+\_\+levels\+\_\+out, }\item[{integer, intent(in), optional}]{gbl\+\_\+max\+\_\+nsummands, }\item[{integer, intent(out), optional}]{gbl\+\_\+max\+\_\+nsummands\+\_\+out, }\item[{integer, intent(in), optional}]{gbl\+\_\+count, }\item[{logical, intent(in), optional}]{repro\+\_\+sum\+\_\+validate, }\item[{integer, dimension(5), intent(inout), optional}]{repro\+\_\+sum\+\_\+stats, }\item[{real(r8), dimension(2,nflds), intent(out), optional}]{rel\+\_\+diff, }\item[{integer, intent(in), optional}]{commid }\end{DoxyParamCaption})} |
---|
58 | |
---|
59 | |
---|
60 | |
---|
61 | Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. An alternative is to use an \char`\"{}almost |
---|
62 | always reproducible\char`\"{} floating point algorithm. |
---|
63 | |
---|
64 | |
---|
65 | \begin{DoxyParams}[1]{Parameters} |
---|
66 | \mbox{\tt in} & {\em nsummands} & number of local summands\\ |
---|
67 | \hline |
---|
68 | \mbox{\tt in} & {\em dsummands} & declared first dimension\\ |
---|
69 | \hline |
---|
70 | \mbox{\tt in} & {\em nflds} & number of fields\\ |
---|
71 | \hline |
---|
72 | \mbox{\tt in} & {\em arr} & input array\\ |
---|
73 | \hline |
---|
74 | \mbox{\tt out} & {\em arr\+\_\+gsum} & global means\\ |
---|
75 | \hline |
---|
76 | \mbox{\tt in} & {\em ddpdd\+\_\+sum} & use ddpdd algorithm instead of fixed precision algorithm\\ |
---|
77 | \hline |
---|
78 | \mbox{\tt in} & {\em arr\+\_\+gbl\+\_\+max} & upper bound on max(abs(arr))\\ |
---|
79 | \hline |
---|
80 | \mbox{\tt out} & {\em arr\+\_\+gbl\+\_\+max\+\_\+out} & calculated upper bound on max(abs(arr))\\ |
---|
81 | \hline |
---|
82 | \mbox{\tt in} & {\em arr\+\_\+max\+\_\+levels} & maximum number of levels of integer expansion to use\\ |
---|
83 | \hline |
---|
84 | \mbox{\tt out} & {\em arr\+\_\+max\+\_\+levels\+\_\+out} & output of number of levels of integer expansion to used\\ |
---|
85 | \hline |
---|
86 | \mbox{\tt in} & {\em gbl\+\_\+max\+\_\+nsummands} & maximum of nsummand over all processes\\ |
---|
87 | \hline |
---|
88 | \mbox{\tt out} & {\em gbl\+\_\+max\+\_\+nsummands\+\_\+out} & calculated maximum nsummands over all processes\\ |
---|
89 | \hline |
---|
90 | \mbox{\tt in} & {\em gbl\+\_\+count} & was total number of summands; now is ignored; use gbl\+\_\+max\+\_\+nsummands instead\\ |
---|
91 | \hline |
---|
92 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+validate} & flag enabling/disabling testing that gmax and max\+\_\+levels are accurate/sufficient. Default is enabled.\\ |
---|
93 | \hline |
---|
94 | \mbox{\tt in,out} & {\em repro\+\_\+sum\+\_\+stats} & increment running totals for (1) one-\/reduction repro\+\_\+sum (2) two-\/reduction repro\+\_\+sum (3) both types in one call (4) nonrepro\+\_\+sum (5) global max nsummands reduction\\ |
---|
95 | \hline |
---|
96 | \mbox{\tt out} & {\em rel\+\_\+diff} & relative and absolute differences between fixed and floating point sums\\ |
---|
97 | \hline |
---|
98 | \mbox{\tt in} & {\em commid} & M\+PI communicator \\ |
---|
99 | \hline |
---|
100 | \end{DoxyParams} |
---|
101 | |
---|
102 | |
---|
103 | Definition at line 267 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
104 | |
---|
105 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_afe237975bf8e718f32523c3929911102}\label{namespacemod__oasis__reprosum_afe237975bf8e718f32523c3929911102}} |
---|
106 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+ddpdd@{oasis\+\_\+reprosum\+\_\+ddpdd}} |
---|
107 | \index{oasis\+\_\+reprosum\+\_\+ddpdd@{oasis\+\_\+reprosum\+\_\+ddpdd}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
108 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+ddpdd()}{oasis\_reprosum\_ddpdd()}} |
---|
109 | {\footnotesize\ttfamily subroutine mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+ddpdd (\begin{DoxyParamCaption}\item[{real(r8), dimension(dsummands,nflds), intent(in)}]{arr, }\item[{real(r8), dimension(nflds), intent(out)}]{arr\+\_\+gsum, }\item[{integer, intent(in)}]{nsummands, }\item[{integer, intent(in)}]{dsummands, }\item[{integer, intent(in)}]{nflds, }\item[{integer, intent(in)}]{mpi\+\_\+comm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}} |
---|
110 | |
---|
111 | |
---|
112 | |
---|
113 | Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on He and Ding\textquotesingle{}s implementation of the double-\/double algorithm. |
---|
114 | |
---|
115 | |
---|
116 | \begin{DoxyParams}[1]{Parameters} |
---|
117 | \mbox{\tt in} & {\em nsummands} & number of local summands\\ |
---|
118 | \hline |
---|
119 | \mbox{\tt in} & {\em dsummands} & declared first dimension\\ |
---|
120 | \hline |
---|
121 | \mbox{\tt in} & {\em nflds} & number of fields\\ |
---|
122 | \hline |
---|
123 | \mbox{\tt in} & {\em arr} & input array\\ |
---|
124 | \hline |
---|
125 | \mbox{\tt in} & {\em mpi\+\_\+comm} & M\+PI subcommunicator\\ |
---|
126 | \hline |
---|
127 | \mbox{\tt out} & {\em arr\+\_\+gsum} & global sums \\ |
---|
128 | \hline |
---|
129 | \end{DoxyParams} |
---|
130 | |
---|
131 | |
---|
132 | Definition at line 1281 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
133 | |
---|
134 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a7ea3c5bad9db10c80eb528453602aed3}\label{namespacemod__oasis__reprosum_a7ea3c5bad9db10c80eb528453602aed3}} |
---|
135 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+int@{oasis\+\_\+reprosum\+\_\+int}} |
---|
136 | \index{oasis\+\_\+reprosum\+\_\+int@{oasis\+\_\+reprosum\+\_\+int}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
137 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+int()}{oasis\_reprosum\_int()}} |
---|
138 | {\footnotesize\ttfamily subroutine mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+int (\begin{DoxyParamCaption}\item[{real(r8), dimension(dsummands,nflds), intent(in)}]{arr, }\item[{real(r8), dimension(nflds), intent(out)}]{arr\+\_\+gsum, }\item[{integer, intent(in)}]{nsummands, }\item[{integer, intent(in)}]{dsummands, }\item[{integer, intent(in)}]{nflds, }\item[{integer, intent(in)}]{arr\+\_\+max\+\_\+shift, }\item[{integer, dimension(nflds), intent(in)}]{arr\+\_\+gmax\+\_\+exp, }\item[{integer, dimension(nflds), intent(in)}]{max\+\_\+levels, }\item[{integer, intent(in)}]{max\+\_\+level, }\item[{logical, intent(in)}]{validate, }\item[{logical, intent(out)}]{recompute, }\item[{integer, intent(in)}]{omp\+\_\+nthreads, }\item[{integer, intent(in)}]{mpi\+\_\+comm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}} |
---|
139 | |
---|
140 | |
---|
141 | |
---|
142 | Compute the global sum of each field in \char`\"{}arr\char`\"{} using the indicated communicator with a reproducible yet scalable implementation based on a fixed point algorithm. The accuracy of the fixed point algorithm is controlled by the number of \char`\"{}levels\char`\"{} of integer expansion, the maximum value of which is specified by max\+\_\+level. |
---|
143 | |
---|
144 | |
---|
145 | \begin{DoxyParams}[1]{Parameters} |
---|
146 | \mbox{\tt in} & {\em nsummands} & number of local summands\\ |
---|
147 | \hline |
---|
148 | \mbox{\tt in} & {\em dsummands} & declared first dimension\\ |
---|
149 | \hline |
---|
150 | \mbox{\tt in} & {\em nflds} & number of fields\\ |
---|
151 | \hline |
---|
152 | \mbox{\tt in} & {\em arr\+\_\+max\+\_\+shift} & maximum safe exponent for value $<$ 1 (so that sum does not overflow)\\ |
---|
153 | \hline |
---|
154 | \mbox{\tt in} & {\em arr\+\_\+gmax\+\_\+exp} & exponents of global maxima\\ |
---|
155 | \hline |
---|
156 | \mbox{\tt in} & {\em max\+\_\+levels} & maximum number of levels of integer expansion\\ |
---|
157 | \hline |
---|
158 | \mbox{\tt in} & {\em max\+\_\+level} & maximum value in max\+\_\+levels\\ |
---|
159 | \hline |
---|
160 | \mbox{\tt in} & {\em omp\+\_\+nthreads} & number of Open\+MP threads\\ |
---|
161 | \hline |
---|
162 | \mbox{\tt in} & {\em mpi\+\_\+comm} & M\+PI subcommunicator\\ |
---|
163 | \hline |
---|
164 | \mbox{\tt in} & {\em arr} & input array\\ |
---|
165 | \hline |
---|
166 | \mbox{\tt in} & {\em validate} & flag indicating that accuracy of solution generated from arr\+\_\+gmax\+\_\+exp and max\+\_\+levels should be tested\\ |
---|
167 | \hline |
---|
168 | \mbox{\tt out} & {\em recompute} & flag indicating that either the upper bounds are inaccurate, or max\+\_\+levels and arr\+\_\+gmax\+\_\+exp do not generate accurate enough sums\\ |
---|
169 | \hline |
---|
170 | \mbox{\tt out} & {\em arr\+\_\+gsum} & global means \\ |
---|
171 | \hline |
---|
172 | \end{DoxyParams} |
---|
173 | |
---|
174 | |
---|
175 | Definition at line 751 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
176 | |
---|
177 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_ad6b4914497a4961339a1c95bfb807660}\label{namespacemod__oasis__reprosum_ad6b4914497a4961339a1c95bfb807660}} |
---|
178 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+setopts@{oasis\+\_\+reprosum\+\_\+setopts}} |
---|
179 | \index{oasis\+\_\+reprosum\+\_\+setopts@{oasis\+\_\+reprosum\+\_\+setopts}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
180 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+setopts()}{oasis\_reprosum\_setopts()}} |
---|
181 | {\footnotesize\ttfamily subroutine, public mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+setopts (\begin{DoxyParamCaption}\item[{logical, intent(in), optional}]{repro\+\_\+sum\+\_\+use\+\_\+ddpdd\+\_\+in, }\item[{real(r8), intent(in), optional}]{repro\+\_\+sum\+\_\+rel\+\_\+diff\+\_\+max\+\_\+in, }\item[{logical, intent(in), optional}]{repro\+\_\+sum\+\_\+recompute\+\_\+in, }\item[{logical, intent(in), optional}]{repro\+\_\+sum\+\_\+master, }\item[{integer, intent(in), optional}]{repro\+\_\+sum\+\_\+logunit }\end{DoxyParamCaption})} |
---|
182 | |
---|
183 | |
---|
184 | |
---|
185 | Set runtime options. |
---|
186 | |
---|
187 | |
---|
188 | \begin{DoxyParams}[1]{Parameters} |
---|
189 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+use\+\_\+ddpdd\+\_\+in} & Use D\+D\+P\+DD algorithm instead of fixed precision algorithm\\ |
---|
190 | \hline |
---|
191 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+rel\+\_\+diff\+\_\+max\+\_\+in} & maximum permissible difference between reproducible and nonreproducible sums\\ |
---|
192 | \hline |
---|
193 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+recompute\+\_\+in} & recompute using different algorithm when difference between reproducible and nonreproducible sums is too great\\ |
---|
194 | \hline |
---|
195 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+master} & flag indicating whether this process should output log messages\\ |
---|
196 | \hline |
---|
197 | \mbox{\tt in} & {\em repro\+\_\+sum\+\_\+logunit} & unit number for log messages \\ |
---|
198 | \hline |
---|
199 | \end{DoxyParams} |
---|
200 | |
---|
201 | |
---|
202 | Definition at line 105 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
203 | |
---|
204 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a0f773341a7a6883b2f65d395a6b25b08}\label{namespacemod__oasis__reprosum_a0f773341a7a6883b2f65d395a6b25b08}} |
---|
205 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+tolexceeded@{oasis\+\_\+reprosum\+\_\+tolexceeded}} |
---|
206 | \index{oasis\+\_\+reprosum\+\_\+tolexceeded@{oasis\+\_\+reprosum\+\_\+tolexceeded}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
207 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+tolexceeded()}{oasis\_reprosum\_tolexceeded()}} |
---|
208 | {\footnotesize\ttfamily logical function, public mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+tolexceeded (\begin{DoxyParamCaption}\item[{character(len=$\ast$), intent(in)}]{name, }\item[{integer, intent(in)}]{nflds, }\item[{logical, intent(in)}]{master, }\item[{integer, intent(in), optional}]{logunit, }\item[{real(r8), dimension(2,nflds), intent(in)}]{rel\+\_\+diff }\end{DoxyParamCaption})} |
---|
209 | |
---|
210 | |
---|
211 | |
---|
212 | Test whether distributed sum exceeds tolerance and print out a warning message. |
---|
213 | |
---|
214 | |
---|
215 | \begin{DoxyParams}[1]{Parameters} |
---|
216 | \mbox{\tt in} & {\em name} & distributed sum identifier\\ |
---|
217 | \hline |
---|
218 | \mbox{\tt in} & {\em nflds} & number of fields\\ |
---|
219 | \hline |
---|
220 | \mbox{\tt in} & {\em master} & process that will write warning messages?\\ |
---|
221 | \hline |
---|
222 | \mbox{\tt in} & {\em logunit} & unit warning messages written to\\ |
---|
223 | \hline |
---|
224 | \mbox{\tt in} & {\em rel\+\_\+diff} & relative and absolute differences between fixed and floating point sums \\ |
---|
225 | \hline |
---|
226 | \end{DoxyParams} |
---|
227 | |
---|
228 | |
---|
229 | Definition at line 1195 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
230 | |
---|
231 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_affb09b4ec9b001bf2ebbc51feebd8004}\label{namespacemod__oasis__reprosum_affb09b4ec9b001bf2ebbc51feebd8004}} |
---|
232 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!split\+\_\+indices@{split\+\_\+indices}} |
---|
233 | \index{split\+\_\+indices@{split\+\_\+indices}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
234 | \subsubsection{\texorpdfstring{split\+\_\+indices()}{split\_indices()}} |
---|
235 | {\footnotesize\ttfamily subroutine, private mod\+\_\+oasis\+\_\+reprosum\+::split\+\_\+indices (\begin{DoxyParamCaption}\item[{integer, intent(in)}]{total, }\item[{integer, intent(in)}]{num\+\_\+pieces, }\item[{integer, dimension(num\+\_\+pieces), intent(out)}]{ibeg, }\item[{integer, dimension(num\+\_\+pieces), intent(out)}]{iend }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}} |
---|
236 | |
---|
237 | |
---|
238 | |
---|
239 | Definition at line 1394 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
240 | |
---|
241 | |
---|
242 | |
---|
243 | \subsection{Variable Documentation} |
---|
244 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a48a084c213295b9eaa78c0552a10741a}\label{namespacemod__oasis__reprosum_a48a084c213295b9eaa78c0552a10741a}} |
---|
245 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!detailed\+\_\+timing@{detailed\+\_\+timing}} |
---|
246 | \index{detailed\+\_\+timing@{detailed\+\_\+timing}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
247 | \subsubsection{\texorpdfstring{detailed\+\_\+timing}{detailed\_timing}} |
---|
248 | {\footnotesize\ttfamily logical mod\+\_\+oasis\+\_\+reprosum\+::detailed\+\_\+timing = .false.\hspace{0.3cm}{\ttfamily [private]}} |
---|
249 | |
---|
250 | |
---|
251 | |
---|
252 | Definition at line 89 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
253 | |
---|
254 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a89140c250e34a903bc9aa546574988d6}\label{namespacemod__oasis__reprosum_a89140c250e34a903bc9aa546574988d6}} |
---|
255 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+recompute@{oasis\+\_\+reprosum\+\_\+recompute}} |
---|
256 | \index{oasis\+\_\+reprosum\+\_\+recompute@{oasis\+\_\+reprosum\+\_\+recompute}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
257 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+recompute}{oasis\_reprosum\_recompute}} |
---|
258 | {\footnotesize\ttfamily logical, public mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+recompute = .false.} |
---|
259 | |
---|
260 | |
---|
261 | |
---|
262 | Definition at line 73 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
263 | |
---|
264 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_a6a80f4226d35d0842617e6eb6c9406e1}\label{namespacemod__oasis__reprosum_a6a80f4226d35d0842617e6eb6c9406e1}} |
---|
265 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!oasis\+\_\+reprosum\+\_\+reldiffmax@{oasis\+\_\+reprosum\+\_\+reldiffmax}} |
---|
266 | \index{oasis\+\_\+reprosum\+\_\+reldiffmax@{oasis\+\_\+reprosum\+\_\+reldiffmax}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
267 | \subsubsection{\texorpdfstring{oasis\+\_\+reprosum\+\_\+reldiffmax}{oasis\_reprosum\_reldiffmax}} |
---|
268 | {\footnotesize\ttfamily real(r8), public mod\+\_\+oasis\+\_\+reprosum\+::oasis\+\_\+reprosum\+\_\+reldiffmax = -\/1.\+0\+\_\+r8} |
---|
269 | |
---|
270 | |
---|
271 | |
---|
272 | Definition at line 75 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
273 | |
---|
274 | \mbox{\Hypertarget{namespacemod__oasis__reprosum_aab06d0de9a82726d347ac52bb276355d}\label{namespacemod__oasis__reprosum_aab06d0de9a82726d347ac52bb276355d}} |
---|
275 | \index{mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}!repro\+\_\+sum\+\_\+use\+\_\+ddpdd@{repro\+\_\+sum\+\_\+use\+\_\+ddpdd}} |
---|
276 | \index{repro\+\_\+sum\+\_\+use\+\_\+ddpdd@{repro\+\_\+sum\+\_\+use\+\_\+ddpdd}!mod\+\_\+oasis\+\_\+reprosum@{mod\+\_\+oasis\+\_\+reprosum}} |
---|
277 | \subsubsection{\texorpdfstring{repro\+\_\+sum\+\_\+use\+\_\+ddpdd}{repro\_sum\_use\_ddpdd}} |
---|
278 | {\footnotesize\ttfamily logical mod\+\_\+oasis\+\_\+reprosum\+::repro\+\_\+sum\+\_\+use\+\_\+ddpdd = .false.\hspace{0.3cm}{\ttfamily [private]}} |
---|
279 | |
---|
280 | |
---|
281 | |
---|
282 | Definition at line 88 of file mod\+\_\+oasis\+\_\+reprosum.\+F90. |
---|
283 | |
---|