Initial value problems

The finite element (FE) information and methods are defined in a Matlab object called NL_2D_FEM. An instance of the FE model (i.e. a new FE model) can be created using the default constructor: model = NL_2D_FEM. This creates an object model containing the data of a given problem and methods to perform the data analysis.

The attributes and methods of the NL_2D_FEM class (denoted model) are given below:

Attributes

  1. model.geom: The geometry of the model (key points and lines of the geometry)

    • model.geom.geom_node: List of number and coordinates of the key points of the geometry. Each line is of the type (point number, x coordinate, y coordinate).

    • model.geom.geom_element: List of lines in the geometry connecting the nodes. Each line is of the type (line number, point 1, point 2).

    • model.geom.discretisation: List of number of elements in each line (list of integers, with size the number of lines of the geometry).

  2. model.prop: Element cross-section and material properties (constant properties for all elements of the model)

    • model.prop.area: Area of the cross-section.

    • model.prop.inertia: Second moment of area of the cross-section.

    • model.prop.shear_coeff_k: Shear coefficient of the cross-section.

    • model.prop.density: Material density.

    • model.prop.young_mod: Material Young’s modulus.

    • model.prop.shear_mod: Material shear modulus.

    • model.prop.poisson: Material Poisson’s ratio.

    • model.prop.alpha: Material damping coefficient (linear Rayleigh damping).

  3. model.mesh: mesh of the FE model

    • model.mesh.nodes: List of number and coordinates of the nodes of the mesh. Each line is of the type (node number, x coordinate, y coordinate).

    • model.mesh.connect: Connectivity table, textit{i.e.} list of elements of the mesh. Each line is of the type (element number, node 1, node 2).

    • model.mesh.number_nodes: Total number of nodes in the mesh.

    • model.mesh.number_elements: Total number of elements in the mesh.

  4. model.visu: Visualization information for displaying results

    • model.visu.visu_node_list: List (cell array) of observed node and degree of freedom (dof).

      ** model.visu.visu_node_list{n} is a structure with two fields: a) mds.visu.visu_node_list{n}.node: Node number, and b) mds.visu.visu_node_list{n}.dof: List of dof number(s).

    • model.visu.dof: List of indices of observed dof in the assembled vector.

  5. model.boundary: Boundary conditions information

    • model.boundary.bc_node_list: List (cell array) of boundary condition nodes and dof.

      ** mds.boundary.bc_node_list{n} is a structure with two fields: a) mds.boundary.bc_node{n}.node: Node number, and b) mds.boundary.bc_node{n}.dof: List of dof number(s).

    • model.boundary.dof_list: List of indices of all dof in the assembled vector.

    • model.boundary.prescribed_dof: List of indices of all prescribed dof (displacement or rotation set to zero).

    • model.boundary.active_dof: List of indices of all non-boundary condition dof.

  6. model.loads: Loads (static and periodic, point force and distributed loads)

model.loads.static: Static loads.

  • model.loads.static.static_ponctual_force_node_list: List (cell array) of forced node(s) and dof.

    ** model.loads.static.static_ponctual_force_node_list{n} is a structure with three fields: a) model.loads.static.static_ponctual_force_node_list{n}.node: Node number, b) model.loads.static.static_ponctual_force_node_list{n}.dof: List of dof number(s), and c) model.loads.static.static_ponctual_force_node_list{n}.amplitude: List of force amplitudes (one amplitude for each dof in the previous field).

  • model.loads.static.static_distributed_force_direction: List of directions among (1) x-axis (2) y-axis or (3) moment.

  • model.loads.static.static_distributed_force_amplitude: List of amplitudes (linear force density).

model.loads.periodic: Periodic loads

  • model.loads.periodic.periodic_ponctual_force_node_list: List (cell array) of forced node(s) and dof.

    ** model.loads.periodic.periodic_ponctual_force_node_list{n} is a structure with three fields: a) model.loads.periodic.periodicponctual_force_node_list{n}.node: Node number, b) model.loads.periodic.periodic_ponctual_force_node_list{n}.dof: List of dof number(s), and c) model.loads.periodic.periodic_ponctual_force_node_list{n}.amplitude: List of force amplitudes (one amplitude for each dof in the previous field).

  • model.loads.periodic.periodic_distributed_force_direction: List of direction among (1) x-axis (2) y-axis or (3) moment.

  • model.loads.periodic.periodic_distributed_force_amplitude: List of amplitudes (linear force density).

  1. model.matrices: Assembled matrices of the model

    • model.matrices.mass: Mass matrix.

    • model.matrices.damping: Damping matrix.

    • model.matrices.stiffness_at_origin: Linear stiffness matrix (around undeformed (reference) configuration).

    • model.matrices.tangent_stiffness_at_qs: Unused.

  2. model.vectors: Assembled vectors of the model

    • model.vectors.null_vector: Assembled vector of dof full of zeros.

    • model.vectors.static_forces: Assembled vector of static forces.

    • model.vectors.periodic_forces: Assembled vector (matrix) of periodic forces (each row corresponds to a harmonic).

    • model.vectors.static_solution: Unused.

  3. model.solver: Solver information

    • model.solver.type: 'homemade': Default, solve NL system with a simple Newton method, or 'fsolve': solve NL system with Matlab fsolve from optimization toolbox).

    • model.solver.tol_res: Residual tolerance.

    • model.solver.tol_step: Step tolerance.

    • model.solver.n_iter_max: Number of maximum iterations for Newton’s method.

Methods

Initialization methods

  1. model.set_model_from_mds: Set the model attributes from a model data structure mds.

  2. model.set_geom: Set the geometry of the model (key points and lines of the geometry).

  3. model.set_prop: Set the cross-section and material properties.

  4. model.set_boundary: Set the boundary conditions.

  5. model.set_visu: Set the visualization information for displaying result.

  6. model.set_static_loads: Set the static loads (point force and distributed loads).

  7. model.set_periodic_loads: Set the periodic loads (point force and distributed loads).

  8. model.set_mesh: Set mesh from user inputs.

FEM methods