IO - Functions

Index

IO

PeriLab.IO._init_overlap_map_Method
_init_overlap_map_(size)

Initialize the overlap map.

Arguments

  • size::Int64: The number of ranks.

Returns

  • overlap_map::Dict{Int64,Dict{Int64,Dict{String,Vector{Int64}}}}: The overlap map.
source
PeriLab.IO.apply_bond_filtersMethod
apply_bond_filters(nlist::Vector{Vector{Int64}}, mesh::DataFrame, params::Dict, dof::Int64)

Apply the bond filters to the neighborhood list.

Arguments

  • nlist::Vector{Vector{Int64}}: The neighborhood list.
  • mesh::DataFrame: The mesh.
  • params::Dict: The parameters.
  • dof::Int64: The degrees of freedom.

Returns

  • nlist::Vector{Vector{Int64}}: The filtered neighborhood list.
  • nlist_filtered_ids::Vector{Vector{Int64}}: The filtered neighborhood list.
source
PeriLab.IO.area_of_polygonMethod
area_of_polygon(vertices)

Calculate the area of a polygon.

Arguments

  • vertices: The vertices of the polygon.

Returns

  • area: The area of the polygon.
source
PeriLab.IO.bond_intersect_infinite_planeMethod
bond_intersect_infinite_plane(p0::Vector{Float64}, p1::Vector{Float64}, lower_left_corner::Vector{Float64}, normal::Vector{Float64})

Check if a line segment intersects an infinite plane.

Arguments

  • p0::Vector{Float64}: The start point of the line segment.
  • p1::Vector{Float64}: The end point of the line segment.
  • lower_left_corner::Vector{Float64}: The lower left corner of the plane.
  • normal::Vector{Float64}: The normal of the plane.

Returns

  • Bool: True if the line segment intersects the plane, False otherwise.
source
PeriLab.IO.bond_intersect_rectangle_planeMethod
bond_intersect_rectangle_plane(x::Vector{Float64}, lower_left_corner::Vector{Float64}, bottom_unit_vector::Vector{Float64}, normal::Vector{Float64}, side_length::Float64, bottom_length::Float64)

Check if a bond intersects a rectangle plane.

Arguments

  • x::Vector{Float64}: The point.
  • lower_left_corner::Vector{Float64}: The lower left corner of the rectangle.
  • bottom_unit_vector::Vector{Float64}: The unit vector along the bottom of the rectangle.
  • normal::Vector{Float64}: The normal of the plane.
  • side_length::Float64: The side length of the rectangle.
  • bottom_length::Float64: The bottom length of the rectangle.

Returns

  • Bool: True if the point is inside the rectangle, False otherwise.
source
PeriLab.IO.bond_intersects_discMethod
bond_intersects_disc(p0::Vector{Float64}, p1::Vector{Float64}, center::Vector{Float64}, normal::Vector{Float64}, radius::Float64)

Check if a line segment intersects a disk.

Arguments

  • p0::Vector{Float64}: The start point of the line segment.
  • p1::Vector{Float64}: The end point of the line segment.
  • center::Vector{Float64}: The center of the disk.
  • normal::Vector{Float64}: The normal of the plane.
  • radius::Float64: The radius of the disk.

Returns

  • Bool: True if the line segment intersects the disk, False otherwise.
source
PeriLab.IO.calculate_blockMethod
calculate_block(datamanager::Module, field_key::String, dof::Int64, calculation_type::String, block::Int64)

Calculate the global value of a field for a given block.

Arguments

  • datamanager::Data_manager: Datamanager.
  • field_key::String: Field key.
  • dof::Union{Int64,Vector{Int64}}: Degree of freedom
  • calculation_type::String: Calculation type.
  • block::Int64: Block number.

Returns

  • value::Float64: Global value.
  • nnodes::Int64: Number of nodes.
source
PeriLab.IO.calculate_nodelistMethod
calculate_nodelist(datamanager::Module, field_key::String, dof::Union{Int64,Vector{Int64}}, calculation_type::String, local_nodes::Vector{Int64})

Calculate the global value of a field for a given set of nodes.

Arguments

  • datamanager::Data_manager: Datamanager.
  • field_key::String: Field key.
  • dof::Union{Int64,Vector{Int64}}: Degree of freedom
  • calculation_type::String: Calculation type.
  • local_nodes::Vector{Int64}: Node set.

Returns

  • value::Vector: Global value.
  • nnodes::Int64: Number of nodes.
source
PeriLab.IO.calculate_volumeMethod
calculate_volume(element_type::String, vertices::Vector{Vector{Float64}})

Calculate the volume of a element.

Arguments

  • element_type: The element type of the element.
  • vertices: The vertices of the element.

Returns

  • volume: The volume of the element.
source
PeriLab.IO.check_for_duplicate_in_dataframeMethod
check_for_duplicate_in_dataframe(mesh::DataFrame)

check duplicated entries and throws an error if one is there. If not everything is ok.

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.
source
PeriLab.IO.check_mesh_elementsMethod
check_mesh_elements(mesh, dof)

Process and analyze mesh data to create an dictionary containing information about mesh elements for further processing.

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.
  • dof::Int64: The degrees of freedom (DOF) for the mesh elements.

Returns

