%File: ~/OOP/modelbuilder/ModelBuilder.tex
%What: "@(#) ModelBuilder.tex, revA"

\noindent {\bf Files}   \\
\indent \#include $<\tilde{ }$/modelbuilder/ModelBuilder.h$>$  \\

\noindent {\bf Class Declaration}  \\
\indent class ModelBuilder;  \\

\noindent {\bf Class Hierarchy} \\
\indent {\bf ModelBuilder} \\

\noindent {\bf Description} \\ 
\indent The ModelBuilder class is an abstract base class. A subclass
of ModelBuilder is a class which creates the finite element
discretization of a structure: that is it discretizes the structure to
be modeled into Elements, Nodes, Constraints, etc. and adds these
components to the Domain.  \\

\noindent {\bf Class Interface} \\
\indent // Constructor \\ 
\indent {\em ModelBuilder(theDomain \&theDomain);}\\ \\
\indent // Destructor \\ 
\indent {\em virtual $\tilde{ }$ModelBuilder();}\\  \\
\indent // Public Methods \\ 
\indent {\em virtual buildFE\_Model(void) = 0;} \\ \\
\indent // Protected Methods \\
\indent {\em  Domain *getDomainPtr(void) const;} \\

\noindent {\bf Constructor} \\ 
\indent {\em ModelBuilder(theDomain \&theDomain);}\\ 
All models are associated with a single domain, this constructor
sets up the link between the model and the domain, setting its link
to the Domain object {\em theDomain}. \\

\noindent {\bf Destructor} \\
\indent {\em virtual~ $\tilde{}$ModelBuilder();}\\ 
Does nothing. \\

\noindent {\bf Public Methods} \\
\indent {\em virtual buildFE\_Model(void) = 0;} \\
The ModelBuilder will construct the Element, Node, Load and Constraint
objects and add them to the Domain object associated with the ModelBuilder. \\

\noindent {\bf Protected Methods} \\
\indent {\em  Domain *getDomainPtr(void) const;} \\
Returns a pointer to the Domain object passed in the constructor. This
method can be used in the subclasses to get a pointer the Domain object
to which to add the domain components. \\


