Model Factory - Functions

Index

Models

PeriLab.Solver_control.Model_Factory.add_modelMethod
add_model(datamanager::Module, model_name::String)

Includes the models in the datamanager and checks if the model definition is correct or not.

Arguments

  • datamanager::Module: Datamanager
  • model_name::String: The block nodes

Returns

  • datamanager::Module: Datamanager
source
PeriLab.Solver_control.Model_Factory.compute_modelsMethod
compute_models(datamanager::Module, block_nodes::Dict{Int64,Vector{Int64}}, dt::Float64, time::Float64, options::Vector{String}, synchronise_field, to::TimerOutput)

Computes the models models

Arguments

  • datamanager::Module: The datamanager
  • block_nodes::Dict{Int64,Vector{Int64}}: The block nodes
  • dt::Float64: The time step
  • time::Float64: The current time of the solver
  • options::Vector{String}: The options
  • synchronise_field: The synchronise field
  • to::TimerOutput: The timer output

Returns

  • datamanager: The datamanager
source
PeriLab.Solver_control.Model_Factory.get_block_model_definitionMethod
get_block_model_definition(params::Dict, block_id::Int64, prop_keys::Vector{String}, properties)

Get block model definition.

Special case for pre calculation. It is set to all blocks, if no block definition is defined, but pre calculation is.

Arguments

  • params::Dict: Parameters.
  • blocks::Vector{Int64}: List of block id's.
  • prop_keys::Vector{String}: Property keys.
  • properties: Properties function.

Returns

  • properties: Properties function.
source
PeriLab.Solver_control.Model_Factory.init_modelsMethod
init_models(params::Dict, datamanager::Module, block_nodes::Dict{Int64,Vector{Int64}}, solver_options::Dict)

Initialize models

Arguments

  • params::Dict: Parameters.
  • datamanager::Module: Datamanager.
  • block_nodes::Dict{Int64,Vector{Int64}}: block nodes.
  • solver_options::Dict: Solver options.

Returns

  • datamanager::Data_manager: Datamanager.
source
PeriLab.Solver_control.Model_Factory.read_propertiesMethod
read_properties(params::Dict, datamanager::Module, material_model::Bool)

Read properties of material.

Arguments

  • params::Dict: Parameters.
  • datamanager::Data_manager: Datamanager.
  • material_model::Bool: Material model.

Returns

  • datamanager::Data_manager: Datamanager.
source
PeriLab.Solver_control.Model_Factory.set_heat_capacityMethod
set_heat_capacity(params::Dict, block_nodes::Dict, heat_capacity::Vector{Float64})

Sets the heat capacity of the nodes in the dictionary.

Arguments

  • params::Dict: The parameters
  • block_nodes::Dict: The block nodes
  • heat_capacity::Vector{Float64}: The heat capacity array

Returns

  • heat_capacity::SubArray: The heat capacity array
source

Additive

PeriLab.Solver_control.Model_Factory.Additive.compute_modelMethod
compute_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, model_param::Dict, block::Int64, time::Float64, dt::Float64,to::TimerOutput,)

Computes the addtive models

Arguments

  • datamanager::Module: The datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes
  • model_param::Dict: The model parameters
  • block::Int64: The block
  • time::Float64: The current time
  • dt::Float64: The time step

Returns

  • datamanager::Module: The datamanager
source
PeriLab.Solver_control.Model_Factory.Additive.init_modelMethod
init_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, block::Int64)

Initialize the additive models.

Arguments

  • datamanager::Module: The data manager module where the additive model will be initialized.
  • nodes::Union{SubArray,Vector{Int64}}: Nodes for the additive model.
  • block::Int64: Block identifier for the additive model.

Returns

  • datamanager: The modified data manager module with the initialized additive model.

Example

```julia datamanager = initmodel(mydata_manager, [1, 2, 3], 1)

source

Damage

PeriLab.Solver_control.Model_Factory.Damage.compute_modelMethod
compute_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, model_param::Dict, block::Int64, time::Float64, dt::Float64,to::TimerOutput,)

Computes the damage model

Arguments

  • datamanager::Module: The datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes
  • model_param::Dict: The model parameters
  • block::Int64: The block
  • time::Float64: The current time
  • dt::Float64: The time step

Returns

  • datamanager::Module: The datamanager
source
PeriLab.Solver_control.Model_Factory.Damage.damage_indexMethod
damage_index(datamanager,::Union{SubArray, Vector{Int64})

Function calculates the damage index related to the neighborhood volume for a set of corresponding nodes. The damage index is defined as damaged volume in relation the neighborhood volume. damageIndex = sumi (brokenBondsi * volume_i) / volumeNeighborhood

Arguments

  • datamanager::Data_manager: all model data
  • nodes::Union{SubArray, Vector{Int64}}: corresponding nodes to this model
source
PeriLab.Solver_control.Model_Factory.Damage.init_modelMethod
init_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, block::Int64)

Initialize the damage models.

Arguments

  • datamanager::Module: The data manager module where the corrosion model will be initialized.
  • nodes::Union{SubArray,Vector{Int64}}: Nodes for the corrosion model.
  • block::Int64: Block identifier for the corrosion model.

Returns

  • datamanager: The modified data manager module with the initialized corrosion model.

Example

```julia datamanager = initmodel(mydata_manager, [1, 2, 3], 1)

source

Material

PeriLab.Solver_control.Model_Factory.Material.compute_modelMethod
compute_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, model_param::Dict, block::Int64, time::Float64, dt::Float64,to::TimerOutput,)

Computes the material models

Arguments

  • datamanager::Module: The datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes
  • model_param::Dict: The model parameters
  • block::Int64: The block
  • time::Float64: The current time
  • dt::Float64: The time step

