\hypertarget{interfacemom__checksums_1_1is__nan}{}\section{mom\+\_\+checksums\+::is\+\_\+nan Interface Reference}
\label{interfacemom__checksums_1_1is__nan}\index{mom\_checksums::is\_nan@{mom\_checksums::is\_nan}}


\subsection{Detailed Description}
Returns .true. if any element of x is a NaN, and .false. otherwise. 

Definition at line 74 of file M\+O\+M\+\_\+checksums.\+F90.

\subsection*{Private functions}
\begin{DoxyCompactItemize}
\item 
logical function \mbox{\hyperlink{interfacemom__checksums_1_1is__nan_a9ce3d8ba0e8476942876af52a7e2f2bc}{is\+\_\+nan\+\_\+0d}} (x)
\begin{DoxyCompactList}\small\item\em This function returns .true. if x is a NaN, and .false. otherwise. \end{DoxyCompactList}\item 
logical function \mbox{\hyperlink{interfacemom__checksums_1_1is__nan_aec478dcdd63b568fc33409041a904d72}{is\+\_\+nan\+\_\+1d}} (x, skip\+\_\+mpp)
\begin{DoxyCompactList}\small\item\em Returns .true. if any element of x is a NaN, and .false. otherwise. \end{DoxyCompactList}\item 
logical function \mbox{\hyperlink{interfacemom__checksums_1_1is__nan_a0d3bfdf42f1e2aaf931546ebe0976096}{is\+\_\+nan\+\_\+2d}} (x)
\begin{DoxyCompactList}\small\item\em Returns .true. if any element of x is a NaN, and .false. otherwise. \end{DoxyCompactList}\item 
logical function \mbox{\hyperlink{interfacemom__checksums_1_1is__nan_a6db59f0a2ec4d8cc8dfaa969a5c84be3}{is\+\_\+nan\+\_\+3d}} (x)
\begin{DoxyCompactList}\small\item\em Returns .true. if any element of x is a NaN, and .false. otherwise. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
Returns .true. if any element of x is a NaN, and .false. otherwise. 

Definition at line 74 of file M\+O\+M\+\_\+checksums.\+F90.



