Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Concrete-rebar bondslip constraint model #100

Open
wants to merge 6 commits into
base: devel
Choose a base branch
from
Open
Changes from 1 commit
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
Next Next commit
Bondslip Constraint Model #99
SudiptaBiswas committed Aug 19, 2020
commit f61a1410a9ec6ebb607c4026ca675670b8e53638
90 changes: 90 additions & 0 deletions include/constraints/RebarBondSlipConstraint.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
//* This file is part of the MOOSE framework
//* https://www.mooseframework.org
//*
//* All rights reserved, see COPYRIGHT for full restrictions
//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
//*
//* Licensed under LGPL 2.1, please see LICENSE for details
//* https://www.gnu.org/licenses/lgpl-2.1.html

#pragma once

// MOOSE includes
#include "EqualValueEmbeddedConstraint.h"

// Forward Declarations
class RebarBondSlipConstraint;

template <>
InputParameters validParams<RebarBondSlipConstraint>();

/// A RebarBondSlipConstraint enforces concrete-rebar constraint
class RebarBondSlipConstraint : public EqualValueEmbeddedConstraint
{
public:
static InputParameters validParams();

RebarBondSlipConstraint(const InputParameters & parameters);
virtual void initialSetup() override;
virtual void timestepSetup() override;
bool shouldApply() override;
void reinitConstraint();

protected:
virtual void computeTangent();
virtual Real computeQpResidual(Moose::ConstraintType type) override;
virtual Real computeQpJacobian(Moose::ConstraintJacobianType type) override;
virtual Real computeQpOffDiagJacobian(Moose::ConstraintJacobianType type,
unsigned int jvar) override;

/**
* Struct designed to hold info about the bonds slip history
*/
struct bondSlipData
{
Real slip_min;
Real slip_max;
Real slip_min_old;
Real slip_max_old;
Real bondstress_min;
Real bondstress_max;
Real bondstress_min_old;
Real bondstress_max_old;

bondSlipData()
: slip_min(0.0),
slip_max(0.0),
slip_min_old(0.0),
slip_max_old(0.0),
bondstress_min(0.0),
bondstress_max(0.0),
bondstress_min_old(0.0),
bondstress_max_old(0.0)
{
}
};

// Bond-slip data
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need doxygen comments for all descriptions of non-override methods and for all member variables. Three slash comments for the variables, long form comments for methods, including @param and @return tags.

std::map<dof_id_type, bondSlipData> _bondslip;

const unsigned _component;
const unsigned int _mesh_dimension;
std::vector<unsigned int> _var_nums;
std::vector<MooseVariable *> _vars;

const bool _debug;

const Real _max_bondstress;
const Real _frictional_bondstress;
const Real _ultimate_slip;
const Real _bar_radius;
std::vector<Real> _transitional_slip;
/// constraint force needed to enforce the constraint
RealVectorValue _constraint_residual;
/// penalty force for the current constraint
RealVectorValue _pen_force;
RealVectorValue _slave_tangent;
Real _current_elem_volume;
bool _bond;
Real _bond_stress;
};
Loading