Returns

  • datamanager::Module: The datamanager
source
PeriLab.Solver_control.Model_Factory.Material.init_modelMethod
init_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}, block::Int64)

Initializes the material model.

Arguments

  • datamanager::Data_manager: Datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes.
  • block::Int64: Block.

Returns

  • datamanager::Data_manager: Datamanager.
source

Thermal

PeriLab.Solver_control.Model_Factory.Thermal.compute_modelMethod
compute_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, model_param::Dict, block::Int64, time::Float64, dt::Float64,to::TimerOutput,)

Computes the thermal models

Arguments

  • datamanager::Module: The datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes
  • model_param::Dict: The model parameters
  • block::Int64: The block
  • time::Float64: The current time
  • dt::Float64: The time step

Returns

  • datamanager::Module: The datamanager
source
PeriLab.Solver_control.Model_Factory.Thermal.init_modelMethod
init_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}, block::Int64)

Initializes the thermal model.

Arguments

  • datamanager::Data_manager: Datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes.
  • block::Int64: Block.

Returns

  • datamanager::Data_manager: Datamanager.
source

Pre_Calculation

PeriLab.Solver_control.Model_Factory.Pre_Calculation.check_dependenciesMethod
check_dependencies(datamanager::Module, block_nodes::Dict{Int64,Vector{Int64}}

Check if materials are used which needs a form of pre calculation. If so, the option will be set.

Arguments

  • datamanager::Module: Datamanager.
  • block_nodes::Dict{Int64,Vector{Int64}}: block nodes.

Returns

  • datamanager::Data_manager: Datamanager.
source
PeriLab.Solver_control.Model_Factory.Pre_Calculation.compute_modelMethod
compute_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}}, model_param::Dict, block::Int64, time::Float64, dt::Float64,to::TimerOutput,)

Computes the pre calculation models

Arguments

  • datamanager::Module: The datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes
  • model_param::Dict: The model parameters
  • block::Int64: The block
  • time::Float64: The current time
  • dt::Float64: The time step

Returns

  • datamanager::Module: The datamanager
source
PeriLab.Solver_control.Model_Factory.Pre_Calculation.init_modelMethod
init_model(datamanager::Module, nodes::Union{SubArray,Vector{Int64}, block::Int64)

Initializes the model.

Arguments

  • datamanager::Data_manager: Datamanager
  • nodes::Union{SubArray,Vector{Int64}}: The nodes.
  • block::Int64: Block.

Returns

  • datamanager::Data_manager: Datamanager.
source

Set_modules

PeriLab.Solver_control.Model_Factory.Material.Set_modules.create_module_specificsMethod
create_module_specifics(name::String, module_list::Dict{String,AbstractString}(),specifics::Dict{String,String}(), values::Tuple)

Searches for a specific function within a list of modules and calls that function if found.

This function iterates over a list of modules specified in module_list and looks for a module-specific function specified in the specifics dictionary. If the module and function are found, it calls that function with the provided values tuple.

Arguments

  • name::String: The name to match against the module names.
  • module_list::Dict{String, AbstractString}: A dictionary of module names mapped to abstract strings.
  • specifics::Dict{String, String}: A dictionary specifying the module-specific function to call for each module.
  • values::Tuple: A tuple of values to be passed as arguments to the module-specific function.

Example

```julia modulelist = Dict("Module1" => "Module1Name", "Module2" => "Module2Name") specifics = Dict("Module1Name" => "module1function", "Module2Name" => "module2function") values = (arg1, arg2) createmodulespecifics("Module1Name", modulelist, specifics, values)

source
PeriLab.Solver_control.Model_Factory.Material.Set_modules.find_jl_filesMethod
find_jl_files(directory::AbstractString)

Recursively find Julia files (.jl) in a directory.

This function recursively searches for Julia source files with the ".jl" extension in the specified directory and its subdirectories. It returns a vector of file paths for all the found .jl files.

Arguments

  • directory::AbstractString: The directory in which to search for .jl files.

Returns

A vector of strings, where each string is a file path to a .jl file found in the specified directory and its subdirectories.

Example

```julia jlfiles = findjlfiles("/path/to/modules") for jlfile in jlfiles println("Found Julia file: ", jlfile) end

source
PeriLab.Solver_control.Model_Factory.Material.Set_modules.find_module_filesMethod
find_module_files(directory::AbstractString, specific::String)

Search for Julia modules containing a specific function in a given directory.

This function searches for Julia modules (files with .jl extension) in the specified directory and checks if they contain a specific function. It returns a list of dictionaries where each dictionary contains the file path and the name of the module where the specific function is found.

Arguments

  • directory::AbstractString: The directory to search for Julia modules.
  • specific::String: The name of the specific function to search for.

Returns

An array of dictionaries, where each dictionary has the following keys:

  • "File": The file path to the module where the specific function is found.
  • "Module Name": The name of the module where the specific function is found.

Example

```julia result = findmodulefiles("/path/to/modules", "myfunction") for moduleinfo in result println("Function found in module: ", moduleinfo["Module Name"]) println("Module file path: ", moduleinfo["File"]) end

source
PeriLab.Solver_control.Model_Factory.Material.Set_modules.include_filesMethod
include_files(module_list::Vector{Any})

Include files specified in a list of modules.

This function iterates over a list of modules and includes the files specified in each module's "File" key.

Arguments

  • module_list::Vector{Any}: A list of modules where each module is expected to be a dictionary-like object with a "File" key specifying the file path.

Examples

```julia include_files([Dict("File" => "module1.jl"), Dict("File" => "module2.jl")])

source