<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Reads data from a csv file into an <code>std::vector</code> and writes the contents of an <code>std::vector</code> to a file. <ahref="classfea_1_1_c_s_v_parser.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">An element of the mesh. Contains the indices of the two <code><aclass="el"href="namespacefea.html#acea7372904bb1c5f0570e9a53cf6fba9"title="A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. ">fea::Node</a></code>'s that form the element as well as the properties of the element given by the <code><aclass="el"href="structfea_1_1_props.html"title="The set of properties associated with an element. ">fea::Props</a></code> struct. <ahref="structfea_1_1_elem.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A nodal force to enforce. <ahref="structfea_1_1_force.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Assembles the global stiffness matrix. <ahref="classfea_1_1_global_stiff_assembler.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Contains a node list, element list, and the properties of each element. <ahref="structfea_1_1_job.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Provides a method for customizing the finite element analysis. <ahref="structfea_1_1_options.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">The set of properties associated with an element. <ahref="structfea_1_1_props.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Contains the results of an analysis after calling <code><aclass="el"href="namespacefea.html#aca9724c7cab58b0671b29f3f4318e599"title="Solves the finite element analysis defined by the input Job, boundary conditions, and prescribed noda...">fea::solve</a></code>. <ahref="structfea_1_1_summary.html#details">More...</a><br/></td></tr>
<trclass="memdesc:"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Places linear springs between all degrees of freedom of 2 nodes. <ahref="structfea_1_1_tie.html#details">More...</a><br/></td></tr>
<trclass="memdesc:acea7372904bb1c5f0570e9a53cf6fba9"><tdclass="mdescLeft"> </td><tdclass="mdescRight">A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. <ahref="#acea7372904bb1c5f0570e9a53cf6fba9">More...</a><br/></td></tr>
}<trclass="memdesc:aeaca75d33e81b79c9282f3e69a238d72"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Convenience enumerator for specifying the active degree of freedom in a constraint. <ahref="namespacefea.html#aeaca75d33e81b79c9282f3e69a238d72">More...</a><br/></td></tr>
<trclass="memdesc:a22c94233f560b36c5e782d6e73cebae3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Calculates the distance between 2 nodes. <ahref="#a22c94233f560b36c5e782d6e73cebae3">More...</a><br/></td></tr>
<trclass="memitem:a9a7fec579a34d0fed8339237f2cfe994"><tdclass="memItemLeft"align="right"valign="top">void </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="namespacefea.html#a9a7fec579a34d0fed8339237f2cfe994">loadBCs</a> (<aclass="el"href="namespacefea.html#ab9a3b4734f69bd4a2a883d7b9bab5662">SparseMat</a>&Kg, <aclass="el"href="namespacefea.html#a0cab5016018de58ed55a874e7fee68ed">ForceVector</a>&force_vec, const std::vector<<aclass="el"href="structfea_1_1_b_c.html">BC</a>>&BCs, unsigned int num_nodes)</td></tr>
<trclass="memdesc:a9a7fec579a34d0fed8339237f2cfe994"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Loads the boundary conditions into the global stiffness matrix and force vector. <ahref="#a9a7fec579a34d0fed8339237f2cfe994">More...</a><br/></td></tr>
<trclass="memdesc:adb99d60a0e4eb10e55a7c52044efb6e3"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Loads any tie constraints into the set of triplets that will become the global stiffness matrix. <ahref="#adb99d60a0e4eb10e55a7c52044efb6e3">More...</a><br/></td></tr>
<trclass="memdesc:ad101dfa486fc4d0bd848129ff2453139"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Computes the forces in the tie elements based on the nodal displacements of the FE analysis and the spring constants provided in <code>ties</code>. <ahref="#ad101dfa486fc4d0bd848129ff2453139">More...</a><br/></td></tr>
<trclass="memdesc:af9e37d32f38ace35944f1e63f4a447fa"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Loads the prescribed forces into the force vector. <ahref="#af9e37d32f38ace35944f1e63f4a447fa">More...</a><br/></td></tr>
<trclass="memdesc:aca9724c7cab58b0671b29f3f4318e599"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Solves the finite element analysis defined by the input <aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">Job</a>, boundary conditions, and prescribed nodal forces. <ahref="#aca9724c7cab58b0671b29f3f4318e599">More...</a><br/></td></tr>
<p>Vector that stores the nodal forces, i.e. the variable \([F]\) in \([K][Q]=[F]\), where \([K]\) is the global stiffness matrix and \([Q]\) contains the nodal displacements </p>
<p>A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. </p>
<p>See the Eigen documentation on the Vector3d class for more options of what can be done with <code>Nodes</code>. <br/>
Examples of constucting a <code>Node</code> at \((x, y, z)=(0,1,2)\): </p><divclass="fragment"><divclass="line"><spanclass="comment">// specify values on constuction</span></div>
<p>Computes the forces in the tie elements based on the nodal displacements of the FE analysis and the spring constants provided in <code>ties</code>. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ties</td><td><code>std::vector<<aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">Tie</a>></code>. Vector of <code><aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">fea::Tie</a></code>'s to applied to the current analysis. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">nodal_displacements</td><td><code>std::vector < std::vector < double >></code>. The resultant nodal displacements of the analysis. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd><aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">Tie</a> forces. <code>std::vector < std::vector < double >></code></dd></dl>
<areashape="rect"id="node2"href="namespacefea.html#aca9724c7cab58b0671b29f3f4318e599"title="Solves the finite element analysis defined by the input Job, boundary conditions, and prescribed noda..."alt=""coords="219,31,301,57"/>
<p>Parses the file indicated by the "bcs" key in <code>config_doc</code> into a vector of <code><aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">fea::BC</a></code>'s.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file name containing the boundary conditions. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Boundary conditions. <code>std::vector<<aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">BC</a>></code>. </dd></dl>
<p>Parses the files indicated by the "elems" and "props" keys in <code>config_doc</code> into a vector of <code><aclass="el"href="structfea_1_1_elem.html"title="An element of the mesh. Contains the indices of the two fea::Node's that form the element as well as ...">fea::Elem</a></code>'s.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file names of the csv files that contain the node number designations for each element and elemental properties. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Elements. <code>std::vector<<aclass="el"href="structfea_1_1_elem.html"title="An element of the mesh. Contains the indices of the two fea::Node's that form the element as well as ...">Elem</a>></code>. </dd></dl>
<p>Parses the file indicated by the "forces" key in <code>config_doc</code> into a vector of <code>fea::Forces</code>'s.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file name containing the prescribed forces. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Boundary conditions. <code>std::vector<<aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">BC</a>></code>. </dd></dl>
<p>Creates vectors of <code><aclass="el"href="namespacefea.html#acea7372904bb1c5f0570e9a53cf6fba9"title="A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. ">fea::Node</a></code>'s and <code><aclass="el"href="structfea_1_1_elem.html"title="An element of the mesh. Contains the indices of the two fea::Node's that form the element as well as ...">fea::Elem</a></code>'s from the files specified in <code>config_doc</code>. A <code><aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">fea::Job</a></code> is created from the node and element vectors and returned.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file name containing the nodes, elements, and properties. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd><aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">Job</a>. <code><aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">fea::Job</a></code>. </dd></dl>
<p>Parses the file indicated by the "nodes" key in <code>config_doc</code> into a vector of <code><aclass="el"href="namespacefea.html#acea7372904bb1c5f0570e9a53cf6fba9"title="A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. ">fea::Node</a></code>'s.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file name containing the nodal coordinates. </td></tr>
<p>Creates an <code><aclass="el"href="structfea_1_1_options.html"title="Provides a method for customizing the finite element analysis. ">fea::Options</a></code> object from the configuration document. Any options provided will override the defaults.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document containing the configuration for the current analysis. This function will look for the "options" member in <code>config_document</code> for a json object holding the user-supplied options. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Analysis options <code><aclass="el"href="structfea_1_1_options.html"title="Provides a method for customizing the finite element analysis. ">fea::Options</a></code>. </dd></dl>
<p>Parses the file indicated by the "ties" key in <code>config_doc</code> into a vector of <code><aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">fea::Tie</a></code>'s.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_doc</td><td><code>rapidjson::Document</code>. Document storing the file name containing the prescribed forces. </td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd>Prescribed forces. <code>std::vector<<aclass="el"href="structfea_1_1_force.html"title="A nodal force to enforce. ">Force</a>></code>. </dd></dl>
<p>Loads the boundary conditions into the global stiffness matrix and force vector. </p>
<p>Boundary conditions are enforced via Lagrange multipliers. The reaction force due to imposing the boundary condition will be appended directly onto the returned nodal displacements in the order the boundary conditions were specified.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir"></td><tdclass="paramname">Kg</td><td><code>fea::GlobalStiffnessMatrix</code>. Coefficients are modified in place to reflect Lagrange multipliers. Assumes <code>Kg</code> has the correct dimensions. </td></tr>
<tr><tdclass="paramdir"></td><tdclass="paramname">force_vec</td><td><code><aclass="el"href="namespacefea.html#a0cab5016018de58ed55a874e7fee68ed">fea::ForceVector</a></code>. Right hand side of the \([K][Q]=[F]\) equation of the FE analysis. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">BCs</td><td><code>std::vector<<aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">fea::BC</a>></code>. Vector of <code><aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">BC</a></code>'s to apply to the current analysis. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">num_nodes</td><td><code>unsigned int</code>. The number of nodes in the current job being analyzed. Used to calculate the position to insert border coefficients associated with enforcing boundary conditions via Langrange multipliers. </td></tr>
<areashape="rect"id="node2"href="namespacefea.html#aca9724c7cab58b0671b29f3f4318e599"title="Solves the finite element analysis defined by the input Job, boundary conditions, and prescribed noda..."alt=""coords="156,31,239,57"/>
<p>Loads the prescribed forces into the force vector. </p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir"></td><tdclass="paramname">force_vec</td><td><code>ForceVector</code>. Right hand side of the \([K][Q]=[F]\) equation of the FE analysis. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">forces</td><td>std::vector<Force>. Vector of prescribed forces to apply to the current analysis. </td></tr>
<areashape="rect"id="node2"href="namespacefea.html#aca9724c7cab58b0671b29f3f4318e599"title="Solves the finite element analysis defined by the input Job, boundary conditions, and prescribed noda..."alt=""coords="172,31,255,57"/>
<p>Loads any tie constraints into the set of triplets that will become the global stiffness matrix. </p>
<p><aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">Tie</a> constraints are enforced via linear springs between the 2 specified nodes. The <code>lmult</code> member variable is used as the spring constant for displacement degrees of freedom, e.g. 0, 1, and 2. <code>rmult</code> is used for rotational degrees of freedom, e.g. 3, 4, and 5.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir"></td><tdclass="paramname">triplets</td><td><code>std::vector< Eigen::Triplet< double >></code>. A vector of triplets that store data in the form (i, j, value) that will be become the sparse global stiffness matrix. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ties</td><td><code>std::vector<<aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">fea::Tie</a>></code>. Vector of <code><aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">Tie</a></code>'s to apply to the current analysis. </td></tr>
<areashape="rect"id="node2"href="classfea_1_1_global_stiff_assembler.html#ae07a113c97d0aa76a6391b4697961875"title="Assembles the global stiffness matrix. "alt=""coords="157,5,333,47"/>
<p>Calculates the original Euclidean distance between 2 nodes in the x-y plane.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">n1</td><td><code><aclass="el"href="namespacefea.html#acea7372904bb1c5f0570e9a53cf6fba9"title="A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. ">fea::Node</a></code>. Nodal coordinates of first point. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">n2</td><td><code><aclass="el"href="namespacefea.html#acea7372904bb1c5f0570e9a53cf6fba9"title="A node that describes a mesh. Uses Eigen's predefined Vector class for added functionality. ">fea::Node</a></code>. Nodal coordinates of second point.</td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd><b>Distance</b><code>double</code>. The distance between the nodes. </dd></dl>
<areashape="rect"id="node2"href="classfea_1_1_global_stiff_assembler.html#aad75afc9ef363da11c60a9d84f190701"title="Updates the elemental stiffness matrix for the ith element. "alt=""coords="133,5,309,47"/>
<areashape="rect"id="node3"href="classfea_1_1_global_stiff_assembler.html#ae07a113c97d0aa76a6391b4697961875"title="Assembles the global stiffness matrix. "alt=""coords="357,5,533,47"/>
<p>Parses the file into a 2D vector. Each sub-vector is a line from the input file.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">ins</td><td><code>std::istream</code>. The file where data is read from. Each line will become a vector in <code>data</code></td></tr>
<tr><tdclass="paramname">data</td><td><code>std::vector< std::vector< T >></code>. 2D Vector where the data is placed. </td></tr>
<p>Opens the specified json file and parses the data into a rapidjson::Document and returns the result. The config document should have key's "nodes", "elems", and "props". Optionally, there can be keys "bcs" for boundary conditions, "forces" for prescribed forces, and "ties" for and tie constraints between nodes.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">config_filename</td><td><code>std::string</code>. The location of the configuration json file. </td></tr>
<p>Solves the finite element analysis defined by the input <aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">Job</a>, boundary conditions, and prescribed nodal forces. </p>
<p>Solves \([K][Q]=[F]\) for \([Q]\), where \([K]\) is the global stiffness matrix, \([Q]\) contains the nodal displacements, and \([Q]\) contains the nodal forces.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">job</td><td><code><aclass="el"href="structfea_1_1_job.html"title="Contains a node list, element list, and the properties of each element. ">fea::Job</a></code>. Contains the node, element, and property lists for the mesh. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">BCs</td><td><code>std::vector<<aclass="el"href="structfea_1_1_b_c.html"title="A boundary condition to enforce. ">fea::BC</a>></code>. Vector of boundary conditions to apply to the nodal degrees of freedom contained in the job. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">forces</td><td><code>std::vector<<aclass="el"href="structfea_1_1_force.html"title="A nodal force to enforce. ">fea::Force</a>></code>. Vector of prescribed forces to apply to the nodal degrees of freedom contained in the job. </td></tr>
<tr><tdclass="paramdir">[in]</td><tdclass="paramname">ties</td><td><code>std::vector<<aclass="el"href="structfea_1_1_tie.html"title="Places linear springs between all degrees of freedom of 2 nodes. ">fea::Tie</a>></code>. Vector of ties that apply to attach springs of specified stiffness to all nodal degrees of freedom between each set of nodes indicated.</td></tr>
</table>
</dd>
</dl>
<dlclass="section return"><dt>Returns</dt><dd><b><aclass="el"href="structfea_1_1_summary.html"title="Contains the results of an analysis after calling fea::solve. ">Summary</a></b><code><aclass="el"href="structfea_1_1_summary.html"title="Contains the results of an analysis after calling fea::solve. ">fea::Summary</a></code>. <aclass="el"href="structfea_1_1_summary.html"title="Contains the results of an analysis after calling fea::solve. ">Summary</a> containing the results of the analysis. </dd></dl>
<areashape="rect"id="node2"href="namespacefea.html#a9a7fec579a34d0fed8339237f2cfe994"title="Loads the boundary conditions into the global stiffness matrix and force vector. "alt=""coords="173,5,276,32"/>
<areashape="rect"id="node3"href="namespacefea.html#af9e37d32f38ace35944f1e63f4a447fa"title="Loads the prescribed forces into the force vector. "alt=""coords="165,56,284,83"/>
<areashape="rect"id="node4"href="namespacefea.html#ad101dfa486fc4d0bd848129ff2453139"title="Computes the forces in the tie elements based on the nodal displacements of the FE analysis and the s..."alt=""coords="142,107,307,133"/>
<areashape="rect"id="node6"href="structfea_1_1_summary.html#ad1880ea430b8b0ed28e09cefd7880a7a"title="Returns a message containing the results of the analysis. "alt=""coords="136,208,313,235"/>