A dictionary containing information about mesh elements, which can be used for further processing or uploading.

Example

```julia meshdata = DataFrame(x1 = [1.0, 2.0, 3.0], x2 = [4.0, 5.0, 6.0], volume = [10.0, 20.0, 30.0]) dof = 3 result = checkmeshelements(meshdata, dof)

source
PeriLab.IO.check_types_in_dataframeMethod
check_types_in_dataframe(mesh::DataFrame)

check if block_id in mesh contains only int.

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.
source
PeriLab.IO.clearNP1Method
clearNP1(name::String)

Clears the NP1 from the name

Arguments

  • name::String: The name

Returns

  • name::String: The cleared name
source
PeriLab.IO.close_result_filesMethod
close_result_files(result_files::Vector{Dict}, outputs::Dict{Int64,Dict{}})

Closes the result files if the flush_file flag is not set

Arguments

  • result_files::Vector{Dict}: The result files
  • outputs::Dict{Int64,Dict{}}: The output settings
source
PeriLab.IO.close_result_filesMethod
close_result_files(result_files::Vector{Dict})

Closes the result files

Arguments

  • result_files::Vector{Dict}: The result files

Returns

  • true: File is closed
  • false: File was already closed
source
PeriLab.IO.create_and_distribute_bond_normMethod
create_and_distribute_bond_norm(comm::MPI.Comm, datamanager::Module, nlist_filtered_ids::Vector{Vector{Int64}}, distribution::Vector{Int64}, bond_norm::Vector{Float64}, dof::Int64)

Create and distribute the bond norm

Arguments

  • comm::MPI.Comm: MPI communicator
  • datamanager::Module: Data manager
  • nlist_filtered_ids::Vector{Vector{Int64}}: The filtered neighborhood list
  • distribution::Vector{Int64}: The distribution
  • bond_norm::Vector{Float64}: The bond norm
  • dof::Int64: The degree of freedom
source
PeriLab.IO.create_distributionMethod
create_distribution(nnodes::Int64, size::Int64)

Calculate the initial size of each chunk for a nearly equal number of nodes vs. cores this algorithm might lead to the problem, that the last core is not equally loaded

Arguments

  • nnodes::Int64: The number of nodes.
  • size::Int64: The number of cores.

Returns

  • distribution::Array{Int64,1}: The distribution of the nodes.
  • point_to_core::Array{Int64,1}: The number of nodes in each rank.
source
PeriLab.IO.create_distribution_neighbor_basedMethod
create_distribution_neighbor_based(nnodes::Int64,nlist::Vector{Vector{Int64}}, size::Int64)

Calculate the initial size of each chunk for a nearly equal number of nodes vs. cores this algorithm might lead to the problem, that the last core is not equally loaded

Arguments

  • nnodes::Int64: The number of nodes.
  • nlist::Vector{Vector{Int64}}: The neighborhood list.
  • size::Int64: The number of cores.

Returns

  • distribution::Array{Int64,1}: The distribution of the nodes.
  • point_to_core::Array{Int64,1}: The number of nodes in each rank.
source
PeriLab.IO.create_distribution_node_basedMethod
create_distribution_node_based(nnodes::Int64,nlist::Vector{Vector{Int64}}, size::Int64)

Calculate the initial size of each chunk for a nearly equal number of nodes vs. cores this algorithm might lead to the problem, that the last core is not equally loaded

Arguments

  • nnodes::Int64: The number of nodes.
  • nlist::Vector{Vector{Int64}}: The neighborhood list.
  • size::Int64: The number of cores.

Returns

  • distribution::Array{Int64,1}: The distribution of the nodes.
  • point_to_core::Array{Int64,1}: The number of nodes in each rank.
source
PeriLab.IO.create_neighborhoodlistMethod
create_neighborhoodlist(mesh::DataFrame, params::Dict, dof::Int64)

Create the neighborhood list of the mesh elements.

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.
  • params::Dict: The input parameters.
  • dof::Int64: The degrees of freedom (DOF) for the mesh elements.

Returns

  • nlist::Array{Array{Int64,1},1}: The neighborhood list of the mesh elements.
source
PeriLab.IO.create_overlap_mapMethod
create_overlap_map(distribution, ptc, size)

Create the overlap map.

Arguments

  • distribution::Array{Int64,1}: The distribution of the nodes.
  • ptc::Array{Int64,1}: The number of nodes in each rank.
  • size::Int64: The number of ranks.

Returns

  • overlap_map::Dict{Int64,Dict{Int64,Dict{String,Vector{Int64}}}}: The overlap map.
source
PeriLab.IO.create_result_fileFunction
create_result_file(filename::Union{AbstractString,String}, num_nodes::Int64, num_dim::Int64, num_elem_blks::Int64, num_node_sets::Int64)

Creates a exodus file for the results

Arguments

  • filename::Union{AbstractString,String}: The name of the file to create
  • num_nodes::Int64: The number of nodes
  • num_dim::Int64: The number of dimensions
  • num_elem_blks::Int64: The number of element blocks
  • num_node_sets::Int64: The number of node sets

Returns

  • result_file::Dict{String,Any}: A dictionary containing the filename and the exodus file
source
PeriLab.IO.create_result_fileMethod
create_result_file(filename::String, outputs::Dict)

Creates a csv file for the results

Arguments

  • filename::String: The name of the file to create
  • outputs::Dict: The outputs dictionary

Returns

  • Dict: The result file
source
PeriLab.IO.csv_readerMethod
csv_reader(filename::String)

Read csv and return it as a DataFrame.

Arguments

  • filename::String: The path to the mesh file.

Returns

  • csvData::DataFrame: The csv data a DataFrame.
source
PeriLab.IO.define_nsetsMethod
define_nsets(nsets::Dict{String,Vector{Int64}}, datamanager::Module)

Defines the node sets

Arguments

  • nsets::Dict{String,Vector{Int64}}: Node sets read from files
  • datamanager::Module: Data manager
source
PeriLab.IO.disk_filterMethod
disk_filter(nnodes::Int64, data::Matrix{Float64}, filter::Dict, nlist::Vector{Vector{Int64}}, dof::Int64)

Apply the disk filter to the neighborhood list.

Arguments

  • nnodes::Int64: The number of nodes.
  • data::Matrix{Float64}: The data.
  • filter::Dict: The filter.
  • nlist::Vector{Vector{Int64}}: The neighborhood list.
  • dof::Int64: The degrees of freedom.

Returns

  • filter_flag::Vector{Bool}: The filter flag.
  • normal::Vector{Float64}: The normal vector of the disk.
source
PeriLab.IO.distribute_neighborhoodlist_to_coresMethod
distribute_neighborhoodlist_to_cores(comm::MPI.Comm, datamanager::Module, nlist, distribution)

Distributes the neighborhood list to the cores.

Arguments

  • comm::MPI.Comm: MPI communicator
  • datamanager::Module: Data manager
  • nlist: neighborhood list
  • distribution Array{Int64}: global nodes distribution at cores

Returns

  • datamanager::Module: data manager
source
PeriLab.IO.distribution_to_coresMethod
distribution_to_cores(comm::MPI.Comm, datamanager::Module, mesh, distribution, dof::Int64)

Distributes the mesh data to the cores

Arguments

  • comm::MPI.Comm: MPI communicator
  • datamanager::Module: Data manager
  • mesh: Mesh
  • distribution Array{Int64}: global nodes distribution at cores
  • dof::Int64: Degree of freedom

Returns

  • datamanager::Module: data manager
source
PeriLab.IO.element_distributionMethod
element_distribution(topology::Vector{Vector{Int64}}, ptc::Vector{Int64}, size::Int64)

Create the distribution of the finite elements. Is needed to avoid multiple element calls. Each element should run only one time at the cores.

Arguments

  • topology::Vector{Vector{Int64}}: The topology list of the mesh elements.
  • nlist::Vector{Vector{Int64}}: The neighborhood list of the mesh elements.
  • size::Int64: The number of ranks.

Returns

  • distribution::Vector{Vector{Int64}}: The distribution of the nodes.
  • etc::Vector{Int64}: The number of nodes in each rank.
source
PeriLab.IO.extrude_surface_meshMethod
extrude_surface_mesh(mesh::DataFrame)

extrude the mesh at the surface of the block

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.
  • params::Dict: The input parameters.
source
PeriLab.IO.find_and_set_core_value_avgMethod
find_and_set_core_value_avg(comm::MPI.Comm, value::Union{Float64,Int64})

Find and set core value avg

Arguments

  • comm::MPI.Comm: The MPI communicator
  • value::Union{Float64,Int64}: The value

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.find_and_set_core_value_maxMethod
find_and_set_core_value_max(comm::MPI.Comm, value::Union{Float64,Int64})

Find and set core value max

Arguments

  • comm::MPI.Comm: The MPI communicator
  • value::Union{Float64,Int64}: The value

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.find_and_set_core_value_minMethod
find_and_set_core_value_min(comm::MPI.Comm, value::Union{Float64,Int64})

Find and set core value min

Arguments

  • comm::MPI.Comm: The MPI communicator
  • value::Union{Float64,Int64}: The value

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.find_and_set_core_value_sumMethod
find_and_set_core_value_sum(comm::MPI.Comm, value::Union{Float64,Int64})

Find and set core value sum

Arguments

  • comm::MPI.Comm: The MPI communicator
  • value::Union{Float64,Int64}: The value

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.find_global_core_value!Method
find_global_core_value!(global_value::Union{Int64,Float64}, calculation_type::String, nnodes::Int64, datamanager::Module)

Find global core value.

Arguments

  • global_value::Union{Int64,Float64}: The global value
  • calculation_type::String: The calculation type
  • nnodes::Int64: The number of nodes
  • datamanager::Module: The datamanager

Returns

  • global_value::Union{Int64,Float64}: The global value
source
PeriLab.IO.gather_valuesMethod
gather_values(comm::MPI.Comm, value::Any)

Gather values

Arguments

  • comm::MPI.Comm: The MPI communicator
  • value::Any: The value

Returns

  • recv_msg::Any: The received message
source
PeriLab.IO.get_block_nodesMethod
get_block_nodes(block_Id::Union{SubArray,Vector{Int64}}, block::Int64)

Returns the nodes of a block

Arguments

  • block_Id::Union{SubArray,Vector{Int64}}: The block Id
  • block::Int64: The block

Returns

  • nodes::Vector{Int64}: The nodes of the block
source
PeriLab.IO.get_bond_geometryMethod
get_bond_geometry(datamanager::Module)

Gets the bond geometry

Arguments

  • datamanager::Module: Data manager

Returns

  • datamanager::Module: data manager
source
PeriLab.IO.get_file_sizeMethod
get_file_size(result_files::Vector{Dict})

Gets the file size of the result files

Arguments

  • result_files: The result files

Returns

  • total_file_size: The total file size
source
PeriLab.IO.get_global_valuesMethod
get_global_values(output::Dict, datamanager::Module)

Get global values.

Arguments

  • output::Dict: The output
  • datamanager::Module: The datamanager

Returns

  • global_values::Vector: The global values
source
PeriLab.IO.get_local_element_topologyMethod
get_local_element_topology(datamanager::Module, topology::Vector{Vector{Int64}}, distribution::Vector{Int64})

Get the local element topology

Arguments

  • datamanager::Module: The datamanager
  • topology::Vector{Vector{Int64}}: The topology
  • distribution::Vector{Int64}: The distribution

Returns

  • datamanager::Module: The datamanager
source
PeriLab.IO.get_local_neighborsMethod
get_local_neighbors(mapping, nlist_core)

Gets the local neighborhood list from the global neighborhood list

Arguments

  • mapping: mapping function
  • nlist_core: global neighborhood list

Returns

  • nlist_core: local neighborhood list
source
PeriLab.IO.get_local_overlap_mapMethod
get_local_overlap_map()

Changes entries in the overlap map from the global numbering to the local computer core one.

Arguments

  • overlap_map::Dict{Int64, Dict{Int64, String}}: overlap map with global nodes.
  • distribution::Vector{Vector{Int64}}: global nodes distribution at cores, needed for the gobal to local mapping
  • ranks Array{Int64} : number of used computer cores

Returns

  • overlap_map::Dict{Int64, Dict{Int64, String}}: returns overlap map with local nodes.

Example:

get_local_overlap_map(overlap_map, distribution, ranks)  # returns local nodes
source
PeriLab.IO.get_mpi_rank_stringMethod
get_mpi_rank_string(rank::Int64, max_rank::Int64)

Get MPI rank string.

Arguments

  • value::Int64: The rank
  • max_rank::Int64: The max rank

Returns

  • result::String: The result
source
PeriLab.IO.get_number_of_neighbornodesMethod
get_number_of_neighbornodes(nlist::Vector{Vector{Int64}})

Get the number of neighbors for each node.

Arguments

  • nlist::Vector{Vector{Int64}}: The neighborhood list of the mesh elements.

Returns

  • length_nlist::Vector{Int64}: The number of neighbors for each node.
source
PeriLab.IO.get_paraview_coordinatesMethod
get_paraview_coordinates(dof::Int64, refDof::Int64)

Returns the paraview specific dof

Arguments

  • dof::Int64: The degrees of freedom
  • refDof::Int64: The reference degrees of freedom

Returns

  • paraview_specifics::String: The paraview specific dof
source
PeriLab.IO.get_results_mappingMethod
get_results_mapping(params::Dict, path::String, datamanager::Module)

Gets the results mapping

Arguments

  • params::Dict: The parameters
  • path::String: The path
  • datamanager::Module: The datamanager

Returns

  • output_mapping::Dict{Int64,Dict{}}: The results mapping
source
PeriLab.IO.glob_to_locMethod
glob_to_loc(distribution)

Get the global to local mapping

Arguments

  • distribution: The distribution

Returns

  • glob_to_loc: The global to local mapping
source
PeriLab.IO.global_value_avgMethod
global_value_avg(field::Union{Vector{Float64},Matrix{Float64}}, dof::Union{Int64,Vector{Int64}}, nodes::Union{SubArray,Vector{Int64}})

Calculate the global average of a field for given nodes.

Arguments

  • field::Union{Vector{Float64},Matrix{Float64}}: Field.
  • dof::Union{Int64,Vector{Int64}}: Degree of freedom
  • nodes::Union{SubArray,Vector{Int64}}: Nodes.

Returns

  • returnValue::Vector: Global value.
source
PeriLab.IO.global_value_maxMethod
global_value_max(field::Union{Vector{Float64},Matrix{Float64}}, dof::Union{Int64,Vector{Int64}}, nodes::Union{SubArray,Vector{Int64}})

Calculate the global maximum of a field for given nodes.

Arguments

  • field::Union{Vector{Float64},Matrix{Float64}}: Field.
  • dof::Union{Int64,Vector{Int64}}: Degree of freedom
  • nodes::Union{SubArray,Vector{Int64}}: Nodes.

Returns

  • returnValue::Vector: Global value.
source
PeriLab.IO.global_value_minMethod
global_value_min(field::Union{Vector{Float64},Matrix{Float64}}, dof::Union{Int64,Vector{Int64}}, nodes::Union{SubArray,Vector{Int64}})

Calculate the global minimum of a field for given nodes.

Arguments

  • field::Union{Vector{Float64},Matrix{Float64}}: Field.
  • dof::Union{Int64,Vector{Int64}}: Degree of freedom
  • nodes::Union{SubArray,Vector{Int64}}: Nodes.

Returns

  • returnValue::Vector: Global value.
source
PeriLab.IO.global_value_sumMethod
global_value_sum(field::Union{Vector{Float64},Matrix{Float64}}, dof::Union{Int64,Vector{Int64}}, nodes::Union{SubArray,Vector{Int64}})

Calculate the global sum of a field for given nodes.

Arguments

  • field::Union{Vector{Float64},Matrix{Float64}}: Field.
  • dof::Union{Int64,Vector{Int64}: Degree of freedom
  • nodes::Union{SubArray,Vector{Int64}}: Nodes.

Returns

  • returnValue::Vector: Global value.
source
PeriLab.IO.hex8_volumeMethod

hex8volume(hexvertices)

Calculate the volume of a hex.

Arguments

  • hex_vertices: The vertices of the wedge.

Returns

  • volume: The volume of the wedge.
source
PeriLab.IO.init_dataMethod
init_data(params::Dict, path::String, datamanager::Module, comm::MPI.Comm, to::TimerOutput)

Initializes the data for the mesh.

Arguments

  • params::Dict: The parameters for the simulation.
  • path::String: The path to the mesh file.
  • datamanager::Data_manager: The data manager.
  • comm::MPI.Comm: The MPI communicator.
  • to::TimerOutput: The timer output.

Returns

  • datamanager::Data_manager: The data manager.
  • params::Dict: The parameters for the simulation.
source
PeriLab.IO.init_results_in_exodusFunction
init_results_in_exodus(exo::ExodusDatabase, output::Dict{}, coords::Union{Matrix{Int64},Matrix{Float64}}, block_Id::Vector{Int64}, block_list::Vector{String}, nsets::Dict{String,Vector{Int64}}, global_ids::Vector{Int64}, PERILAB_VERSION::String)

Initializes the results in exodus

Arguments

  • exo::ExodusDatabase: The exodus database
  • output::Dict{String,Any}: The output
  • coords::Union{Matrix{Int64},Matrix{Float64}}: The coordinates
  • block_Id::Vector{Int64}: The block Id
  • block_list::Vector{String}: The unique blocks
  • nsets::Dict{String,Vector{Int64}}: The node sets
  • global_ids::Vector{Int64}: The global ids

Returns

  • result_file::Dict{String,Any}: The result file
source
PeriLab.IO.init_write_resultsMethod
init_write_results(params::Dict, output_dir::String, path::String, datamanager::Module, nsteps::Int64, PERILAB_VERSION::String)

Initialize write results.

Arguments

  • params::Dict: The parameters
  • output_dir::String: The output directory.
  • path::String: The path
  • datamanager::Module: The datamanager
  • nsteps::Int64: The number of steps

Returns

  • result_files::Array: The result files
  • outputs::Dict: The outputs
source
PeriLab.IO.initialize_dataMethod
initialize_data(filename::String, filedirectory::String, datamanager::Module, comm::MPI.Comm, to::TimerOutputs.TimerOutput)

Initialize data.

Arguments

  • filename::String: The name of the input file.
  • filedirectory::String: The directory of the input file.
  • datamanager::Module: The datamanager
  • comm::MPI.Comm: The MPI communicator
  • to::TimerOutputs.TimerOutput: The TimerOutput

Returns

  • data::Dict: The data
source
PeriLab.IO.load_and_evaluate_meshMethod
load_and_evaluate_mesh(params::Dict, path::String, ranksize::Int64, to::TimerOutput)

Load and evaluate the mesh data.

Arguments

  • params::Dict: The input parameters.
  • path::String: The path to the mesh file.
  • ranksize::Int64: The number of ranks.
  • to::TimerOutput: The timer output

Returns

  • distribution::Array{Int64,1}: The distribution of the mesh elements.
  • mesh::DataFrame: The mesh data as a DataFrame.
  • ntype::Dict: The type of the mesh elements.
  • overlap_map::Array{Array{Int64,1},1}: The overlap map of the mesh elements.
  • nlist::Array{Array{Int64,1},1}: The neighborhood list of the mesh elements.
  • dof::Int64: The degrees of freedom (DOF) for the mesh elements.
  • nsets::Dict: The node sets
  • topology::Int64::Array{Int64,nelement:nodes}`: The topology of elements.
  • el_distribution::Array{Int64,1}: The distribution of the finite elements.
