Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions include/base/FerretConfig.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/* include/base/FerretConfig.h. Generated from FerretConfig.h by configure. */
/* include/base/FerretConfig.h. Generated from FerretConfig.h by configure. */
/* include/base/FerretConfig.h. Generated from FerretConfig.h by configure. */
/* include/base/FerretConfig.h.in. Generated from configure.ac by autoheader. */

/* Flag indicating that Boost special functions are available */
Expand Down
57 changes: 57 additions & 0 deletions include/kernels/TPElectrostrictiveCouplingPDerivative.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
/*
This file is part of FERRET, an add-on module for MOOSE
FERRET is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
For help with FERRET please contact J. Mangeri <john.m.mangeri@gmail.com>
and be sure to track new changes at github.com/mangerij/ferret
**/

#ifndef TPELECTROSTRICTIVECOUPLINGPDERIVATIVE_H
#define TPELECTROSTRICTIVECOUPLINGPDERIVATIVE_H

#include "Kernel.h"

class TPElectrostrictiveCouplingPDerivative: public Kernel
{
public:
TPElectrostrictiveCouplingPDerivative(const InputParameters & parameters);

static InputParameters validParams();

protected:
virtual Real computeQpResidual();
virtual Real computeQpJacobian();
virtual Real computeQpOffDiagJacobian(unsigned int jvar);

private:
const unsigned int _component;
const unsigned int _polar_x_var;
const unsigned int _polar_y_var;
const unsigned int _polar_z_var;
const VariableValue & _polar_x;
const VariableValue & _polar_y;
const VariableValue & _polar_z;
const MaterialProperty<Real> & _C11;
const MaterialProperty<Real> & _C12;
const MaterialProperty<Real> & _C13;
const MaterialProperty<Real> & _C33;
const MaterialProperty<Real> & _C44;
const MaterialProperty<Real> & _C66;
const MaterialProperty<Real> & _Q11;
const MaterialProperty<Real> & _Q12;
const MaterialProperty<Real> & _Q13;
const MaterialProperty<Real> & _Q33;
const MaterialProperty<Real> & _Q44;
const MaterialProperty<Real> & _Q66;
const std::string _base_name;
const MaterialProperty<RankTwoTensor> & _strain;
};
#endif //TPELECTROSTRICTIVECOUPLINGPDERIVATIVE_H
55 changes: 55 additions & 0 deletions include/materials/TPComputeFerroelectricStrain.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
This file is part of FERRET, an add-on module for MOOSE

FERRET is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

For help with FERRET please contact J. Mangeri <john.m.mangeri@gmail.com>
and be sure to track new changes at github.com/mangerij/ferret

**/

#ifndef TPCOMPUTEFERROELECTRICSTRAIN_H
#define TPCOMPUTEFERROELECTRICSTRAIN_H

#include "Material.h"
#include "RankTwoTensor.h"
#include "TPComputeFerroelectricStrain.h"
#include "ComputeEigenstrainBase.h"

/**
* TPComputeFerroelectricStrain the base class for computing spontaneous polar strain contributions (Tetragonal)
*/
class TPComputeFerroelectricStrain : public ComputeEigenstrainBase
{
public:
TPComputeFerroelectricStrain(const InputParameters & parameters);

static InputParameters validParams();
void computeQpEigenstrain();
private:
const VariableValue & _polar_x;
const VariableValue & _polar_y;
const VariableValue & _polar_z;

const MaterialProperty<Real> & _Q11;
const MaterialProperty<Real> & _Q12;
const MaterialProperty<Real> & _Q13;
const MaterialProperty<Real> & _Q33;
const MaterialProperty<Real> & _Q44;
const MaterialProperty<Real> & _Q66;
std::vector<Real> _vals;
RankTwoTensor _polar_strain;
};

#endif //COMPUTEFERROELECTRICSTRAIN_H
58 changes: 58 additions & 0 deletions include/postprocessors/TPElectrostrictiveCouplingPEnergy.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
This file is part of FERRET, an add-on module for MOOSE

FERRET is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

For help with FERRET please contact J. Mangeri <john.m.mangeri@gmail.com>
and be sure to track new changes at github.com/mangerij/ferret

**/

#ifndef TPELECTROSTRICTIVECOUPLINGPENERGY_H
#define TPELECTROSTRICTIVECOUPLINGPENERGY_H

#include "ElementIntegralPostprocessor.h"

class TPElectrostrictiveCouplingPEnergy : public ElementIntegralPostprocessor
{
public:
TPElectrostrictiveCouplingPEnergy(const InputParameters & parameters);

static InputParameters validParams();

protected:
virtual Real computeQpIntegral();

private:
const VariableValue & _polar_x;
const VariableValue & _polar_y;
const VariableValue & _polar_z;
const MaterialProperty<Real> & _C11;
const MaterialProperty<Real> & _C12;
const MaterialProperty<Real> & _C13;
const MaterialProperty<Real> & _C33;
const MaterialProperty<Real> & _C44;
const MaterialProperty<Real> & _C66;
const MaterialProperty<Real> & _Q11;
const MaterialProperty<Real> & _Q12;
const MaterialProperty<Real> & _Q13;
const MaterialProperty<Real> & _Q33;
const MaterialProperty<Real> & _Q44;
const MaterialProperty<Real> & _Q66;
const Real _energy_scale;
const std::string _base_name;
const MaterialProperty<RankTwoTensor> & _strain;
};

#endif
1 change: 1 addition & 0 deletions moose
Submodule moose added at 77e8c3
Loading