Block evaluation functions

Overview

This module provides helper routines for evaluating batches of NEML models sequentially. These routines can take advantage of:

  1. Shared memory parallelism to evaluate the stress updates on many cores.

  2. Nicely-aligned memory.

  3. Explicit block matrix forms for converting to and from Mandel notation

Module description

void neml::block_evaluate(std::shared_ptr<NEMLModel> model, size_t nblock, const double *const e_np1, const double *const e_n, const double *const T_np1, const double *const T_n, double t_np1, double t_n, double *const s_np1, const double *const s_n, double *const h_np1, const double *const h_n, double *const A_np1, double *const u_np1, const double *const u_n, double *const p_np1, const double *p_n)

Block update in tensor notation.

This function takes input in full tensor notation, internally converts to Mandel notation using highly-efficient block matrix multiplications, runs the stress update, using OpenMP if enabled, and reconverts to full tensors using more block matrix multiplications.