Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #include "ADNodeElemConstraint.h" 11 : 12 : // MOOSE includes 13 : #include "Assembly.h" 14 : #include "MooseEnum.h" 15 : #include "MooseMesh.h" 16 : #include "MooseTypes.h" 17 : 18 : #include "libmesh/string_to_enum.h" 19 : 20 : InputParameters 21 14429 : ADNodeElemConstraint::validParams() 22 : { 23 14429 : InputParameters params = NodeElemConstraintBase::validParams(); 24 14429 : return params; 25 : } 26 : 27 84 : ADNodeElemConstraint::ADNodeElemConstraint(const InputParameters & parameters) 28 : : NodeElemConstraintBase(parameters), 29 168 : _u_primary(_primary_var.adSlnNeighbor()), 30 84 : _u_secondary(_var.adDofValues()) 31 : { 32 84 : } 33 : 34 : void 35 4200 : ADNodeElemConstraint::computeResidual() 36 : { 37 4200 : _qp = 0; 38 : 39 4200 : _residuals.resize(_test_primary.size(), 0); 40 28280 : for (auto & r : _residuals) 41 24080 : r = 0; 42 : 43 28280 : for (_i = 0; _i < _test_primary.size(); _i++) 44 24080 : _residuals[_i] += raw_value(computeQpResidual(Moose::Primary)); 45 : 46 12600 : addResiduals( 47 4200 : _assembly, _residuals, _primary_var.dofIndicesNeighbor(), _primary_var.scalingFactor()); 48 : 49 4200 : _residuals.resize(_test_secondary.size(), 0); 50 : 51 8400 : for (auto & r : _residuals) 52 4200 : r = 0; 53 : 54 8400 : for (_i = 0; _i < _test_secondary.size(); _i++) 55 4200 : _residuals[_i] += raw_value(computeQpResidual(Moose::Secondary)); 56 : 57 4200 : addResiduals(_assembly, _residuals, _var.dofIndices(), _var.scalingFactor()); 58 4200 : } 59 : 60 : void 61 2100 : ADNodeElemConstraint::computeJacobian() 62 : { 63 2100 : _qp = 0; 64 : 65 2100 : std::vector<ADReal> primary_residual(_test_primary.size(), 0); 66 : 67 14140 : for (_i = 0; _i < _test_primary.size(); _i++) 68 12040 : primary_residual[_i] += computeQpResidual(Moose::Primary); 69 : 70 2100 : addJacobian( 71 2100 : _assembly, primary_residual, _primary_var.dofIndicesNeighbor(), _primary_var.scalingFactor()); 72 : 73 2100 : std::vector<ADReal> secondary_residual(_test_secondary.size(), 0); 74 : 75 4200 : for (_i = 0; _i < _test_secondary.size(); _i++) 76 2100 : secondary_residual[_i] += computeQpResidual(Moose::Secondary); 77 : 78 2100 : addJacobian(_assembly, secondary_residual, _var.dofIndices(), _var.scalingFactor()); 79 2100 : } 80 : 81 : Real 82 0 : ADNodeElemConstraint::computeQpJacobian(Moose::ConstraintJacobianType /*type*/) 83 : { 84 : mooseAssert(false, "Should not be used"); 85 0 : return 0; 86 : } 87 : 88 : Real 89 0 : ADNodeElemConstraint::computeQpOffDiagJacobian(Moose::ConstraintJacobianType /*type*/, 90 : unsigned int /*jvar*/) 91 : { 92 : mooseAssert(false, "Should not be used"); 93 0 : return 0; 94 : }