Module Parameters
@author: Alexandre Sac–Morane alexandre.sac-morane@uclouvain.be
Definition of the parameters used in the simulation.
Expand source code
#------------------------------------------------------------------------------------------------------------------------------------------ #
# Librairies
#------------------------------------------------------------------------------------------------------------------------------------------#
import numpy as np
#------------------------------------------------------------------------------------------------------------------------------------------ #
# Parameters
#------------------------------------------------------------------------------------------------------------------------------------------#
def get_parameters():
'''
Define the parameters used in the simulation.
'''
#---------------------------------------------------------------------#
# Norrmalization
n_dist = 100*1e-6 # m
n_time = 24*60*60 # s
n_mol = 0.73*1e3 * n_dist**3 # mol
#---------------------------------------------------------------------#
# PFDEM
n_DEMPF_ite = 150 # number of PFDEM iterations
n_proc = 4 # number of processors used
j_total = 0 # index global of results
save_simulation = False # indicate if the simulation is saved
n_max_vtk_files = 10 # maximum number of vtk files (can be None to save all files)
# Select Figures to plot
# Available:
# contact_pressure, contact_distrib_m_ed, contact_point_ed, contact_volume, contact_nb_node
# contact_detection, contact_h_s_v, contact_dem, saturation, m_c_pore
# m_ed, dt_PF, IC, processor, sphericities, force_applied, maps, n_grain_kc_map, dim_dom
# shape_evolution, n_vertices, sum_etai_c, mean_etai_c, mass_loss, performances
# disp_strain, disp_strain_andrade, sample_height, y_contactPoint
L_figures = ['maps', 'shape_evolution', 'contact_pressure', 'saturation', 'm_c_pore', 'disp_strain']
# Figure (plot all or current)
# The maps configuration
print_all_map_config = False # else only the current one is printed
#---------------------------------------------------------------------#
# DEM (Yade)
# steady state detection
n_ite_max = 5000 # maximum number of iteration during a DEM step
n_steady_state_detection = 100 # number of iterations considered in the window
# the difference between max and min < tolerance * force_applied
steady_state_detection = 0.02
# + the force applied must be contained in this window
# sollicitation
force_applied = 100e6 # (kg m s-2)
control_force = True # Boolean to determine if the force is controled with the contact volume
# DEM material parameters
# Young modulus
E = 2e9 # (kg m-1 s-2)
# Poisson ratio
Poisson = 0.3
# Figure (plot all or current)
# The evolution of the overlap durig DEM steps
print_all_contact_dem = False # else only the current one is printed
# The evolution of shape (compared to the initial state)
print_all_shape_evolution = False # else only the current one is printed
#---------------------------------------------------------------------#
# Grain description
# shape of the grain
# Sphere, Hex or Proxy_Hex
Shape = 'Sphere'
# the radius of grains
radius = 100*1e-6/n_dist # m/m
# discretization of the grain
n_phi = 30
# size of the indenter
plate = 0.1*radius # m/m
#---------------------------------------------------------------------#
# Phase-Field (Moose)
# determine if remeshing is available
remesh = True
# mesh
check_database = True
# remesh
if remesh:
size_x_mesh = radius/40
size_y_mesh = size_x_mesh
m_size_mesh = (size_x_mesh+size_y_mesh)/2
margin_mesh_domain = 15*size_x_mesh
# constant mesh
else :
x_min = -1.3*radius
x_max = 1.3*radius
y_min = -2.3*radius
y_max = 2.3*radius
n_mesh_x = 100
n_mesh_y = 200
m_size_mesh = ((x_max-x_min)/(n_mesh_x-1)+(y_max-y_min)/(n_mesh_y-1))/2
# PF material parameters
# the energy barrier
Energy_barrier = 1
# number of mesh in the interface
n_int = 6
# the interface thickness
w = m_size_mesh*n_int
# the gradient coefficient
kappa_eta = Energy_barrier*w*w/9.86
# the mobility
Mobility_eff = 3*(100*1e-6/(24*60*60))/(n_dist/n_time) # m.s-1/(m.s-1)
# temperature
temperature = 623 # K
# molar volume
V_m = (2.2*1e-5)/(n_dist**3/n_mol) # (m3 mol-1)/(m3 mol-1)
# constant
R_cst = (8.32)/(n_dist**2/(n_time**2*n_mol)) # (kg m2 s-2 mol-1 K-1)/(m2 s-2 mol-1)
# kinetics of dissolution and precipitation
# it affects the tilting coefficient in Ed
k_diss = 1*(0.005)/(m_size_mesh) # ed_j = ed_i*m_i/m_j
k_prec = k_diss*10 # -
# molar concentration at the equilibrium
C_eq = (0.73*1e3)/(n_mol/n_dist**3) # (mol m-3)/(mol m-3)
# diffusion of the solute
size_film = m_size_mesh*5
D_solute = (4e-14/2/size_film)/(n_dist*n_dist/n_time) # (m2 s-1)/(m2 s-1)
n_struct_element = int(round(size_film/m_size_mesh,0))
struct_element = np.array(np.ones((n_struct_element,n_struct_element)), dtype=bool) # for dilation
# Aitken method
# the time stepping and duration of one PF simualtion
# level 0
dt_PF_0 = (0.01*24*60*60)/n_time # time step
# level 1
dt_PF_1 = dt_PF_0
m_ed_contact_1 = 0
# level 2
dt_PF_2 = dt_PF_1
m_ed_contact_2 = 0
# n_t_PF*dt_PF gives the total time duration
n_t_PF = 200 # number of iterations
# the criteria on residual
crit_res = 1e-3
# Contact box detection
eta_contact_box_detection = 0.1 # value of the phase field searched to determine the contact box
# Figure (plot all or current)
# The detection of the contact by a box
print_all_contact_detection = False # else only the current one is printed
#---------------------------------------------------------------------#
# trackers
L_displacement = []
L_sum_eta_1 = []
L_sum_eta_2 = []
L_sum_c = []
L_sum_mass = []
L_m_eta_1 = []
L_m_eta_2 = []
L_m_c = []
L_m_mass = []
L_distance_extrema = []
L_equivalent_area = []
L_contact_overlap = []
L_contact_area = []
L_contact_volume_yade = []
L_contact_volume_moose = []
L_contact_volume_box = []
L_t_pf_to_dem_1 = []
L_t_pf_to_dem_2 = []
L_t_dem = []
L_t_dem_to_pf = []
L_t_pf = []
L_P_applied = []
L_n_v_1 = []
L_n_v_2 = []
L_n_v_1_target = []
L_n_v_2_target = []
L_m_ed = []
L_m_ed_contact = []
L_m_ed_large_contact = []
L_m_ed_plus_contact = []
L_m_ed_minus_contact = []
L_m_ed_plus_large_contact = []
L_m_ed_minus_large_contact = []
L_ed_contact_point = []
L_vertices_1_init = None
L_force_applied = []
L_dt_PF = []
L_AreaSphericity = []
L_DiameterSphericity = []
L_CircleRatioSphericity = []
L_PerimeterSphericity = []
L_WidthToLengthRatioSpericity = []
L_grain_kc_map = []
L_sample_height = []
L_y_contactPoint = []
L_loss_move_pf_eta1 = []
L_loss_move_pf_c = []
L_loss_move_pf_m = []
L_loss_kc_eta1 = []
L_loss_kc_c = []
L_loss_kc_m = []
L_loss_pf_eta1 = []
L_loss_pf_c = []
L_loss_pf_m = []
L_L_profile_sat = []
L_L_x = []
L_m_c_pore = []
L_m_sat_contact = []
if remesh:
L_x_min_dom = []
L_x_max_dom = []
L_y_min_dom = []
L_y_max_dom = []
L_delta_x_max = []
L_delta_y_max = []
#---------------------------------------------------------------------#
# dictionnary
dict_user = {
'n_dist': n_dist,
'n_time': n_time,
'n_mol': n_mol,
'n_DEMPF_ite': n_DEMPF_ite,
'n_proc': n_proc,
'j_total': j_total,
'save_simulation': save_simulation,
'n_max_vtk_files': n_max_vtk_files,
'L_figures': L_figures,
'print_all_map_config': print_all_map_config,
'n_ite_max': n_ite_max,
'n_steady_state_detection': n_steady_state_detection,
'steady_state_detection': steady_state_detection,
'force_applied': force_applied,
'force_applied_target': force_applied,
'control_force': control_force,
'E': E,
'Poisson': Poisson,
'print_all_contact_dem': print_all_contact_dem,
'print_all_shape_evolution': print_all_shape_evolution,
'Shape': Shape,
'radius': radius,
'n_phi': n_phi,
'plate': plate,
'remesh': remesh,
'check_database': check_database,
'Energy_barrier': Energy_barrier,
'n_int': n_int,
'w_int': w,
'kappa_eta': kappa_eta,
'Mobility_eff': Mobility_eff,
'temperature': temperature,
'V_m': V_m,
'R_cst': R_cst,
'k_diss': k_diss,
'k_prec': k_prec,
'C_eq': C_eq,
'size_film': size_film,
'D_solute': D_solute,
'struct_element': struct_element,
'dt_PF_0': dt_PF_0,
'dt_PF_1': dt_PF_1,
'Aitken_1': m_ed_contact_1,
'dt_PF_2': dt_PF_2,
'Aitken_2': m_ed_contact_2,
'n_t_PF': n_t_PF,
'crit_res': crit_res,
'eta_contact_box_detection': eta_contact_box_detection,
'print_all_contact_detection': print_all_contact_detection,
'L_displacement': L_displacement,
'L_sum_eta_1': L_sum_eta_1,
'L_sum_eta_2': L_sum_eta_2,
'L_sum_c': L_sum_c,
'L_sum_mass': L_sum_mass,
'L_m_eta_1': L_m_eta_1,
'L_m_eta_2': L_m_eta_2,
'L_m_c': L_m_c,
'L_m_mass': L_m_mass,
'L_distance_extrema': L_distance_extrema,
'L_equivalent_area': L_equivalent_area,
'L_contact_overlap': L_contact_overlap,
'L_contact_area': L_contact_area,
'L_contact_volume_yade': L_contact_volume_yade,
'L_contact_volume_moose': L_contact_volume_moose,
'L_contact_volume_box': L_contact_volume_box,
'L_t_pf_to_dem_1': L_t_pf_to_dem_1,
'L_t_pf_to_dem_2': L_t_pf_to_dem_2,
'L_t_dem': L_t_dem,
'L_t_dem_to_pf': L_t_dem_to_pf,
'L_t_pf': L_t_pf,
'L_P_applied': L_P_applied,
'L_n_v_1': L_n_v_1,
'L_n_v_2': L_n_v_2,
'L_n_v_1_target': L_n_v_1_target,
'L_n_v_2_target': L_n_v_2_target,
'L_m_ed': L_m_ed,
'L_m_ed_contact': L_m_ed_contact,
'L_m_ed_large_contact': L_m_ed_large_contact,
'L_m_ed_plus_contact': L_m_ed_plus_contact,
'L_m_ed_minus_contact': L_m_ed_minus_contact,
'L_m_ed_plus_large_contact': L_m_ed_plus_large_contact,
'L_m_ed_minus_large_contact': L_m_ed_minus_large_contact,
'L_ed_contact_point': L_ed_contact_point,
'L_vertices_1_init': L_vertices_1_init,
'L_force_applied': L_force_applied,
'L_dt_PF': L_dt_PF,
'L_AreaSphericity': L_AreaSphericity,
'L_DiameterSphericity': L_DiameterSphericity,
'L_CircleRatioSphericity': L_CircleRatioSphericity,
'L_PerimeterSphericity': L_PerimeterSphericity,
'L_WidthToLengthRatioSpericity': L_WidthToLengthRatioSpericity,
'L_grain_kc_map': L_grain_kc_map,
'L_sample_height': L_sample_height,
'L_y_contactPoint': L_y_contactPoint,
'L_loss_move_pf_eta1': L_loss_move_pf_eta1,
'L_loss_move_pf_c': L_loss_move_pf_c,
'L_loss_move_pf_m': L_loss_move_pf_m,
'L_loss_kc_eta1': L_loss_kc_eta1,
'L_loss_kc_c': L_loss_kc_c,
'L_loss_kc_m': L_loss_kc_m,
'L_loss_pf_eta1': L_loss_pf_eta1,
'L_loss_pf_c': L_loss_pf_c,
'L_loss_pf_m': L_loss_pf_m,
'L_L_profile_sat': L_L_profile_sat,
'L_L_x': L_L_x,
'L_m_c_pore': L_m_c_pore,
'L_m_sat_contact': L_m_sat_contact
}
# specific inputs
if remesh:
dict_user['size_x_mesh'] = size_x_mesh
dict_user['size_y_mesh'] = size_y_mesh
dict_user['margin_mesh_domain'] = margin_mesh_domain
dict_user['L_x_min_dom'] = L_x_min_dom
dict_user['L_x_max_dom'] = L_x_max_dom
dict_user['L_y_min_dom'] = L_y_min_dom
dict_user['L_y_max_dom'] = L_y_max_dom
dict_user['L_delta_x_max'] = L_delta_x_max
dict_user['L_delta_y_max'] = L_delta_y_max
else :
dict_user['x_min'] = x_min
dict_user['x_max'] = x_max
dict_user['y_min'] = y_min
dict_user['y_max'] = y_max
dict_user['n_mesh_x'] = n_mesh_x
dict_user['n_mesh_y'] = n_mesh_y
return dict_user
Functions
def get_parameters()
-
Define the parameters used in the simulation.
Expand source code
def get_parameters(): ''' Define the parameters used in the simulation. ''' #---------------------------------------------------------------------# # Norrmalization n_dist = 100*1e-6 # m n_time = 24*60*60 # s n_mol = 0.73*1e3 * n_dist**3 # mol #---------------------------------------------------------------------# # PFDEM n_DEMPF_ite = 150 # number of PFDEM iterations n_proc = 4 # number of processors used j_total = 0 # index global of results save_simulation = False # indicate if the simulation is saved n_max_vtk_files = 10 # maximum number of vtk files (can be None to save all files) # Select Figures to plot # Available: # contact_pressure, contact_distrib_m_ed, contact_point_ed, contact_volume, contact_nb_node # contact_detection, contact_h_s_v, contact_dem, saturation, m_c_pore # m_ed, dt_PF, IC, processor, sphericities, force_applied, maps, n_grain_kc_map, dim_dom # shape_evolution, n_vertices, sum_etai_c, mean_etai_c, mass_loss, performances # disp_strain, disp_strain_andrade, sample_height, y_contactPoint L_figures = ['maps', 'shape_evolution', 'contact_pressure', 'saturation', 'm_c_pore', 'disp_strain'] # Figure (plot all or current) # The maps configuration print_all_map_config = False # else only the current one is printed #---------------------------------------------------------------------# # DEM (Yade) # steady state detection n_ite_max = 5000 # maximum number of iteration during a DEM step n_steady_state_detection = 100 # number of iterations considered in the window # the difference between max and min < tolerance * force_applied steady_state_detection = 0.02 # + the force applied must be contained in this window # sollicitation force_applied = 100e6 # (kg m s-2) control_force = True # Boolean to determine if the force is controled with the contact volume # DEM material parameters # Young modulus E = 2e9 # (kg m-1 s-2) # Poisson ratio Poisson = 0.3 # Figure (plot all or current) # The evolution of the overlap durig DEM steps print_all_contact_dem = False # else only the current one is printed # The evolution of shape (compared to the initial state) print_all_shape_evolution = False # else only the current one is printed #---------------------------------------------------------------------# # Grain description # shape of the grain # Sphere, Hex or Proxy_Hex Shape = 'Sphere' # the radius of grains radius = 100*1e-6/n_dist # m/m # discretization of the grain n_phi = 30 # size of the indenter plate = 0.1*radius # m/m #---------------------------------------------------------------------# # Phase-Field (Moose) # determine if remeshing is available remesh = True # mesh check_database = True # remesh if remesh: size_x_mesh = radius/40 size_y_mesh = size_x_mesh m_size_mesh = (size_x_mesh+size_y_mesh)/2 margin_mesh_domain = 15*size_x_mesh # constant mesh else : x_min = -1.3*radius x_max = 1.3*radius y_min = -2.3*radius y_max = 2.3*radius n_mesh_x = 100 n_mesh_y = 200 m_size_mesh = ((x_max-x_min)/(n_mesh_x-1)+(y_max-y_min)/(n_mesh_y-1))/2 # PF material parameters # the energy barrier Energy_barrier = 1 # number of mesh in the interface n_int = 6 # the interface thickness w = m_size_mesh*n_int # the gradient coefficient kappa_eta = Energy_barrier*w*w/9.86 # the mobility Mobility_eff = 3*(100*1e-6/(24*60*60))/(n_dist/n_time) # m.s-1/(m.s-1) # temperature temperature = 623 # K # molar volume V_m = (2.2*1e-5)/(n_dist**3/n_mol) # (m3 mol-1)/(m3 mol-1) # constant R_cst = (8.32)/(n_dist**2/(n_time**2*n_mol)) # (kg m2 s-2 mol-1 K-1)/(m2 s-2 mol-1) # kinetics of dissolution and precipitation # it affects the tilting coefficient in Ed k_diss = 1*(0.005)/(m_size_mesh) # ed_j = ed_i*m_i/m_j k_prec = k_diss*10 # - # molar concentration at the equilibrium C_eq = (0.73*1e3)/(n_mol/n_dist**3) # (mol m-3)/(mol m-3) # diffusion of the solute size_film = m_size_mesh*5 D_solute = (4e-14/2/size_film)/(n_dist*n_dist/n_time) # (m2 s-1)/(m2 s-1) n_struct_element = int(round(size_film/m_size_mesh,0)) struct_element = np.array(np.ones((n_struct_element,n_struct_element)), dtype=bool) # for dilation # Aitken method # the time stepping and duration of one PF simualtion # level 0 dt_PF_0 = (0.01*24*60*60)/n_time # time step # level 1 dt_PF_1 = dt_PF_0 m_ed_contact_1 = 0 # level 2 dt_PF_2 = dt_PF_1 m_ed_contact_2 = 0 # n_t_PF*dt_PF gives the total time duration n_t_PF = 200 # number of iterations # the criteria on residual crit_res = 1e-3 # Contact box detection eta_contact_box_detection = 0.1 # value of the phase field searched to determine the contact box # Figure (plot all or current) # The detection of the contact by a box print_all_contact_detection = False # else only the current one is printed #---------------------------------------------------------------------# # trackers L_displacement = [] L_sum_eta_1 = [] L_sum_eta_2 = [] L_sum_c = [] L_sum_mass = [] L_m_eta_1 = [] L_m_eta_2 = [] L_m_c = [] L_m_mass = [] L_distance_extrema = [] L_equivalent_area = [] L_contact_overlap = [] L_contact_area = [] L_contact_volume_yade = [] L_contact_volume_moose = [] L_contact_volume_box = [] L_t_pf_to_dem_1 = [] L_t_pf_to_dem_2 = [] L_t_dem = [] L_t_dem_to_pf = [] L_t_pf = [] L_P_applied = [] L_n_v_1 = [] L_n_v_2 = [] L_n_v_1_target = [] L_n_v_2_target = [] L_m_ed = [] L_m_ed_contact = [] L_m_ed_large_contact = [] L_m_ed_plus_contact = [] L_m_ed_minus_contact = [] L_m_ed_plus_large_contact = [] L_m_ed_minus_large_contact = [] L_ed_contact_point = [] L_vertices_1_init = None L_force_applied = [] L_dt_PF = [] L_AreaSphericity = [] L_DiameterSphericity = [] L_CircleRatioSphericity = [] L_PerimeterSphericity = [] L_WidthToLengthRatioSpericity = [] L_grain_kc_map = [] L_sample_height = [] L_y_contactPoint = [] L_loss_move_pf_eta1 = [] L_loss_move_pf_c = [] L_loss_move_pf_m = [] L_loss_kc_eta1 = [] L_loss_kc_c = [] L_loss_kc_m = [] L_loss_pf_eta1 = [] L_loss_pf_c = [] L_loss_pf_m = [] L_L_profile_sat = [] L_L_x = [] L_m_c_pore = [] L_m_sat_contact = [] if remesh: L_x_min_dom = [] L_x_max_dom = [] L_y_min_dom = [] L_y_max_dom = [] L_delta_x_max = [] L_delta_y_max = [] #---------------------------------------------------------------------# # dictionnary dict_user = { 'n_dist': n_dist, 'n_time': n_time, 'n_mol': n_mol, 'n_DEMPF_ite': n_DEMPF_ite, 'n_proc': n_proc, 'j_total': j_total, 'save_simulation': save_simulation, 'n_max_vtk_files': n_max_vtk_files, 'L_figures': L_figures, 'print_all_map_config': print_all_map_config, 'n_ite_max': n_ite_max, 'n_steady_state_detection': n_steady_state_detection, 'steady_state_detection': steady_state_detection, 'force_applied': force_applied, 'force_applied_target': force_applied, 'control_force': control_force, 'E': E, 'Poisson': Poisson, 'print_all_contact_dem': print_all_contact_dem, 'print_all_shape_evolution': print_all_shape_evolution, 'Shape': Shape, 'radius': radius, 'n_phi': n_phi, 'plate': plate, 'remesh': remesh, 'check_database': check_database, 'Energy_barrier': Energy_barrier, 'n_int': n_int, 'w_int': w, 'kappa_eta': kappa_eta, 'Mobility_eff': Mobility_eff, 'temperature': temperature, 'V_m': V_m, 'R_cst': R_cst, 'k_diss': k_diss, 'k_prec': k_prec, 'C_eq': C_eq, 'size_film': size_film, 'D_solute': D_solute, 'struct_element': struct_element, 'dt_PF_0': dt_PF_0, 'dt_PF_1': dt_PF_1, 'Aitken_1': m_ed_contact_1, 'dt_PF_2': dt_PF_2, 'Aitken_2': m_ed_contact_2, 'n_t_PF': n_t_PF, 'crit_res': crit_res, 'eta_contact_box_detection': eta_contact_box_detection, 'print_all_contact_detection': print_all_contact_detection, 'L_displacement': L_displacement, 'L_sum_eta_1': L_sum_eta_1, 'L_sum_eta_2': L_sum_eta_2, 'L_sum_c': L_sum_c, 'L_sum_mass': L_sum_mass, 'L_m_eta_1': L_m_eta_1, 'L_m_eta_2': L_m_eta_2, 'L_m_c': L_m_c, 'L_m_mass': L_m_mass, 'L_distance_extrema': L_distance_extrema, 'L_equivalent_area': L_equivalent_area, 'L_contact_overlap': L_contact_overlap, 'L_contact_area': L_contact_area, 'L_contact_volume_yade': L_contact_volume_yade, 'L_contact_volume_moose': L_contact_volume_moose, 'L_contact_volume_box': L_contact_volume_box, 'L_t_pf_to_dem_1': L_t_pf_to_dem_1, 'L_t_pf_to_dem_2': L_t_pf_to_dem_2, 'L_t_dem': L_t_dem, 'L_t_dem_to_pf': L_t_dem_to_pf, 'L_t_pf': L_t_pf, 'L_P_applied': L_P_applied, 'L_n_v_1': L_n_v_1, 'L_n_v_2': L_n_v_2, 'L_n_v_1_target': L_n_v_1_target, 'L_n_v_2_target': L_n_v_2_target, 'L_m_ed': L_m_ed, 'L_m_ed_contact': L_m_ed_contact, 'L_m_ed_large_contact': L_m_ed_large_contact, 'L_m_ed_plus_contact': L_m_ed_plus_contact, 'L_m_ed_minus_contact': L_m_ed_minus_contact, 'L_m_ed_plus_large_contact': L_m_ed_plus_large_contact, 'L_m_ed_minus_large_contact': L_m_ed_minus_large_contact, 'L_ed_contact_point': L_ed_contact_point, 'L_vertices_1_init': L_vertices_1_init, 'L_force_applied': L_force_applied, 'L_dt_PF': L_dt_PF, 'L_AreaSphericity': L_AreaSphericity, 'L_DiameterSphericity': L_DiameterSphericity, 'L_CircleRatioSphericity': L_CircleRatioSphericity, 'L_PerimeterSphericity': L_PerimeterSphericity, 'L_WidthToLengthRatioSpericity': L_WidthToLengthRatioSpericity, 'L_grain_kc_map': L_grain_kc_map, 'L_sample_height': L_sample_height, 'L_y_contactPoint': L_y_contactPoint, 'L_loss_move_pf_eta1': L_loss_move_pf_eta1, 'L_loss_move_pf_c': L_loss_move_pf_c, 'L_loss_move_pf_m': L_loss_move_pf_m, 'L_loss_kc_eta1': L_loss_kc_eta1, 'L_loss_kc_c': L_loss_kc_c, 'L_loss_kc_m': L_loss_kc_m, 'L_loss_pf_eta1': L_loss_pf_eta1, 'L_loss_pf_c': L_loss_pf_c, 'L_loss_pf_m': L_loss_pf_m, 'L_L_profile_sat': L_L_profile_sat, 'L_L_x': L_L_x, 'L_m_c_pore': L_m_c_pore, 'L_m_sat_contact': L_m_sat_contact } # specific inputs if remesh: dict_user['size_x_mesh'] = size_x_mesh dict_user['size_y_mesh'] = size_y_mesh dict_user['margin_mesh_domain'] = margin_mesh_domain dict_user['L_x_min_dom'] = L_x_min_dom dict_user['L_x_max_dom'] = L_x_max_dom dict_user['L_y_min_dom'] = L_y_min_dom dict_user['L_y_max_dom'] = L_y_max_dom dict_user['L_delta_x_max'] = L_delta_x_max dict_user['L_delta_y_max'] = L_delta_y_max else : dict_user['x_min'] = x_min dict_user['x_max'] = x_max dict_user['y_min'] = y_min dict_user['y_max'] = y_max dict_user['n_mesh_x'] = n_mesh_x dict_user['n_mesh_y'] = n_mesh_y return dict_user