\subsection{Functions and subroutines}
\mbox{\Hypertarget{interfacemom__checksums_1_1is__nan_a9ce3d8ba0e8476942876af52a7e2f2bc}\label{interfacemom__checksums_1_1is__nan_a9ce3d8ba0e8476942876af52a7e2f2bc}} 
\index{mom\_checksums::is\_nan@{mom\_checksums::is\_nan}!is\_nan\_0d@{is\_nan\_0d}}
\index{is\_nan\_0d@{is\_nan\_0d}!mom\_checksums::is\_nan@{mom\_checksums::is\_nan}}
\subsubsection{\texorpdfstring{is\_nan\_0d()}{is\_nan\_0d()}}
{\footnotesize\ttfamily logical function mom\+\_\+checksums\+::is\+\_\+nan\+::is\+\_\+nan\+\_\+0d (\begin{DoxyParamCaption}\item[{real, intent(in)}]{x }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



This function returns .true. if x is a NaN, and .false. otherwise. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em x} & The value to be checked for Na\+Ns. \\
\hline
\end{DoxyParams}


Definition at line 2002 of file M\+O\+M\+\_\+checksums.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{2002 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{intent(in)} :: x\textcolor{comment}{ !< The value to be checked for NaNs.}}
\DoxyCodeLine{2003   \textcolor{keywordtype}{logical} :: is\_NaN\_0d}
\DoxyCodeLine{2004 }
\DoxyCodeLine{2005  \textcolor{comment}{!is\_NaN\_0d = (((x < 0.0) .and. (x >= 0.0)) .or. \&}}
\DoxyCodeLine{2006  \textcolor{comment}{!          (.not.(x < 0.0) .and. .not.(x >= 0.0)))}}
\DoxyCodeLine{2007   \textcolor{keywordflow}{if} (((x < 0.0) .and. (x >= 0.0)) .or. \&}
\DoxyCodeLine{2008             (.not.(x < 0.0) .and. .not.(x >= 0.0))) \textcolor{keywordflow}{then}}
\DoxyCodeLine{2009     is\_nan\_0d = .true.}
\DoxyCodeLine{2010   \textcolor{keywordflow}{else}}
\DoxyCodeLine{2011     is\_nan\_0d = .false.}
\DoxyCodeLine{2012 \textcolor{keywordflow}{  endif}}
\DoxyCodeLine{2013 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__checksums_1_1is__nan_aec478dcdd63b568fc33409041a904d72}\label{interfacemom__checksums_1_1is__nan_aec478dcdd63b568fc33409041a904d72}} 
\index{mom\_checksums::is\_nan@{mom\_checksums::is\_nan}!is\_nan\_1d@{is\_nan\_1d}}
\index{is\_nan\_1d@{is\_nan\_1d}!mom\_checksums::is\_nan@{mom\_checksums::is\_nan}}
\subsubsection{\texorpdfstring{is\_nan\_1d()}{is\_nan\_1d()}}
{\footnotesize\ttfamily logical function mom\+\_\+checksums\+::is\+\_\+nan\+::is\+\_\+nan\+\_\+1d (\begin{DoxyParamCaption}\item[{real, dimension(\+:), intent(in)}]{x,  }\item[{logical, intent(in), optional}]{skip\+\_\+mpp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Returns .true. if any element of x is a NaN, and .false. otherwise. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em x} & The array to be checked for Na\+Ns. \\
\hline
\mbox{\texttt{ in}}  & {\em skip\+\_\+mpp} & If true, only check this array only on the local PE (default false). \\
\hline
\end{DoxyParams}


Definition at line 2018 of file M\+O\+M\+\_\+checksums.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{2018 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:)}, \textcolor{keywordtype}{intent(in)} :: x\textcolor{comment}{ !< The array to be checked for NaNs.}}
\DoxyCodeLine{2019   \textcolor{keywordtype}{logical},  \textcolor{keywordtype}{optional}, \textcolor{keywordtype}{intent(in)} :: skip\_mpp\textcolor{comment}{  !< If true, only check this array only}}
\DoxyCodeLine{2020 \textcolor{comment}{                                              !! on the local PE (default false).}}
\DoxyCodeLine{2021   \textcolor{keywordtype}{logical} :: is\_NaN\_1d}
\DoxyCodeLine{2022 }
\DoxyCodeLine{2023   \textcolor{keywordtype}{integer} :: i, n}
\DoxyCodeLine{2024   \textcolor{keywordtype}{logical} :: call\_mpp}
\DoxyCodeLine{2025 }
\DoxyCodeLine{2026   n = 0}
\DoxyCodeLine{2027   \textcolor{keywordflow}{do} i = lbound(x,1), ubound(x,1)}
\DoxyCodeLine{2028     \textcolor{keywordflow}{if} (is\_nan\_0d(x(i))) n = n + 1}
\DoxyCodeLine{2029 \textcolor{keywordflow}{  enddo}}
\DoxyCodeLine{2030   call\_mpp = .true.}
\DoxyCodeLine{2031   \textcolor{keywordflow}{if} (\textcolor{keyword}{present}(skip\_mpp)) call\_mpp = .not.skip\_mpp}
\DoxyCodeLine{2032 }
\DoxyCodeLine{2033   \textcolor{keywordflow}{if} (call\_mpp) \textcolor{keyword}{call }sum\_across\_pes(n)}
\DoxyCodeLine{2034   is\_nan\_1d = .false.}
\DoxyCodeLine{2035   \textcolor{keywordflow}{if} (n>0) is\_nan\_1d = .true.}
\DoxyCodeLine{2036 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__checksums_1_1is__nan_a0d3bfdf42f1e2aaf931546ebe0976096}\label{interfacemom__checksums_1_1is__nan_a0d3bfdf42f1e2aaf931546ebe0976096}} 
\index{mom\_checksums::is\_nan@{mom\_checksums::is\_nan}!is\_nan\_2d@{is\_nan\_2d}}
\index{is\_nan\_2d@{is\_nan\_2d}!mom\_checksums::is\_nan@{mom\_checksums::is\_nan}}
\subsubsection{\texorpdfstring{is\_nan\_2d()}{is\_nan\_2d()}}
{\footnotesize\ttfamily logical function mom\+\_\+checksums\+::is\+\_\+nan\+::is\+\_\+nan\+\_\+2d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:), intent(in)}]{x }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Returns .true. if any element of x is a NaN, and .false. otherwise. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em x} & The array to be checked for Na\+Ns. \\
\hline
\end{DoxyParams}


