forked from idaholab/moose
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Move pieces relevant to laser welding to MOOSE
- Loading branch information
Showing
9 changed files
with
986 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include "ADNodalBC.h" | ||
|
||
class DisplaceBoundaryBC : public ADNodalBC | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
DisplaceBoundaryBC(const InputParameters & parameters); | ||
|
||
protected: | ||
virtual ADReal computeQpResidual() override; | ||
|
||
const ADReal & _velocity; | ||
const Real & _u_old; | ||
}; |
25 changes: 25 additions & 0 deletions
25
modules/navier_stokes/include/bcs/VaporRecoilPressureMomentumFluxBC.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include "ADVectorIntegratedBC.h" | ||
|
||
class VaporRecoilPressureMomentumFluxBC : public ADVectorIntegratedBC | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
VaporRecoilPressureMomentumFluxBC(const InputParameters & parameters); | ||
|
||
protected: | ||
virtual ADReal computeQpResidual() override; | ||
|
||
const ADMaterialProperty<Real> & _rc_pressure; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#include "DisplaceBoundaryBC.h" | ||
|
||
registerMooseObject("MalamuteApp", DisplaceBoundaryBC); | ||
|
||
InputParameters | ||
DisplaceBoundaryBC::validParams() | ||
{ | ||
InputParameters params = ADNodalBC::validParams(); | ||
params.addClassDescription("For displacing a boundary"); | ||
params.addRequiredCoupledVar("velocity", "The velocity at which to displace"); | ||
return params; | ||
} | ||
|
||
DisplaceBoundaryBC::DisplaceBoundaryBC(const InputParameters & parameters) | ||
: ADNodalBC(parameters), | ||
_velocity(adCoupledNodalValue<Real>("velocity")), | ||
_u_old(_var.nodalValueOld()) | ||
{ | ||
} | ||
|
||
ADReal | ||
DisplaceBoundaryBC::computeQpResidual() | ||
{ | ||
return _u - (_u_old + this->_dt * _velocity); | ||
} |
37 changes: 37 additions & 0 deletions
37
modules/navier_stokes/src/bcs/VaporRecoilPressureMomentumFluxBC.C
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#include "VaporRecoilPressureMomentumFluxBC.h" | ||
|
||
registerMooseObject("MalamuteApp", VaporRecoilPressureMomentumFluxBC); | ||
|
||
InputParameters | ||
VaporRecoilPressureMomentumFluxBC::validParams() | ||
{ | ||
InputParameters params = ADVectorIntegratedBC::validParams(); | ||
params.addClassDescription("Vapor recoil pressure momentum flux"); | ||
params.addParam<MaterialPropertyName>("rc_pressure_name", "rc_pressure", "The recoil pressure"); | ||
params.addCoupledVar("temperature", "The temperature on which the recoil pressure depends"); | ||
return params; | ||
} | ||
|
||
VaporRecoilPressureMomentumFluxBC::VaporRecoilPressureMomentumFluxBC( | ||
const InputParameters & parameters) | ||
: ADVectorIntegratedBC(parameters), _rc_pressure(getADMaterialProperty<Real>("rc_pressure_name")) | ||
{ | ||
} | ||
|
||
ADReal | ||
VaporRecoilPressureMomentumFluxBC::computeQpResidual() | ||
{ | ||
return _test[_i][_qp] * | ||
ADRealVectorValue( | ||
std::abs(_normals[_qp](0)), std::abs(_normals[_qp](1)), std::abs(_normals[_qp](2))) * | ||
_rc_pressure[_qp]; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include "ADMaterial.h" | ||
|
||
/** | ||
* A material that couples a material property | ||
*/ | ||
class CrazyKCPlantFits : public ADMaterial | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
CrazyKCPlantFits(const InputParameters & parameters); | ||
|
||
protected: | ||
virtual void computeQpProperties(); | ||
|
||
const Real _c_mu0; | ||
const Real _c_mu1; | ||
const Real _c_mu2; | ||
const Real _c_mu3; | ||
const Real _Tmax; | ||
const Real _Tl; | ||
const Real _T90; | ||
const Real _beta; | ||
const Real _c_k0; | ||
const Real _c_k1; | ||
const Real _c_cp0; | ||
const Real _c_cp1; | ||
const Real _c_rho0; | ||
const ADVariableValue & _temperature; | ||
const ADVariableGradient & _grad_temperature; | ||
ADMaterialProperty<Real> & _mu; | ||
ADMaterialProperty<Real> & _k; | ||
ADMaterialProperty<Real> & _cp; | ||
ADMaterialProperty<Real> & _rho; | ||
ADMaterialProperty<RealVectorValue> & _grad_k; | ||
|
||
const Real _length_units_per_meter; | ||
const Real _temperature_units_per_kelvin; | ||
const Real _mass_units_per_kilogram; | ||
const Real _time_units_per_second; | ||
}; |
59 changes: 59 additions & 0 deletions
59
modules/navier_stokes/test/include/bcs/CrazyKCPlantFitsBoundary.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#pragma once | ||
|
||
#include "ADMaterial.h" | ||
|
||
/** | ||
* A material that couples a material property | ||
*/ | ||
class CrazyKCPlantFitsBoundary : public ADMaterial | ||
{ | ||
public: | ||
static InputParameters validParams(); | ||
|
||
CrazyKCPlantFitsBoundary(const InputParameters & parameters); | ||
|
||
protected: | ||
virtual void computeQpProperties(); | ||
|
||
const Real _ap0; | ||
const Real _ap1; | ||
const Real _ap2; | ||
const Real _ap3; | ||
const Real _bp0; | ||
const Real _bp1; | ||
const Real _bp2; | ||
const Real _bp3; | ||
const Real _Tb; | ||
const Real _Tbound1; | ||
const Real _Tbound2; | ||
|
||
const ADVariableValue & _temperature; | ||
const ADVariableGradient & _grad_temperature; | ||
|
||
ADMaterialProperty<Real> & _rc_pressure; | ||
|
||
const Real _alpha; | ||
const Real _sigma0; | ||
const Real _T0; | ||
ADMaterialProperty<Real> & _surface_tension; | ||
ADMaterialProperty<RealVectorValue> & _grad_surface_tension; | ||
const MooseArray<ADPoint> & _ad_normals; | ||
const MooseArray<ADReal> & _ad_curvatures; | ||
ADMaterialProperty<RealVectorValue> & _surface_term_curvature; | ||
ADMaterialProperty<RealVectorValue> & _surface_term_gradient1; | ||
ADMaterialProperty<RealVectorValue> & _surface_term_gradient2; | ||
|
||
const Real _length_units_per_meter; | ||
const Real _temperature_units_per_kelvin; | ||
const Real _mass_units_per_kilogram; | ||
const Real _time_units_per_second; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
/****************************************************************************/ | ||
/* DO NOT MODIFY THIS HEADER */ | ||
/* */ | ||
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */ | ||
/* */ | ||
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */ | ||
/* ALL RIGHTS RESERVED */ | ||
/****************************************************************************/ | ||
|
||
#include "CrazyKCPlantFits.h" | ||
|
||
registerMooseObject("MalamuteApp", CrazyKCPlantFits); | ||
|
||
InputParameters | ||
CrazyKCPlantFits::validParams() | ||
{ | ||
InputParameters params = ADMaterial::validParams(); | ||
params.addParam<Real>("c_mu0", 0.15616, "mu0 coefficient"); | ||
params.addParam<Real>("c_mu1", -3.3696e-5, "mu1 coefficient"); | ||
params.addParam<Real>("c_mu2", 1.0191e-8, "mu2 coefficient"); | ||
params.addParam<Real>("c_mu3", -1.0413e-12, "mu3 coefficient"); | ||
params.addParam<Real>("Tmax", 4000, "The maximum temperature"); | ||
params.addParam<Real>("Tl", 1623, "The liquidus temperature"); | ||
params.addParam<Real>( | ||
"T90", 1528, "The T90 temperature (I don't know what this means physically)"); | ||
params.addParam<Real>("beta", 1e11, "beta coefficient"); | ||
params.addParam<Real>("c_k0", 10.7143, "k0 coefficient"); | ||
params.addParam<Real>("c_k1", 14.2857e-3, "k0 coefficient"); | ||
params.addParam<Real>("c_cp0", 425.75, "cp0 coefficient"); | ||
params.addParam<Real>("c_cp1", 170.833e-3, "cp1 coefficient"); | ||
params.addParam<Real>("c_rho0", 7.9e3, "The constant density"); | ||
params.addCoupledVar("temperature", 1., "The temperature"); | ||
params.addParam<MaterialPropertyName>( | ||
"mu_name", "mu", "The name of the viscosity material property"); | ||
params.addParam<MaterialPropertyName>("k_name", "k", "The name of the thermal conductivity"); | ||
params.addParam<MaterialPropertyName>("cp_name", "cp", "The name of the thermal conductivity"); | ||
params.addParam<MaterialPropertyName>("rho_name", "rho", "The name of the thermal conductivity"); | ||
params.addParam<int>("length_unit_exponent", | ||
0, | ||
"The exponent of the length unit. If working in milimeters for example, " | ||
"this number should be -3"); | ||
params.addParam<int>( | ||
"temperature_unit_exponent", | ||
0, | ||
"The exponent of the temperature unit. If working in kili-Kelvin for example, " | ||
"this number should be 3"); | ||
params.addParam<int>("mass_unit_exponent", | ||
0, | ||
"The exponent of the mass unit. If working in miligrams for example, " | ||
"this number should be -9"); | ||
params.addParam<int>("time_unit_exponent", | ||
0, | ||
"The exponent of the time unit. If working in micro-seconds for example, " | ||
"this number should be -6"); | ||
return params; | ||
} | ||
|
||
CrazyKCPlantFits::CrazyKCPlantFits(const InputParameters & parameters) | ||
: ADMaterial(parameters), | ||
_c_mu0(getParam<Real>("c_mu0")), | ||
_c_mu1(getParam<Real>("c_mu1")), | ||
_c_mu2(getParam<Real>("c_mu2")), | ||
_c_mu3(getParam<Real>("c_mu3")), | ||
_Tmax(getParam<Real>("Tmax")), | ||
_Tl(getParam<Real>("Tl")), | ||
_T90(getParam<Real>("T90")), | ||
_beta(getParam<Real>("beta")), | ||
_c_k0(getParam<Real>("c_k0")), | ||
_c_k1(getParam<Real>("c_k1")), | ||
_c_cp0(getParam<Real>("c_cp0")), | ||
_c_cp1(getParam<Real>("c_cp1")), | ||
_c_rho0(getParam<Real>("c_rho0")), | ||
_temperature(adCoupledValue("temperature")), | ||
_grad_temperature(adCoupledGradient("temperature")), | ||
_mu(declareADProperty<Real>(getParam<MaterialPropertyName>("mu_name"))), | ||
_k(declareADProperty<Real>(getParam<MaterialPropertyName>("k_name"))), | ||
_cp(declareADProperty<Real>(getParam<MaterialPropertyName>("cp_name"))), | ||
_rho(declareADProperty<Real>(getParam<MaterialPropertyName>("rho_name"))), | ||
_grad_k(declareADProperty<RealVectorValue>("grad_" + getParam<MaterialPropertyName>("k_name"))), | ||
_length_units_per_meter(1. / std::pow(10, getParam<int>("length_unit_exponent"))), | ||
_temperature_units_per_kelvin(1. / std::pow(10, getParam<int>("temperature_unit_exponent"))), | ||
_mass_units_per_kilogram(1. / std::pow(10, getParam<int>("mass_unit_exponent"))), | ||
_time_units_per_second(1. / std::pow(10, getParam<int>("time_unit_exponent"))) | ||
{ | ||
} | ||
|
||
void | ||
CrazyKCPlantFits::computeQpProperties() | ||
{ | ||
if (_temperature[_qp] < _Tl * _temperature_units_per_kelvin) | ||
_mu[_qp] = _mass_units_per_kilogram / (_length_units_per_meter * _time_units_per_second) * | ||
(_c_mu0 + _c_mu1 * _Tl + _c_mu2 * _Tl * _Tl + _c_mu3 * _Tl * _Tl * _Tl) * | ||
(_beta + (1 - _beta) * (_temperature[_qp] - _T90 * _temperature_units_per_kelvin) / | ||
((_Tl - _T90) * _temperature_units_per_kelvin)); | ||
else | ||
{ | ||
ADReal That; | ||
That = _temperature[_qp] / _temperature_units_per_kelvin > _Tmax | ||
? _Tmax | ||
: _temperature[_qp] / _temperature_units_per_kelvin; | ||
_mu[_qp] = _mass_units_per_kilogram / (_length_units_per_meter * _time_units_per_second) * | ||
(_c_mu0 + _c_mu1 * That + _c_mu2 * That * That + _c_mu3 * That * That * That); | ||
} | ||
_k[_qp] = (_c_k0 + _c_k1 / _temperature_units_per_kelvin * _temperature[_qp]) * | ||
(_mass_units_per_kilogram * _length_units_per_meter / | ||
(_temperature_units_per_kelvin * _time_units_per_second * _time_units_per_second * | ||
_time_units_per_second)); | ||
_grad_k[_qp] = _c_k1 * | ||
(_mass_units_per_kilogram * _length_units_per_meter / | ||
(_temperature_units_per_kelvin * _temperature_units_per_kelvin * | ||
_time_units_per_second * _time_units_per_second * _time_units_per_second)) * | ||
_grad_temperature[_qp]; | ||
_cp[_qp] = (_c_cp0 + _c_cp1 / _temperature_units_per_kelvin * _temperature[_qp]) * | ||
(_length_units_per_meter * _length_units_per_meter / | ||
(_temperature_units_per_kelvin * _time_units_per_second * _time_units_per_second)); | ||
_rho[_qp] = _c_rho0 * _mass_units_per_kilogram / | ||
(_length_units_per_meter * _length_units_per_meter * _length_units_per_meter); | ||
} |
Oops, something went wrong.