source
PeriLab.IO.local_nodes_from_dictMethod
local_nodes_from_dict(glob_to_loc::Dict{Int,Int}, global_nodes::Vector{Int64})

Changes entries in the overlap map from the global numbering to the local computer core one.

Arguments

  • glob_to_loc::Dict{Int,Int}: global to local mapping
  • global_nodes::Vector{Int64}: global nodes

Returns

  • overlap_map::Dict{Int64, Dict{Int64, String}}: returns overlap map with local nodes.
source
PeriLab.IO.merge_exodus_fileMethod
merge_exodus_file(file_name::Union{AbstractString,String})

Merges the exodus file

Arguments

  • file_name::Union{AbstractString,String}: The name of the file to merge

Returns

  • exo::ExodusDatabase: The exodus file
source
PeriLab.IO.merge_exodus_filesMethod
merge_exodus_files(result_files::Vector{Any}, output_dir::String)

Merges exodus output files

Arguments

  • result_files::Vector{Any}: The result files
  • output_dir::String: The file directory
source
PeriLab.IO.neighborsMethod
neighbors(mesh, params::Dict, coor)

Compute the neighbor list for each node in a mesh based on their proximity using a BallTree data structure.

Arguments

  • mesh: A mesh data structure containing the coordinates and other information.
  • params: paramss needed for computing the neighbor list.
  • coor: A vector of coordinate names along which to compute the neighbor list.

