Getting Started with Femora

What is Femora?

Femora (Fast Efficient Meshing for OpenSees-based Resilience Analysis) is a specialized Python framework designed for creating and managing finite element meshes for structural and geotechnical engineering simulations using OpenSees. It addresses a critical gap in high-performance computing workflows for civil engineering applications.

Core Purpose and Philosophy

Femora provides a dual-mode workflow that serves both expert users working on supercomputers and modelers who prefer visual feedback:

  1. Headless Library Mode: Create complex meshes through pure Python scripting without requiring a graphical interface, making it suitable for supercomputing environments where GUI access is limited or unavailable.

  2. Qt-based GUI Mode: Access a graphical interface for interactive mesh creation and visualization while maintaining full separation between the core library and GUI components.

Key Features and Capabilities

Advanced Mesh Partitioning

Femora can partition different sections of a mesh using various algorithms (like kd-tree) and combine them in customizable ways to optimize for parallel processing.

Material and Element Management

The library includes comprehensive systems for defining materials and elements with proper validation and compatibility checking.

Domain Customization

Femora includes systems for regions, constraints, damping models, and boundary conditions specific to civil engineering needs.

Visualization Without GUI Dependency

Visualize meshes at any stage of creation without requiring the full GUI framework.

OpenSees Integration

Generate TCL script output specifically formatted for the OpenSees finite element software, which is widely used in civil engineering for soil-structure interaction analysis.

Component-Based Architecture

Femora uses a modular design with managers for materials, elements, regions, damping, assembly, and other aspects of mesh generation.

Exceptional Extensibility

Femora is designed with extensibility as a core principle, making it remarkably easy to expand and customize:

  • Registry-Based Component System: Uses registry patterns for materials, elements, and mesh parts that allow new components to be added with minimal code changes.

  • Manager Singletons: Singleton manager classes provide consistent access points that make extending functionality straightforward.

  • Well-Defined Abstract Base Classes: Clear abstract base classes with defined interfaces make it simple to implement new components.

  • Separation of Interface and Implementation: Clean separation between interface definitions and implementations allows developers to add new implementations without disturbing the core library.

  • Plugin-Ready Architecture: The component registration system enables new components to be added simply by creating new Python modules that register with the appropriate managers.

  • Consistent Validation Patterns: Each component type includes standardized validation methods that new component implementations can leverage.

  • Explicit Documentation: Extensive documentation makes it clear how to extend each component type with appropriate examples and guidelines.

Target Users

Femora serves two primary user groups:

  1. Computational Researchers: Engineers and scientists who need to create complex meshes for supercomputer simulations without GUI tools.

  2. Structural/Geotechnical Modelers: Civil engineers who want to create and visualize models interactively before running simulations.

What Makes Femora Unique

What distinguishes Femora from other mesh generation tools is its specific focus on:

  • Civil Engineering Applications: Tailored for soil-structure interaction and other civil engineering simulations.

  • Dual-Mode Operation: Functions equally well in scripting-only or GUI environments.

  • Partitioning Control: Gives users fine-grained control over how the mesh is partitioned for parallel computing.

  • OpenSees Integration: Seamless output to OpenSees TCL format for immediate use in simulations.

  • Extensibility First: Designed from the ground up to be extended with new elements, materials, and analysis components.

Femora fills an important niche for OpenSees users who need to create complex models for high-performance computing environments while maintaining the ability to visualize and verify their models throughout the creation process.