Class Diagram for Existing D-FAST Bank Erosion Code#
Overview#
This document provides a class diagram and detailed description of the current architecture of the D-FAST Bank Erosion software. The diagram illustrates the relationships between classes, key methods, and data flow across all modules.
Class Diagram#
for detailed class diagram Detailed class diagram
Class Descriptions#
Main Classes#
Erosion#
- Responsibility: Handles the calculation of bank erosion based on hydrodynamic data and detected bank lines
- Key Methods:
run()
: Executes the complete erosion analysis workflowcompute_erosion_per_level()
: Computes erosion for a specific discharge levelcalculate_fairway_bank_line_distance()
: Calculates the distance between bank lines and fairway- Dependencies: ConfigFile, ErosionRiverData, BankData, FairwayData, ErosionInputs, ErosionResults, DischargeLevels, WaterLevelData, MeshData
BankLines#
- Responsibility: Handles the detection of bank lines from hydrodynamic simulation results
- Key Methods:
detect()
: Executes the bank line detection workflowdetect_bank_lines()
: Detects bank lines from simulation datamask()
: Masks bank lines with bank areassave()
: Saves bank lines to output files- Dependencies: ConfigFile, BankLinesRiverData, SearchLines
ConfigFile#
- Responsibility: Handles configuration file parsing and management
- Key Methods:
read()
: Reads a configuration filewrite()
: Writes a configuration fileget_parameter()
: Gets a parameter from the configurationget_river_center_line()
: Gets the river center line from the configuration- Dependencies: None
Data Models - Bank Erosion#
BaseBank#
- Responsibility: Generic base class for representing paired bank data (left and right banks)
- Key Properties:
left
: Left bank data (generic type)right
: Right bank data (generic type)id
: Optional identifier- Key Methods:
get_bank()
: Gets bank data for a specific bank index (0 for left, 1 for right)from_column_arrays()
: Creates a BaseBank instance from column arrays__iter__()
: Allows iteration over banks- Dependencies: None
ErosionRiverData#
- Responsibility: Represents river data for erosion calculations
- Key Methods:
simulation_data()
: Gets simulation data for erosion calculations- Dependencies: BaseRiverData, ConfigFile
ErosionSimulationData#
- Responsibility: Represents simulation data for erosion calculations
- Key Methods:
compute_mesh_topology()
: Computes mesh topologycalculate_bank_velocity()
: Calculates velocity at bankcalculate_bank_height()
: Calculates height at bank- Dependencies: BaseSimulationData, SingleBank
BankData#
- Responsibility: Represents bank data for erosion calculations
- Key Properties:
left
: Left bank (SingleBank)right
: Right bank (SingleBank)id
: Optional identifier- Inheritance: Inherits from BaseBank[SingleBank]
- Dependencies: BaseBank, SingleBank
SingleBank#
- Responsibility: Represents a single bank for erosion calculations
- Key Properties:
bank_line
: Bank line geometryface_indices
: Indices of faces adjacent to the bankchainage
: Chainage along the bankis_right
: Whether the bank is a right bank- Dependencies: None
FairwayData#
- Responsibility: Represents fairway data for erosion calculations
- Key Properties:
fairway_axis
: Fairway axis geometryfairway_polygon
: Fairway polygon geometryfairway_initial_water_levels
: Initial water levels in the fairwayfairway_velocities
: Velocities in the fairwayfairway_chezy_coefficients
: Chezy coefficients in the fairway- Dependencies: None
ErosionInputs#
- Responsibility: Represents inputs for erosion calculations
- Key Properties:
left
: Left bank erosion inputs (SingleErosion)right
: Right bank erosion inputs (SingleErosion)id
: Optional identifiershipping_data
: Shipping data for erosion calculations- Inheritance: Inherits from BaseBank[SingleErosion]
- Dependencies: BaseBank, SingleErosion
SingleErosion#
- Responsibility: Represents erosion inputs for a single bank
- Key Properties:
wave_fairway_distance_0
: Distance from fairway for wave calculationswave_fairway_distance_1
: Distance from fairway for wave calculationsbank_protection_level
: Bank protection leveltauc
: Critical shear stressbank_type
: Bank type- Dependencies: None
ErosionResults#
- Responsibility: Represents results of erosion calculations
- Key Properties:
- Various lists and arrays storing erosion-related data
- Dependencies: None
Debugger#
- Responsibility: Handles debugging and output of bank erosion calculations
- Key Methods:
last_discharge_level()
: Writes the last discharge level to a shapefile and CSV filemiddle_levels()
: Writes the middle levels to a shapefile and CSV file_write_data()
: Writes data to a shapefile and CSV file- Dependencies: None
BankLinesProcessor#
- Responsibility: Processes bank lines and intersects them with a mesh
- Key Methods:
intersect_with_mesh()
: Intersects bank lines with a mesh and returns bank data- Dependencies: ErosionRiverData, LineGeometry
ErosionCalculator#
- Responsibility: Performs erosion calculations for bank erosion
- Key Methods:
comp_erosion_eq()
: Computes the equilibrium bank erosion distance and volumecompute_bank_erosion_dynamics()
: Computes the bank erosion during a specific discharge levelcomp_hw_ship_at_bank()
: Computes wave heights at bank due to passing ships- Dependencies: None
WaterLevelData#
- Responsibility: Represents water level data for erosion calculations
- Key Properties:
water_levels
: List of water levelshfw_max
: Maximum water level- Dependencies: None
MeshData#
- Responsibility: Represents mesh data for erosion calculations
- Key Properties:
- Various arrays storing mesh-related data
- Dependencies: None
DischargeLevels#
- Responsibility: Represents discharge levels for erosion calculations
- Key Properties:
levels
: List of SingleDischargeLevel objects- Dependencies: SingleDischargeLevel
SingleDischargeLevel#
- Responsibility: Represents a calculation level for erosion calculations
- Key Properties:
left
: Left bank calculation parameters (SingleCalculation)right
: Right bank calculation parameters (SingleCalculation)id
: Optional identifier- Inheritance: Inherits from BaseBank[SingleCalculation]
- Dependencies: BaseBank, SingleCalculation
SingleCalculation#
- Responsibility: Represents parameters for discharge calculations
- Key Properties:
- Various arrays storing discharge-related data
- Dependencies: None
SingleLevelParameters#
- Responsibility: Represents parameters for discharge levels
- Key Properties:
left
: Left bank parameters (SingleParameters)right
: Right bank parameters (SingleParameters)id
: Optional identifier- Inheritance: Inherits from BaseBank[SingleParameters]
- Dependencies: BaseBank, SingleParameters
SingleParameters#
- Responsibility: Represents parameters for each bank
- Key Properties:
discharge
: Discharge valueprobability
: Probability of dischargeship_parameters
: Ship parameters- Dependencies: None
Data Models - Bank Lines#
BankLinesRiverData#
- Responsibility: Represents river data for bank line detection
- Key Methods:
search_lines()
: Gets search lines for bank line detectionsimulation_data()
: Gets simulation data for bank line detection- Dependencies: BaseRiverData, ConfigFile, SearchLines
SearchLines#
- Responsibility: Represents search lines for bank line detection
- Key Methods:
mask()
: Masks search lines with river center lineto_polygons()
: Converts search lines to polygons- Dependencies: LineGeometry
Data Models - IO#
LineGeometry#
- Responsibility: Represents line geometry
- Key Methods:
mask()
: Masks line geometryintersect_with_line()
: Intersects line geometry with another line- Dependencies: None
BaseSimulationData#
- Responsibility: Base class for simulation data
- Key Methods:
read()
: Reads simulation data from a fileclip()
: Clips simulation data to a region- Dependencies: None
BaseRiverData#
- Responsibility: Base class for river data
- Key Methods:
get_erosion_sim_data()
: Gets simulation data for erosion calculations- Dependencies: ConfigFile, LineGeometry
Data Flow#
- The user initializes the
Erosion
orBankLines
class with aConfigFile
- The
ConfigFile
is used to read configuration parameters - For bank line detection:
BankLines
usesBankLinesRiverData
to get river dataBankLinesRiverData
usesSearchLines
to get search linesBankLines
detects bank lines and saves them to output files- For erosion calculation:
Erosion
usesErosionRiverData
to get river dataErosion
processes the river axis and gets fairway dataErosion
prepares initial conditions and processes discharge levelsErosion
computes erosion per level and post-processes resultsErosion
writes output files and generates plots
This architecture provides a clear separation of concerns, with each class having a specific responsibility. The data flows through the system in a logical manner, with each step building on the previous one.