Returns

An array of neighbor lists, where each element represents the neighbors of a node in the mesh.

source
PeriLab.IO.node_distributionFunction
node_distribution(nlist::Vector{Vector{Int64}}, size::Int64)

Create the distribution of the nodes.

Arguments

  • nlist::Vector{Vector{Int64}}: The neighborhood list of the mesh elements.
  • size::Int64: The number of ranks.
  • distribution_type::String: The distribution type.

Returns

  • distribution::Vector{Vector{Int64}}: The distribution of the nodes.
  • ptc::Vector{Int64}: Defines at which core / rank each node lies.
  • ntype::Dict: The type of the nodes.
source
PeriLab.IO.paraview_specificsMethod
paraview_specifics(dof::Int64)

Returns the paraview specific dof

Arguments

  • dof::Int64: The degrees of freedom

Returns

  • paraview_specifics::String: The paraview specific dof
source
PeriLab.IO.read_external_topologyMethod
read_external_topology(filename::String)

Read external topoloy data from a file and return it as a DataFrame.

Arguments

  • filename::String: The path to the mesh file.

Returns

  • external_topology::DataFrame: The external topology data as a DataFrame.
source
PeriLab.IO.read_inputMethod
read_input(filename::String)

Reads the input deck from a yaml file

Arguments

  • filename::String: The name of the yaml file

