dicstrain.hpp

namespace strain

Functions

void engine(const py::array_t<int> &ss_x_arr, const py::array_t<int> &ss_y_arr, const py::array_t<double> &u_arr, const py::array_t<double> &v_arr, const int nss_x, const int nss_y, const int nimg, const int sw_size, const int q, const std::string &form, const std::vector<std::string> &filenames, const util::SaveConfig &strain_save_conf)
bool fill_window(int *ss_x, int *ss_y, double *u, double *v, int img, int sw, Window &window, int nss_x, int nss_y, int sw_size)

Fills the strain window with the subset coordinates and displacement vectors based on the input parameters.

Parameters:
  • ss_x – subset x-coordinates

  • ss_y – subset y-coordinates

  • u – horizontal displacement

  • v – vertical displacement

  • window – strain window struct.

  • num_ss_x – number of subsets along the x-axis

  • num_ss_y – number of subsets along the y-axis

  • x0_idx – index of the x-coordinate in the subset mask

  • y0_idx – index of the x-coordinate in the subset mask

  • swr – strain window radius (strain window / 2)

Returns:

true if the strain window is filled successfully

Returns:

false if the strain window is out of bounds

Eigen::Matrix2d compute_def_grad(const int q, const Eigen::VectorXd &uc, const Eigen::VectorXd &vc, const double x0, const double y0)
Eigen::Matrix2d compute_strain(const std::string &form, const Eigen::Matrix2d &deform_grad)
void append_results(int sw, strain::Results &results, const bool save_at_end, const int x0, const int y0, const Eigen::Matrix2d &deform_grad, const Eigen::Matrix2d &eps, const int nwindows, const int img)
void save_to_disk(int img, const strain::Results &results, const util::SaveConfig &strain_save_conf, const int nwindows, const int nimg, const std::vector<std::string> filenames)
inline Eigen::Matrix2d green(Eigen::Matrix2d F)

Calculates Green strain for a given deformation gradient F and identity matrix I.

Parameters:
  • F – deformation gradient

  • I – Identity Matrix

Returns:

Eigen::Matrix2d Green Strain

inline Eigen::Matrix2d hencky(Eigen::Matrix2d F)

Calculates Hencky strain for a given deformation gradient F and identity matrix I.

Parameters:
  • F – deformation gradient

  • I – Identity Matrix

Returns:

Eigen::Matrix2d Hencky Strain

inline Eigen::Matrix2d almansi(Eigen::Matrix2d F)

Calculates Almansi strain for a given deformation gradient F and identity matrix I.

Parameters:
  • F – deformation gradient

  • I – Identity Matrix

Returns:

Eigen::Matrix2d Almansi Strain

inline Eigen::Matrix2d biot_euler(Eigen::Matrix2d F)

Calculates Biot strain in the euler coordiate system for a given deformation gradient F and identity matrix I.

Parameters:
  • F – deformation gradient

  • I – Identity Matrix

Returns:

Eigen::Matrix2d Almansi Strain

inline Eigen::Matrix2d biot_lagrange(Eigen::Matrix2d F)

Calculates Biot strain in the lagrange coordiate system for a given deformation gradient F and identity matrix I.

Parameters:
  • F – deformation gradient

  • I – Identity Matrix

Returns:

Eigen::Matrix2d Almansi Strain

struct Results

Public Functions

inline Results(int nwindows)

Public Members

std::vector<int> x
std::vector<int> y
std::vector<double> def_grad
std::vector<double> strain
std::vector<bool> valid_window
struct Window
#include <dicstrain.hpp>

Struct for the strain window. Contains subset coordinates (x,y) and the corresponding displacement vectors (u,v).

Public Functions

inline Window(int sw_size)

Public Members

std::vector<int> x
std::vector<int> y
std::vector<double> u
std::vector<double> v