<commit_before>%&LaTeX
\documentclass[11pt]{article}


% keep the following two lines; makes very nice pdf files when using ps2pdf
\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}

\usepackage[normalem]{ulem}
\usepackage{fullpage}
\usepackage{setspace}
\usepackage{type1cm} % computer modern fonts
\usepackage{fancyhdr}
\usepackage{natbib}
%\usepackage[sort]{natbib}
%\usepackage{epsfig,psfrag,amsmath,amssymb,subfigure,setspace,rotating}
\usepackage{graphicx,psfrag,amsmath,amssymb,subfigure,setspace,rotating}

\usepackage{enumitem}

\usepackage[perpage,para,symbol]{footmisc}

\usepackage[usenames]{color}  % allows colored text

%\usepackage[sort]{natbib}
%\usepackage{epsfig,psfrag,amsmath,amssymb,subfigure}

% Mike's new commands \comm and \kill: uncomment if you want to use
\newcommand{\comm}[1]{\textcolor{blue}{\textit{#1}}}
\renewcommand{\kill}[1]{\textcolor{red}{\sout{#1}}}

\setlength{\parindent}{0.in}
\setlength{\parskip}{0.1in}

\newenvironment{itemize*}%
{\begin{itemize}[label=\textbullet,leftmargin=1pc,labelsep=*,noitemsep,
topsep=0.3pc,parsep=0.4pc]}
 {\end{itemize}}


%\pagestyle{fancy}
%\lhead{Wind-Turbine Structural Dynamics}
%\chead{}
%\rhead{2011 LDRD Proposal}




% \textheight=10.0in


\newcommand{\ie}{\textit{i.e.},~}
\newcommand{\eg}{\textit{e.g.},~}
\newcommand{\bs}{\boldsymbol}
\newcommand{\Ss}{\scriptscriptstyle}
\newcommand{\D}{\mathrm{d}}

\begin{document}  


\section*{Proposed geometric entities and data structures for code coupling
in FAST}

<NAME> \& <NAME>, Draft, 7 December 2011

\section{Motivation, goals, notes}

\begin{itemize}

\item This document is towards defining an appropriate coupling framework
for FAST and FAST-related programs.  

\item A motivation is to provide consistent guidance to developers to
provide interface data in a standardized manner that simplifies coupling
with other components.

\item Any framework must general enough to explore/incorporate various
algorithmic coupling approaches.

\end{itemize}

\section{Geometric entities for coupling}

We assume that the ``physical'' interface of a component is either one of
the following or some combination:

\begin{enumerate} 
\item a point  (\eg  connection of a mooring line)

\item a line (may be curved) (\eg a beam representation of a blade)

\item a surface (\eg pressure distribution over a blade)

\item a volume (\eg OpenFOAM finite volume)

\end{enumerate}

These four geometric entities can be well described in a standard
isoparametric mapping, which is closely related to the finite-element
method; see Figs. 1-3.  

The elements and numbering schemes shown in Figs. 1-3 define unique
interpolation.  The inclusion of midside nodes allows for unique
representation of curved line/surface with quadratic polynomials.  The
elements shown in Figs. 1-3 are standard elements, and are available in most
meshing software.


\textbf{Remark:} Using a finite-element representation of component
interfaces has nothing to do with the discretization used by the underlying
components.

Interface elements:

Point: point

Line (Fig. 1): two-node (linear) or three-node (quadratic) line elements

Surface (Fig. 2): 3-node \& 6-node triangles elements; 4-node \& 8-node 
quadrilateral elements

Volume (Fig. 3): 8-node \& 20-node hexahedral elements;  
6-node \& 15-node wedge-elements;
4-node \& 10-node tetrahedron elements

\textbf{Remarks:} Figs. 1-3 show a standard numbering scheme. Linear-element 
numbering is a subset of the quadratic-element numbering shown.  For
example, a linear quadrilateral is defined just by the corner nodes, 1--4.

\section{Coupling-interface data structures}

Here we assume we have a model where we know global position coordinates at
each "node" along with one or more number of degrees of freedom that are
known at each node.   In this description, we consider a single degree of
freedom, say displacement $u$.  Other degrees of freedom might by
temperature, rotation, local coordinates, etc.  Further, in addition to
scalar quantities, we could pass  vector, or tensor quantities.

\textbf{Approach:}\\
Assume that we have $N$ nodes on the boundary of the domain associated with
one code.  
Provide all boundary data as a $N$-dimensional real/double-precision arrays,
including global data positions and degrees of freedom (here $u$); 
\begin{verbatim}
integer N                    ! number of boundary nodes
double precision  xyz(N,3)   ! global xyz coordinates on bndry
double precision  u(N)       ! u response on bndry
\end{verbatim}

Create integer arrays that describe how the above boundary nodes are
connected, using elements described above:
\begin{verbatim}
integer Npoint               ! number of point elements
integer Ntri3                ! number of 3-node triangle elements
integer Ntri6                ! number of 6-node triangle elements
integer Nquad4               ! number of 4-node quadratic elements
integer Nquad8               ! number of 8-node quadratic elements
integer Ntet4                ! number of 4-node tet elements
integer Ntet10               ! number of 10-node tet elements
integer Nhex8                ! number of 8-node hex elements
integer Nhex10               ! number of 20-node hex elements
integer Nwedge6              ! number of 6-node wedge elements
integer Nwedge15             ! number of 15-node wedgeelements

integer element_point(Npoint)        ! point connectivity
integer element_line2(2,Ntri3)       ! 2-node line connectivity
integer element_line3(3,Ntri6)       ! 3-node line connectivity
integer element_quad4(4,Nquad4)      ! 4-node quad connectivity
integer element_quad8(8,Nquad8)      ! 8-node quad connectivity
integer element_tet4(4,Ntet4)        ! 3-node tet connectivity
integer element_tet10(10,Ntet10)     ! 10-node tet connectivity<commit_msg>Change quadratic to quadrilateral in interface comments. JM<commit_after>%&LaTeX
\documentclass[11pt]{article}


% keep the following two lines; makes very nice pdf files when using ps2pdf
\usepackage[T1]{fontenc}
\usepackage{ae,aecompl}

\usepackage[normalem]{ulem}
\usepackage{fullpage}
\usepackage{setspace}
\usepackage{type1cm} % computer modern fonts
\usepackage{fancyhdr}
\usepackage{natbib}
%\usepackage[sort]{natbib}
%\usepackage{epsfig,psfrag,amsmath,amssymb,subfigure,setspace,rotating}
\usepackage{graphicx,psfrag,amsmath,amssymb,subfigure,setspace,rotating}

\usepackage{enumitem}

\usepackage[perpage,para,symbol]{footmisc}

\usepackage[usenames]{color}  % allows colored text

%\usepackage[sort]{natbib}
%\usepackage{epsfig,psfrag,amsmath,amssymb,subfigure}

% Mike's new commands \comm and \kill: uncomment if you want to use
\newcommand{\comm}[1]{\textcolor{blue}{\textit{#1}}}
\renewcommand{\kill}[1]{\textcolor{red}{\sout{#1}}}

\setlength{\parindent}{0.in}
\setlength{\parskip}{0.1in}

\newenvironment{itemize*}%
{\begin{itemize}[label=\textbullet,leftmargin=1pc,labelsep=*,noitemsep,
topsep=0.3pc,parsep=0.4pc]}
 {\end{itemize}}


%\pagestyle{fancy}
%\lhead{Wind-Turbine Structural Dynamics}
%\chead{}
%\rhead{2011 LDRD Proposal}




% \textheight=10.0in


\newcommand{\ie}{\textit{i.e.},~}
\newcommand{\eg}{\textit{e.g.},~}
\newcommand{\bs}{\boldsymbol}
\newcommand{\Ss}{\scriptscriptstyle}
\newcommand{\D}{\mathrm{d}}

\begin{document}  


\section*{Proposed geometric entities and data structures for code coupling
in FAST}

<NAME> \& <NAME>, Draft, 7 December 2011

\section{Motivation, goals, notes}

\begin{itemize}

\item This document is towards defining an appropriate coupling framework
for FAST and FAST-related programs.  

\item A motivation is to provide consistent guidance to developers to
provide interface data in a standardized manner that simplifies coupling
with other components.

\item Any framework must general enough to explore/incorporate various
algorithmic coupling approaches.

\end{itemize}

\section{Geometric entities for coupling}

We assume that the ``physical'' interface of a component is either one of
the following or some combination:

\begin{enumerate} 
\item a point  (\eg  connection of a mooring line)

\item a line (may be curved) (\eg a beam representation of a blade)

\item a surface (\eg pressure distribution over a blade)

\item a volume (\eg OpenFOAM finite volume)

\end{enumerate}

These four geometric entities can be well described in a standard
isoparametric mapping, which is closely related to the finite-element
method; see Figs. 1-3.  

The elements and numbering schemes shown in Figs. 1-3 define unique
interpolation.  The inclusion of midside nodes allows for unique
representation of curved line/surface with quadratic polynomials.  The
elements shown in Figs. 1-3 are standard elements, and are available in most
meshing software.


\textbf{Remark:} Using a finite-element representation of component
interfaces has nothing to do with the discretization used by the underlying
components.

Interface elements:

Point: point

Line (Fig. 1): two-node (linear) or three-node (quadratic) line elements

Surface (Fig. 2): 3-node \& 6-node triangles elements; 4-node \& 8-node 
quadrilateral elements

Volume (Fig. 3): 8-node \& 20-node hexahedral elements;  
6-node \& 15-node wedge-elements;
4-node \& 10-node tetrahedron elements

\textbf{Remarks:} Figs. 1-3 show a standard numbering scheme. Linear-element 
numbering is a subset of the quadratic-element numbering shown.  For
example, a linear quadrilateral is defined just by the corner nodes, 1--4.

\section{Coupling-interface data structures}

Here we assume we have a model where we know global position coordinates at
each "node" along with one or more number of degrees of freedom that are
known at each node.   In this description, we consider a single degree of
freedom, say displacement $u$.  Other degrees of freedom might by
temperature, rotation, local coordinates, etc.  Further, in addition to
scalar quantities, we could pass  vector, or tensor quantities.

\textbf{Approach:}\\
Assume that we have $N$ nodes on the boundary of the domain associated with
one code.  
Provide all boundary data as a $N$-dimensional real/double-precision arrays,
including global data positions and degrees of freedom (here $u$); 
\begin{verbatim}
integer N                    ! number of boundary nodes
double precision  xyz(N,3)   ! global xyz coordinates on bndry
double precision  u(N)       ! u response on bndry
\end{verbatim}

Create integer arrays that describe how the above boundary nodes are
connected, using elements described above:
\begin{verbatim}
integer Npoint               ! number of point elements
integer Ntri3                ! number of 3-node triangle elements
integer Ntri6                ! number of 6-node triangle elements
integer Nquad4               ! number of 4-node quadrilateral elements
integer Nquad8               ! number of 8-node quadrilateral elements
integer Ntet4                ! number of 4-node tet elements
integer Ntet10               ! number of 10-node tet elements
integer Nhex8                ! number of 8-node hex elements
integer Nhex10               ! number of 20-node hex elements
integer Nwedge6              ! number of 6-node wedge elements
integer Nwedge15             ! number of 15-node wedgeelements

integer element_point(Npoint)        ! point connectivity
integer element_line2(2,Ntri3)       ! 2-node line connectivity
integer element_line3(3,Ntri6)       ! 3-node line connectivity
integer element_quad4(4,Nquad4)      ! 4-node quad connectivity
integer element_quad8(8,Nquad8)      ! 8-node quad connectivity
integer element_tet4(4,Ntet4)        ! 3-node tet connectivity
integer element_tet10(10,Ntet10)     ! 10-node tet connectivity
{'fraction_non_alphanumeric': 0.08785062811908449, 'fraction_numerical': 0.018929616245052485, 'mean_word_length': 4.168074699866607, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6319201', 'n_tokens_mistral': 3559, 'n_tokens_neox': 3242, 'n_words': 1248}