void ElemElemConstraint::computeElemNeighJacobian(Moose::DGJacobianType type) { const VariableTestValue & test_space = ( type == Moose::ElementElement || type == Moose::ElementNeighbor ) ? _test : _test_neighbor; const VariableTestValue & loc_phi = ( type == Moose::ElementElement || type == Moose::NeighborElement ) ? _phi : _phi_neighbor; DenseMatrix<Number> & Kxx = type == Moose::ElementElement ? _assembly.jacobianBlock(_var.number(), _var.number()) : type == Moose::ElementNeighbor ? _assembly.jacobianBlockNeighbor(Moose::ElementNeighbor, _var.number(), _var.number()) : type == Moose::NeighborElement ? _assembly.jacobianBlockNeighbor(Moose::NeighborElement, _var.number(), _var.number()) : _assembly.jacobianBlockNeighbor(Moose::NeighborNeighbor, _var.number(), _var.number()); for (_qp = 0; _qp < _constraint_q_point.size(); _qp++) for (_i = 0; _i < test_space.size(); _i++) for (_j = 0; _j < loc_phi.size(); _j++) Kxx(_i, _j) += _constraint_weight[_qp] * computeQpJacobian(type); }
void DGKernel::computeOffDiagElemNeighJacobian(Moose::DGJacobianType type,unsigned int jvar) { const VariableTestValue & test_space = ( type == Moose::ElementElement || type == Moose::ElementNeighbor ) ? _test : _test_neighbor; const VariableTestValue & loc_phi = ( type == Moose::ElementElement || type == Moose::NeighborElement ) ? _phi : _phi_neighbor; DenseMatrix<Number> & Kxx = type == Moose::ElementElement ? _assembly.jacobianBlock(_var.number(), jvar) : type == Moose::ElementNeighbor ? _assembly.jacobianBlockNeighbor(Moose::ElementNeighbor, _var.number(), jvar) : type == Moose::NeighborElement ? _assembly.jacobianBlockNeighbor(Moose::NeighborElement, _var.number(), jvar) : _assembly.jacobianBlockNeighbor(Moose::NeighborNeighbor, _var.number(), jvar); for (_qp=0; _qp<_qrule->n_points(); _qp++) for (_i=0; _i<test_space.size(); _i++) for (_j=0; _j<loc_phi.size(); _j++) Kxx(_i,_j) += _JxW[_qp]*_coord[_qp]*computeQpOffDiagJacobian(type, jvar); }