Polycrystal models

Overview

This python file provides polycrystal homogenization models. Here the goal is to homogenize the response of a large collection of single crystal orientations (i.e. grains) with individual single crystal plastic responses into a macroscale, effective plastic response.

Polycrystal homogenization models are simply NEMLModel_ldi objects with that standard interface. This means they can be used in any of the NEML python drivers or in finite element analysis exactly like any other NEML material model. They can even be defined (somewhat tediously) in the NEML XML file and saved for future use. The only difference is that they take as parameters a Implementation object (itself a NEMLModel_ldi object) and a list of orientations as input, instead of some set of material parameters.

Implementations

Class description

class PolycrystalModel : public neml::NEMLModel_ldi

Generic superclass.

Subclassed by neml::TaylorModel

Public Functions

PolycrystalModel(ParameterSet &params)
size_t n() const
virtual void populate_hist(History &hist) const

Setup the history.

virtual void init_hist(History &hist) const

Initialize the history.

inline virtual void populate_state(History &hist) const

Setup the actual evolving state.

inline virtual void init_state(History &hist) const

Initialize the actual evolving state.

double *history(double *const store, size_t i) const
double *stress(double *const store, size_t i) const
double *d(double *const store, size_t i) const
double *w(double *const store, size_t i) const
const double *history(const double *const store, size_t i) const
const double *stress(const double *const store, size_t i) const
const double *d(const double *const store, size_t i) const
const double *w(const double *const store, size_t i) const
virtual std::vector<Orientation> orientations(double *const store) const
virtual std::vector<Orientation> orientations_active(double *const store) const