- neighbor_varThe variable on the other side of the interface.
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
[InterfaceKernels<<<{"href": "../../syntax/InterfaceKernels/index.html"}>>>]
[electrostatic_contact]
type = ElectrostaticContactCondition<<<{"description": "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.", "href": "ElectrostaticContactCondition.html"}>>>
variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = potential_stainless_steel
neighbor_var<<<{"description": "The variable on the other side of the interface."}>>> = potential_graphite
boundary<<<{"description": "The list of boundaries (ids or names) from the mesh where this object applies"}>>> = ssg_interface
primary_conductivity<<<{"description": "Conductivity on the primary block."}>>> = electrical_conductivity
secondary_conductivity<<<{"description": "Conductivity on the secondary block."}>>> = electrical_conductivity
mean_hardness<<<{"description": "Geometric mean of the hardness of each contacting material."}>>> = mean_hardness
mechanical_pressure<<<{"description": "Mechanical pressure uniformly applied at the contact surface area (Pressure = Force / Surface Area)."}>>> = 8.52842e10 # resulting contact conductance should be ~1.47e5 as described in Cincotti et al (https://doi.org/10.1002/aic.11102)
[]
[]
(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
- matrix_onlyFalseWhether this object is only doing assembly to matrices (no vectors)
Default:False
C++ Type:bool
Controllable:No
Description:Whether this object is only doing assembly to matrices (no vectors)
- mean_hardnessmean_hardnessGeometric mean of the hardness of each contacting material.
Default:mean_hardness
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
Controllable:No
Description:Conductivity on the primary block.
- secondary_conductivityelectrical_conductivityConductivity on the secondary block.
Default:electrical_conductivity
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Conductivity on the secondary block.
- user_electrical_contact_conductanceUser-supplied electrical contact conductance coefficient.
C++ Type:double
Unit:(no unit assumed)
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
Contribution To Tagged Field Data 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.
- 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
- 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
- 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>
Unit:(no unit assumed)
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').
- 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>
Unit:(no unit assumed)
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').
Residual And Jacobian Debug Output Parameters
- 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
Unit:(no unit assumed)
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.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Material Property Retrieval Parameters
Input Files
- (modules/electromagnetics/test/tests/interfacekernels/electrostatic_contact/contact_conductance_supplied.i)
- (modules/electromagnetics/test/tests/interfacekernels/electrostatic_contact/contact_conductance_calculated.i)
- (modules/electromagnetics/test/tests/interfacekernels/electrostatic_contact/analytic_solution_test_three_block.i)
- (modules/electromagnetics/test/tests/interfacekernels/electrostatic_contact/analytic_solution_test_two_block.i)
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]