Returns

  • params::Dict{String,Any}: The parameters read from the yaml file
source
PeriLab.IO.read_input_fileMethod
read_input_file(filename::String)

Reads the input deck from a yaml file

Arguments

  • filename::String: The name of the yaml file

Returns

  • Dict{String,Any}: The validated parameters read from the yaml file.
source
PeriLab.IO.read_meshMethod
read_mesh(filename::String, params::Dict)

Read mesh data from a file and return it as a DataFrame.

Arguments

  • filename::String: The path to the mesh file.
  • params::Dict: The input parameters.

Returns

  • mesh::DataFrame: The mesh data as a DataFrame.
source
PeriLab.IO.rectangular_plane_filterMethod
rectangular_plane_filter(nnodes::Int64, data::Matrix{Float64}, filter::Dict, nlist::Vector{Vector{Int64}}, dof::Int64)

Apply the rectangular plane filter to the neighborhood list.

Arguments

  • nnodes::Int64: The number of nodes.
  • data::Matrix{Float64}: The data.
  • filter::Dict: The filter.
  • nlist::Vector{Vector{Int64}}: The neighborhood list.
  • dof::Int64: The degrees of freedom.

Returns

  • filter_flag::Vector{Bool}: The filter flag.
  • normal::Vector{Float64}: The normal vector of the disk.
