Skip to content

Commit

Permalink
Move pieces relevant to laser welding to MOOSE
Browse files Browse the repository at this point in the history
  • Loading branch information
lindsayad committed May 23, 2023
1 parent 41496a9 commit eb8ecae
Show file tree
Hide file tree
Showing 13 changed files with 1,134 additions and 0 deletions.
30 changes: 30 additions & 0 deletions modules/heat_conduction/include/bcs/GaussianWeldEnergyFluxBC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/****************************************************************************/
/* 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 "ADIntegratedBC.h"

class GaussianWeldEnergyFluxBC : public ADIntegratedBC
{
public:
static InputParameters validParams();

GaussianWeldEnergyFluxBC(const InputParameters & params);

protected:
virtual ADReal computeQpResidual() override;

const Real _reff;
const Real _F0;
const Real _R;
const Function & _x_beam_coord;
const Function & _y_beam_coord;
const Function & _z_beam_coord;
};
27 changes: 27 additions & 0 deletions modules/heat_conduction/include/bcs/RadiationEnergyFluxBC.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/****************************************************************************/
/* 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 "ADIntegratedBC.h"

class RadiationEnergyFluxBC : public ADIntegratedBC
{
public:
static InputParameters validParams();

RadiationEnergyFluxBC(const InputParameters & parameters);

protected:
virtual ADReal computeQpResidual() override;

const ADMaterialProperty<Real> & _sb_constant;
const ADMaterialProperty<Real> & _absorptivity;
const Real _ff_temp;
};
49 changes: 49 additions & 0 deletions modules/heat_conduction/src/bcs/GaussianWeldEnergyFluxBC.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
/****************************************************************************/
/* DO NOT MODIFY THIS HEADER */
/* */
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */
/* */
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */
/* ALL RIGHTS RESERVED */
/****************************************************************************/

#include "GaussianWeldEnergyFluxBC.h"
#include "Function.h"

registerMooseObject("MalamuteApp", GaussianWeldEnergyFluxBC);

InputParameters
GaussianWeldEnergyFluxBC::validParams()
{
InputParameters params = ADIntegratedBC::validParams();
params.addRequiredParam<Real>("reff",
"The effective radius describing the radial distribution of the "
"beam energy. This should be non-dimensional.");
params.addRequiredParam<Real>("F0", "The average heat flux of the laser");
params.addRequiredParam<Real>("R", "The beam radius");
params.addParam<FunctionName>("x_beam_coord", 0, "The x coordinate of the center of the beam");
params.addParam<FunctionName>("y_beam_coord", 0, "The y coordinate of the center of the beam");
params.addParam<FunctionName>("z_beam_coord", 0, "The z coordinate of the center of the beam");
return params;
}

GaussianWeldEnergyFluxBC::GaussianWeldEnergyFluxBC(const InputParameters & params)
: ADIntegratedBC(params),
_reff(getParam<Real>("reff")),
_F0(getParam<Real>("F0")),
_R(getParam<Real>("R")),
_x_beam_coord(getFunction("x_beam_coord")),
_y_beam_coord(getFunction("y_beam_coord")),
_z_beam_coord(getFunction("z_beam_coord"))
{
}

ADReal
GaussianWeldEnergyFluxBC::computeQpResidual()
{
RealVectorValue beam_coords{_x_beam_coord.value(_t, _q_point[_qp]),
_y_beam_coord.value(_t, _q_point[_qp]),
_z_beam_coord.value(_t, _q_point[_qp])};
auto r = (_ad_q_points[_qp] - beam_coords).norm();
return -_test[_i][_qp] * 2. * _reff * _F0 * std::exp(-_reff * r * r / (_R * _R));
}
42 changes: 42 additions & 0 deletions modules/heat_conduction/src/bcs/RadiationEnergyFluxBC.C
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/****************************************************************************/
/* DO NOT MODIFY THIS HEADER */
/* */
/* MALAMUTE: MOOSE Application Library for Advanced Manufacturing UTilitiEs */
/* */
/* Copyright 2021 - 2023, Battelle Energy Alliance, LLC */
/* ALL RIGHTS RESERVED */
/****************************************************************************/

#include "RadiationEnergyFluxBC.h"

registerMooseObject("MalamuteApp", RadiationEnergyFluxBC);

InputParameters
RadiationEnergyFluxBC::validParams()
{
InputParameters params = ADIntegratedBC::validParams();
params.addClassDescription("Computes heat flux due to radiation");
params.addParam<MaterialPropertyName>(
"sb_constant", "sb_constant", "The stefan-boltzmann constant");
params.addParam<MaterialPropertyName>("absorptivity", "abs", "The absorptivity of the material");
params.addRequiredParam<Real>("ff_temp", "The far field temperature");
return params;
}

RadiationEnergyFluxBC::RadiationEnergyFluxBC(const InputParameters & parameters)
: ADIntegratedBC(parameters),
_sb_constant(getADMaterialProperty<Real>("sb_constant")),
_absorptivity(getADMaterialProperty<Real>("absorptivity")),
_ff_temp(getParam<Real>("ff_temp"))
{
}

ADReal
RadiationEnergyFluxBC::computeQpResidual()
{
auto u2 = _u[_qp] * _u[_qp];
auto u4 = u2 * u2;
auto ff2 = _ff_temp * _ff_temp;
auto ff4 = ff2 * ff2;
return _test[_i][_qp] * _absorptivity[_qp] * _sb_constant[_qp] * (u4 - ff4);
}
26 changes: 26 additions & 0 deletions modules/navier_stokes/include/bcs/DisplaceBoundaryBC.h
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;
};
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;
};
34 changes: 34 additions & 0 deletions modules/navier_stokes/src/bcs/DisplaceBoundaryBC.C
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 modules/navier_stokes/src/bcs/VaporRecoilPressureMomentumFluxBC.C
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];
}
52 changes: 52 additions & 0 deletions modules/navier_stokes/test/include/bcs/CrazyKCPlantFits.h
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 modules/navier_stokes/test/include/bcs/CrazyKCPlantFitsBoundary.h
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;
};
Loading

0 comments on commit eb8ecae

Please sign in to comment.