alan-turing-institute / PeriPy

Code base for PeriPy, a lightweight, open-source and high-performance package for peridynamic simulations written in Python - a collaboration between Exeter, Cambridge & Turing
MIT License
47 stars 14 forks source link

Damage model - fix #89

Closed mark-hobbs closed 3 years ago

mark-hobbs commented 3 years ago

PeriPy does not correctly capture softening damage. There are also issues with numerical stability when using finer meshes. It is possible that these issues are linked. The damage model implementation in PeriPy is almost certainly the source of these issues and requires further examination.

The attached image illustrates the predicted load-CMOD curve for an unnotched beam in three-point bending (Fig. 14 in the PeriPy manuscript). Equivalent results obtained using my Matlab/C code are included (trilinear model, surface corrections).

Beam_4_UN_PeriPy

bb515 commented 3 years ago

If stiffness corrections were applied, note that incorrect stiffness corections could also be the issue. A unit test for the bilinear and trilinear damage models would be a good test for this.

Perhaps test one single peridynamic bond and see if it behaves as expected.

Alternatively construct a very simple 2D trilinear example with exactly the same geometry/boundary conditions on MATLAB and PeriPy. Save the MATLAB data as "expected.mat". Does the PeriPy simulation data match exactly the data "expected.mat" (within machine tolerance? - i.e., use np.allclose(actual, expected) and set an appropriate tolerance).

In constructing the test it may become clear what is wrong exactly.

mark-hobbs commented 3 years ago

I think this issue was due to a poorly constructed input file and is not related to the damage model. This could have easily been avoided by visually verifying that the correct nodes were constrained etc. See discussion (Post-processing #111) for ideas on avoiding this issue again.