source
PeriLab.IO.send_single_value_from_vectorMethod
send_single_value_from_vector(comm::MPI.Comm, controller::Int64, values::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}, type::Type)

Sends a single value from a vector to a controller

Arguments

  • comm::MPI.Comm: The MPI communicator
  • controller::Int64: The controller
  • values::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The values
  • type::Type: The type

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.send_valueMethod
send_value(comm::MPI.Comm, controller, send_msg)

Sends a value to a controller

Arguments

  • comm::MPI.Comm: The MPI communicator
  • controller::Int64: The controller
  • send_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The send message

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.send_vector_from_root_to_core_iMethod
send_vector_from_root_to_core_i(comm::MPI.Comm, send_msg, recv_msg, distribution)

Sends a vector from the root to the core i

Arguments

  • comm::MPI.Comm: The MPI communicator
  • send_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The send message
  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The receive message
  • distribution::Vector{Int64}: The distribution

Returns

  • recv_msg::Union{Int64,Vector{Float64},Vector{Int64},Vector{Bool}}: The received message
source
PeriLab.IO.set_dofMethod
set_dof(mesh::DataFrame)

Set the degrees of freedom (DOF) for the mesh elements.

Arguments

  • mesh::DataFrame: The input mesh data represented as a DataFrame.

Returns

  • dof::Int64: The degrees of freedom (DOF) for the mesh elements.
source
PeriLab.IO.show_block_summaryMethod
show_block_summary(solver_options::Dict, params::Dict, log_file::String, silent::Bool, comm::MPI.Comm, datamanager::Module)

Show block summary.

Arguments

  • solver_options::Dict: The solver options
  • params::Dict: The params
  • log_file::String: The log file
  • silent::Bool: The silent flag
  • comm::MPI.Comm: The comm
  • datamanager::Module: The datamanager
source
PeriLab.IO.show_mpi_summaryMethod
show_mpi_summary(log_file::String, silent::Bool, comm::MPI.Comm, datamanager::Module)

