- neighbor_varThe variable on the other side of the interface.
C++ Type:std::vector<VariableName>
Controllable:No
Description:The variable on the other side of the interface.
- variableThe name of the variable that this residual object operates on
C++ Type:NonlinearVariableName
Controllable:No
Description:The name of the variable that this residual object operates on
ElectrostaticContactCondition
Interface condition that describes the current continuity and contact conductance across a boundary formed between two dissimilar materials (resulting in a potential discontinuity). Conductivity on each side of the boundary is defined via the material properties system.
Description
This interface kernel models the conductivity of electric field across a specified boundary between two dissimilar materials, as described by (Cincotti et al., 2007). It accounts for the influence of electrostatic potential differences across the interface, with an appropriate electrical contact conductance coefficient being provided either by the user as a constant scalar number or via a combination of material properties and constants for calculation. The condition being applied is:
and
where
is the electrical conductivity of each material along the interface,
is the electrical contact conductance, and
is the electrostatic potential of the material at the interface.
The temperature- and mechanical-pressure-dependent electrical contact conductance, given by (Babu et al., 2001), is calculated using:
where
is an experimentally-derived proportional fit parameter (set to be 64, from (Cincotti et al., 2007)),
is the harmonic mean of the temperature-dependent electrical conductivities on either side of the boundary,
() is the uniform mechanical pressure applied at the contact surface area (S) between the two materials,
is the harmonic mean of the hardness values of each material, and
is an experimentally-derived power fit parameter (set to be 0.35, from (Cincotti et al., 2007)).
For reference, the harmonic mean calculation for two values, and , is given by
Please note that variable
must always refer to the variable of higher potential, while the neighbor_var
must always refer to the variable of lower potential in your model. Knowledge of your boundary conditions (where potential is applied or grounded) and electrical conductivities on either side of the boundary is vital to making the right choice! Please refer to the electromagnetics module test examples as well as (Cincotti et al., 2007) for guidance and usage.
Example Input File Syntax
[electrostatic_contact]
type = ElectrostaticContactCondition
variable = potential_stainless_steel
neighbor_var = potential_graphite
boundary = ssg_interface
primary_conductivity = electrical_conductivity
secondary_conductivity = electrical_conductivity
mean_hardness = mean_hardness
mechanical_pressure = 8.52842e10 # resulting contact conductance should be ~1.47e5 as described in Cincotti et al (https://doi.org/10.1002/aic.11102)
[]
(../moose/modules/electromagnetics/test/tests/interfacekernels/electrostatic_contact/contact_conductance_calculated.i)Input Parameters
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- mean_hardnessmean_hardnessGeometric mean of the hardness of each contacting material.
Default:mean_hardness
C++ Type:MaterialPropertyName
Controllable:No
Description:Geometric mean of the hardness of each contacting material.
- mechanical_pressure0Mechanical pressure uniformly applied at the contact surface area (Pressure = Force / Surface Area).
Default:0
C++ Type:FunctionName
Controllable:No
Description:Mechanical pressure uniformly applied at the contact surface area (Pressure = Force / Surface Area).
- primary_conductivityelectrical_conductivityConductivity on the primary block.
Default:electrical_conductivity
C++ Type:MaterialPropertyName
Controllable:No
Description:Conductivity on the primary block.
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- secondary_conductivityelectrical_conductivityConductivity on the secondary block.
Default:electrical_conductivity
C++ Type:MaterialPropertyName
Controllable:No
Description:Conductivity on the secondary block.
- user_electrical_contact_conductanceUser-supplied electrical contact conductance coefficient.
C++ Type:double
Controllable:No
Description:User-supplied electrical contact conductance coefficient.
Optional Parameters
- absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution
C++ Type:std::vector<TagName>
Controllable:No
Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution
- extra_matrix_tagsThe extra tags for the matrices this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the matrices this Kernel should fill
- extra_vector_tagsThe extra tags for the vectors this Kernel should fill
C++ Type:std::vector<TagName>
Controllable:No
Description:The extra tags for the vectors this Kernel should fill
- matrix_tagssystemThe tag for the matrices this Kernel should fill
Default:system
C++ Type:MultiMooseEnum
Controllable:No
Description:The tag for the matrices this Kernel should fill
- vector_tagsnontimeThe tag for the vectors this Kernel should fill
Default:nontime
C++ Type:MultiMooseEnum
Controllable:No
Description:The tag for the vectors this Kernel should fill
Tagging Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Controllable:No
Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- diag_save_in_var_sideThis parameter must exist if diag_save_in variables are specified and must have the same length as diag_save_in. This vector specifies whether the corresponding aux_var should save-in jacobian contributions from the primary ('p') or secondary side ('s').
C++ Type:MultiMooseEnum
Controllable:No
Description:This parameter must exist if diag_save_in variables are specified and must have the same length as diag_save_in. This vector specifies whether the corresponding aux_var should save-in jacobian contributions from the primary ('p') or secondary side ('s').
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
C++ Type:std::vector<AuxVariableName>
Controllable:No
Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)
- save_in_var_sideThis parameter must exist if save_in variables are specified and must have the same length as save_in. This vector specifies whether the corresponding aux_var should save-in residual contributions from the primary ('p') or secondary side ('s').
C++ Type:MultiMooseEnum
Controllable:No
Description:This parameter must exist if save_in variables are specified and must have the same length as save_in. This vector specifies whether the corresponding aux_var should save-in residual contributions from the primary ('p') or secondary side ('s').
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
References
- S. S. Babu, M. L. Santella, Z. Feng, B. W. Riemer, and J. W. Cohron.
Empirical model of effects of pressure and temperature on electrical contact resistance of metals.
Sci Technol Weld Joining, 6(3):126–132, 2001.[BibTeX]
- A. Cincotti, A. M. Locci, R. OrrĂ¹, and G. Cao.
Modeling of SPS apparatus: temperature, current and strain distribution with no powders.
AIChE Journal, 53(3):703–719, 2007.
doi:10.1002/aic.11102.[BibTeX]