Definition at line 2041 of file M\+O\+M\+\_\+checksums.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{2041 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:)}, \textcolor{keywordtype}{intent(in)} :: x\textcolor{comment}{ !< The array to be checked for NaNs.}}
\DoxyCodeLine{2042   \textcolor{keywordtype}{logical} :: is\_NaN\_2d}
\DoxyCodeLine{2043 }
\DoxyCodeLine{2044   \textcolor{keywordtype}{integer} :: i, j, n}
\DoxyCodeLine{2045 }
\DoxyCodeLine{2046   n = 0}
\DoxyCodeLine{2047   \textcolor{keywordflow}{do} j = lbound(x,2), ubound(x,2) ; \textcolor{keywordflow}{do} i = lbound(x,1), ubound(x,1)}
\DoxyCodeLine{2048     \textcolor{keywordflow}{if} (is\_nan\_0d(x(i,j))) n = n + 1}
\DoxyCodeLine{2049 \textcolor{keywordflow}{  enddo} ;\textcolor{keywordflow}{ enddo}}
\DoxyCodeLine{2050   \textcolor{keyword}{call }sum\_across\_pes(n)}
\DoxyCodeLine{2051   is\_nan\_2d = .false.}
\DoxyCodeLine{2052   \textcolor{keywordflow}{if} (n>0) is\_nan\_2d = .true.}
\DoxyCodeLine{2053 }

\end{DoxyCode}
\mbox{\Hypertarget{interfacemom__checksums_1_1is__nan_a6db59f0a2ec4d8cc8dfaa969a5c84be3}\label{interfacemom__checksums_1_1is__nan_a6db59f0a2ec4d8cc8dfaa969a5c84be3}} 
\index{mom\_checksums::is\_nan@{mom\_checksums::is\_nan}!is\_nan\_3d@{is\_nan\_3d}}
\index{is\_nan\_3d@{is\_nan\_3d}!mom\_checksums::is\_nan@{mom\_checksums::is\_nan}}
\subsubsection{\texorpdfstring{is\_nan\_3d()}{is\_nan\_3d()}}
{\footnotesize\ttfamily logical function mom\+\_\+checksums\+::is\+\_\+nan\+::is\+\_\+nan\+\_\+3d (\begin{DoxyParamCaption}\item[{real, dimension(\+:,\+:,\+:), intent(in)}]{x }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [private]}}



Returns .true. if any element of x is a NaN, and .false. otherwise. 


\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em x} & The array to be checked for Na\+Ns. \\
\hline
\end{DoxyParams}


Definition at line 2058 of file M\+O\+M\+\_\+checksums.\+F90.


\begin{DoxyCode}{0}
\DoxyCodeLine{2058 \textcolor{keywordtype}{  real}, \textcolor{keywordtype}{dimension(:,:,:)}, \textcolor{keywordtype}{intent(in)} :: x\textcolor{comment}{ !< The array to be checked for NaNs.}}
\DoxyCodeLine{2059   \textcolor{keywordtype}{logical} :: is\_NaN\_3d}
\DoxyCodeLine{2060 }
\DoxyCodeLine{2061   \textcolor{keywordtype}{integer} :: i, j, k, n}
\DoxyCodeLine{2062 }
\DoxyCodeLine{2063   n = 0}
\DoxyCodeLine{2064   \textcolor{keywordflow}{do} k = lbound(x,3), ubound(x,3)}
\DoxyCodeLine{2065     \textcolor{keywordflow}{do} j = lbound(x,2), ubound(x,2) ; \textcolor{keywordflow}{do} i = lbound(x,1), ubound(x,1)}
\DoxyCodeLine{2066       \textcolor{keywordflow}{if} (is\_nan\_0d(x(i,j,k))) n = n + 1}
\DoxyCodeLine{2067 \textcolor{keywordflow}{    enddo} ;\textcolor{keywordflow}{ enddo}}
\DoxyCodeLine{2068 \textcolor{keywordflow}{  enddo}}
\DoxyCodeLine{2069   \textcolor{keyword}{call }sum\_across\_pes(n)}
\DoxyCodeLine{2070   is\_nan\_3d = .false.}
\DoxyCodeLine{2071   \textcolor{keywordflow}{if} (n>0) is\_nan\_3d = .true.}
\DoxyCodeLine{2072 }

\end{DoxyCode}


The documentation for this interface was generated from the following file\+:\begin{DoxyCompactItemize}
\item 
/home/cermak/src/\+M\+O\+M6.\+devrob/src/framework/M\+O\+M\+\_\+checksums.\+F90\end{DoxyCompactItemize}