Show MPI summary.

Arguments

  • log_file::String: The log file
  • silent::Bool: The silent flag
  • comm::MPI.Comm: The comm
  • datamanager::Module: The datamanager
source
PeriLab.IO.split_vectorMethod
split_vector(input, row_nums, dof)

Split a vector into a vector of matrices

Arguments

  • input::Vector: The input vector
  • row_nums::Vector: The row numbers
  • dof::Int: The degree of freedom

Returns

  • result::Vector: The result vector
source
PeriLab.IO.synch_controller_bonds_to_responderMethod
synch_controller_bonds_to_responder(comm::MPI.Comm, overlapnodes, array, dof)

Synch the controller bonds to the responder

Arguments

  • comm::MPI.Comm: The MPI communicator
  • overlapnodes::Dict: The overlap nodes
  • array::Array: The array
  • dof::Int: The degree of freedom

Returns

  • array::Array: The array
source
PeriLab.IO.synch_controller_bonds_to_responder_flattenedMethod
synch_controller_bonds_to_responder_flattened(comm::MPI.Comm, overlapnodes, array, dof)

Synch the controller bonds to the responder

Arguments

  • comm::MPI.Comm: The MPI communicator
  • overlapnodes::Dict: The overlap nodes
  • array::Array: The array
  • dof::Int: The degree of freedom

Returns

  • array::Array: The array
source
PeriLab.IO.synch_controller_to_responderMethod
synch_controller_to_responder(comm::MPI.Comm, overlapnodes, vector, dof)

Synch the controller to the responder

Arguments

  • comm::MPI.Comm: The MPI communicator
  • overlapnodes::Dict: The overlap nodes
  • vector::Vector: The vector
  • dof::Int: The degree of freedom

Returns

  • vector::Vector: The vector
source
PeriLab.IO.synch_responder_to_controllerMethod
synch_responder_to_controller(comm::MPI.Comm, overlapnodes, vector, dof)

Synch the responder to the controller

Arguments

  • comm::MPI.Comm: The MPI communicator
  • overlapnodes::Dict: The overlap nodes
  • vector::Vector: The vector
  • dof::Int: The degree of freedom

Returns

  • vector::Vector: The vector
source
PeriLab.IO.tetrahedron_volumeMethod
tetrahedron_volume(tet_vertices)

Calculate the volume of a tetrahedron.

Arguments

  • tet_vertices: The vertices of the tetrahedron.

Returns

  • volume: The volume of the tetrahedron.
source
PeriLab.IO.wedge6_volumeMethod
wedge6_volume(wedge_vertices)

Calculate the volume of a wedge.

Arguments

  • wedge_vertices: The vertices of the wedge.

Returns

  • volume: The volume of the wedge.
source
PeriLab.IO.write_global_results_in_csvMethod
write_global_results_in_csv(csv_file::IOStream, time::Float64, global_values)

Writes the global results to the csv file

Arguments

  • csv_file::IOStream: The csv file
  • global_values: The global values
source
PeriLab.IO.write_global_results_in_exodusMethod
write_global_results_in_exodus(exo::ExodusDatabase, step::Int64, global_values)

Writes the global results in the exodus file

Arguments

  • exo::ExodusDatabase: The exodus file
  • step::Int64: The step
  • global_values: The global values

Returns

  • exo::ExodusDatabase: The exodus file
source
PeriLab.IO.write_nodal_results_in_exodusMethod
write_nodal_results_in_exodus(exo::ExodusDatabase, step::Int64, output::Dict, datamanager::Module)

Writes the nodal results in the exodus file

Arguments

  • exo::ExodusDatabase: The exodus file
  • step::Int64: The step
  • output::Dict: The output
  • datamanager::Module: The datamanager

Returns

  • exo::ExodusDatabase: The exodus file
source
PeriLab.IO.write_resultsMethod
write_results(result_files::Vector{Any}, time::Float64, max_damage::Float64, outputs::Dict, datamanager::Module)

Write results.

Arguments

  • result_files::Vector{Any}: The result files
  • time::Float64: The time
  • max_damage::Float64: The maximum damage
  • outputs::Dict: The outputs
  • datamanager::Module: The datamanager

Returns

  • result_files::Vector{Any}: The result files
source
PeriLab.IO.write_step_and_timeMethod
write_step_and_time(exo::ExodusDatabase, step::Int64, time::Float64)

Writes the step and time in the exodus file

Arguments

  • exo::ExodusDatabase: The exodus file
  • step::Int64: The step
  • time::Float64: The time

Returns

  • exo::ExodusDatabase: The exodus file
source

parameter_handling

PeriLab.IO.Parameter_Handling._get_valuesFunction
_get_values(params::Dict, block_id::Int64, valueName::String, defaultValue::Union{Float64,Bool,Nothing})

