fix continuum/weighted command

Syntax

fix ID group-ID continuum/weighted keyword value

  • ID, group-ID are documented in fix command
  • continuum/weighted = style name of this fix command
  • zero or one keyword/value pairs may be appended
keyword = {kernel_radius, kernel_type, compute}
  kernel_radius value = radius
    radius = Radius of the smoothing kernel
  kernel_type value = type
    type = Type of kernel {Top_Hat, Gaussian, Wendland}
  compute value = compute-type
    compute-type = Which tensor(s) to compute {stress, strain, stress_strain}

Examples

fix 1 all continuum/weighted kernel_radius 0.01 compute stress
fix 1 all continuum/weighted kernel_radius 0.2 kernel_type Wendland compute stress_strain

Description

If the compute keyword is set to either stress or stress_strain this fix calculates the complete stress tensor at each particle according to Goldhirsch. The formula is given by:

sigma_{i,ab} = -1/2 sum_{j,k} f_{jk,a} r_{jk,b} integral_0^1 phi(**r**_i - **r**_j + s **r**_{jk}) ds
             - sum_j m_j v'_{ij,a} v'_{ij,b} phi(r_i - r_j)
             + sigma_wall_{i,ab}

where

v'_{ij} = v**_j - **V**_i
**V**_i = **p**_i / rho_i
**p**_i = sum_j m_j **v**_j phi(r_i - r_j)
rho_i = sum_j m_j phi(r_i - r_j)
phi(**r) = H(radius - |r|) / Omega(radius)
Omega(radius) = 4/3 pi radius^3

and

v is the velocity vector
**f**_{ij} force acting from j onto i
**r**_{ij} vector from center of j to center of i
m_i mass of particle i
H is the Heavyside function

In case solid boundaries are present the last term is given according to Weinhart et al. by

sigma_wall_{i,ab} = - sum_{j,k} f_{jk,a} a_{jk,b} integral_0^1 phi(**r**_i - **r**_j + s **a**_{jk}) ds

where

**a**_{jk} = **r**_j - c_{jk}

and **c**_{jk} is the contact point of particle j with wall k and the sum runs over all particles j and walls k.

If the compute keyword is set to either strain or stress_strain this fix calculates the incremental strain tensor at each particle according to Zhang et al. The formula is given by

epsilon_*i,ab* = 1/(2 rho_i) sum_*j,k* m_j m_k phi(**r**_{ij}) dt (**v**_{jk,a} grad_phi(**r**_{ik},b) + **v**_{jk,b} grad_phi(**r**_{ik},a))

where most of the variables are given as above and additionally

**v**_{ij,a} is the a-th component of the velocity difference between i and j
grad_phi(**r**_{ij},a) is the a-th component of the gradient of phi with respect to **r**_i
dt is the time-step size

The following three kernel types are implemented at the moment:

  • Top_Hat - Top hat kernel
w(r) = a_t * 1 if q < 1 (q = r / kernel_radius)
     = 0 otherwise
  • Gaussian - Gaussian kernel
w(r) = a_g * exp(-q^2) (q = 3 r / kernel_radius)
  • Wendland - Quinitic radial polynomial
w(r) = a_w * (1-q/2)^4 (1+2q) (q = 2 r / kernel_radius)

Note that all kernels are equal to zero if r > kernel_radius (this implies a cut-off for the Gaussian). The constants a (different for each kernel) are chosen such that the integral of w over the ball of radius kernel_radius is equal to one. In case of the top hat kernel a_t is equal to the volume of this sphere.


Restart, fix_modify, output, run start/stop, minimize info

No information about this fix is written to binary restart files. None of the fix_modify options are relevant to this fix.

The values can be dumped by using the f_stressTensor_[i] and/or f_strainTensor_[i] (0 <= i <= 8) values in dump commands

No parameter of this fix can be used with the start/stop keywords of the run command. This fix is not invoked during energy minimization.

Restrictions

Strain computation does not work with the default TOP_HAT kernel as its derivative is zero.

In order to ensure that all particles in the kernel radius are considered make use of the neigh_modify command. In particular the contact_distance_factor which should be set such that

2*min(radius)*contact_distance_factor >= kernel_radius