Get the value of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block
  • valueName::String: The name of the value
  • defaultValue::Union{Float64,Bool,Nothing: The default value

Returns

  • value::Float64: The value of the block
source
PeriLab.IO.Parameter_Handling.get_anglesMethod
get_angles(params::Dict, block_id::Int64, dof::Int64)

Get the horizon of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block
  • dof::Int64: The dof

Returns

  • angles::Float64: The angles of the block
source
PeriLab.IO.Parameter_Handling.get_block_namesMethod
get_block_names(params::Dict, block_ids::Vector{Int64})

Get the names of the blocks.

Arguments

  • params::Dict: The parameters dictionary.
  • block_ids::Vector{Int64}: The IDs of the blocks

Returns

  • block_names::Vector{String}: The names of the blocks.
source
PeriLab.IO.Parameter_Handling.get_bond_filtersMethod
get_bond_filters(params::Dict)

Returns the bond filters from the parameters

Arguments

  • params::Dict: The parameters

Returns

  • check::Bool: Whether the bond filters are defined
  • bfList::Dict{String,Dict{String,Any}}: The bond filters
source
PeriLab.IO.Parameter_Handling.get_computesMethod
get_computes(params::Dict, variables::Vector{String})

Get the computes.

Arguments

  • params::Dict: The parameters dictionary.
  • variables::Vector{String}: The variables.

Returns

  • computes::Dict{String,Dict{Any,Any}}: The computes.
source
PeriLab.IO.Parameter_Handling.get_densityMethod
get_density(params::Dict, block_id::Int64)

Get the density of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block

Returns

  • density::Float64: The density of the block
source
PeriLab.IO.Parameter_Handling.get_fem_blockMethod
get_fem_block(params::Dict, block_id::Int64)

Get the fem_block of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block

Returns

  • fem_block::Float64: The fem_block of the block
source
PeriLab.IO.Parameter_Handling.get_headerMethod
get_header(filename::Union{String,AbstractString})

Returns the header line and the header.

Arguments

  • filename::Union{String,AbstractString}: The filename of the file.

Returns

  • header_line::Int: The header line.
  • header::Vector{String}: The header.
source
PeriLab.IO.Parameter_Handling.get_heat_capacityMethod
get_heat_capacity(params::Dict, block_id::Int64)

Get the heat capacity of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block

Returns

  • heat_capacity::Float64: The heat capacity of the block
source
PeriLab.IO.Parameter_Handling.get_horizonMethod
get_horizon(params::Dict, block_id::Int64)

Get the horizon of a block.

Arguments

  • params::Dict: The parameters
  • block_id::Int64: The ID of the block

Returns

  • horizon::Float64: The horizon of the block
source
PeriLab.IO.Parameter_Handling.get_model_parameterFunction
get_model_parameter(params, model, id)

Retrieve a model parameter from a dictionary of parameters.

This function retrieves a specific model parameter from a dictionary of parameters based on the provided model and identifier (id).

Arguments

  • params::Dict: A dictionary containing various parameters.

  • model::String: The model type for which the parameter is sought.

  • id::String: The identifier (name) of the specific model parameter.

Returns

  • parameter::Any: The retrieved model parameter, or nothing if the parameter is not found.

Errors

  • If the specified model is defined in blocks but no model definition block exists, an error message is logged, and the function returns nothing.

  • If the model with the given identifier is defined in blocks but missing in the model's definition, an error message is logged, and the function returns nothing.

Example

```julia params = Dict( "Models" => Dict( "Models" => Dict( "ModelA" => 42, "ModelB" => 24 ) ) )

model = "Models" id = "ModelA"

result = getmodelparameter(params, model, id) if result !== nothing println("Parameter id: result") else println("Parameter not found.") end

source
PeriLab.IO.Parameter_Handling.get_node_setsMethod
get_node_sets(params::Dict, path::String)

Returns the node sets from the parameters

Arguments

  • params::Dict: The parameters
  • path::String: The path to the mesh file

Returns

  • nsets::Dict{String,Any}: The node sets
source
PeriLab.IO.Parameter_Handling.get_output_fieldnamesMethod
get_output_fieldnames(outputs::Dict, variables::Vector{String}, computes::Vector{String}, output_type::String)

Gets the output fieldnames.

Arguments

  • outputs::Dict: The outputs
  • variables::Vector{String}: The variables
  • computes::Vector{String}: The computes
  • output_type::String: The output type

Returns

  • output_fieldnames::Vector{String}: The output fieldnames
source
PeriLab.IO.Parameter_Handling.get_output_variablesMethod
get_output_variables(output::String, variables::Vector{String})

Get the output variable.

Arguments

  • output::String: The output variable.
  • variables::Vector{String}: The variables.

Returns

  • output::String: The output variable.
source
PeriLab.IO.Parameter_Handling.get_outputsMethod
get_outputs(params::Dict, variables::Vector{String}, compute_names::Vector{String})

Gets the outputs.

Arguments

  • params::Dict: The parameters
  • variables::Vector{String}: The variables
  • compute_names::Vector{String}: The compute names

Returns

  • outputs::Dict: The outputs
source
PeriLab.IO.Parameter_Handling.validate_structure_recursiveFunction
validate_structure_recursive(expected::Dict, actual::Dict, validate::Bool, checked_keys::Array, path::String="")

Validates the parameters against the expected structure

Arguments

  • expected::Dict: The expected structure
  • actual::Dict: The actual structure
  • validate::Bool: The validation results
  • checked_keys::Array: The keys that have been checked
  • path::String: The current path

Returns

  • validate::Bool: The validation result
  • checked_keys::Array: The keys that have been checked
source