fix move all move/mesh viblin

Submitted by JoG on Fri, 09/08/2017 - 08:33

I updated my LIGGGHTS version from 3.4.1 to 3.7.0. I can run my cases as usual. However, in some cases I use the command

fix move all move/mesh mesh plateMesh viblin axis -1. 0 0 order 6 amplitude 9.1921529142e-03 3.9214650496e-03 3.5675133623e-03 1.7885852357e-03 1.0341196266e-03 2.1750110172e-04 phase -1.1178244768e+00 -2.5012171783e+00 1.0835842279e+00 -2.7415575968e+00 -3.4168127884e+00 1.5499497574e+00 period 5.4625439049e+02 3.7999999186e-01 2.9650316014e+02 1.8999999621e-01 1.2666668904e-01 1.2924680176e+02

This results now in the error

ERROR: Mesh (id plateMesh): Mesh elements have been lost / left the domain. Please use 'boundary m m m' or scale/translate/rotate the mesh or change its dynamics (../multi_node_mesh_parallel_I.h:680)

Comment from the off: Only Chuck Norris is allowed to compute further, sorry about that. (../multi_node_mesh_parallel_I.h:680)

When run the same input file in version 3.4.1, it works perfectly like before.

NielsD | Fri, 10/13/2017 - 16:22

Hi JoG,

I already noticed that bug. The new fix move /mesh within version 3.7 calculates wrong amplitudes for the mesh elements. All amplitudes are set to one meter.
I am currently checking the functions of wiggle, viblin, riggle and vibrot for additional bugs. I try to fix them hopefully the functions could be fixed until the next release.

Cheers
Niels

JoG | Wed, 10/18/2017 - 09:42

Hi Niels,

thank you for having a look. I just saw that you developed this feature, it usually is very useful for my simulations, thank you for sharing it!

Best,

Johannes

NielsD | Mon, 10/23/2017 - 14:29

Hi Johannes,

I have found the bugs. The bug and fix is listed below. You could change it in the cpp file and recompile your version.

mesh_mover_rotation.cpp [line(363-365)]
bug:
phi[j] = force->numeric(FLERR, arg[12+j]);
ampl[j] = force->numeric(FLERR, arg[13+ord+j]);
omega[j] = 2.*M_PI/force->numeric(FLERR, arg[14+2*ord+j]);

fix:
ampl[j] = force->numeric(FLERR, arg[12+j]);
phi[j] = force->numeric(FLERR, arg[13+ord+j]);
omega[j] = 2.*M_PI/force->numeric(FLERR, arg[14+2*ord+j]);

mesh_mover_linear.cpp [line(315-317)]
bug:
phi[j] = force->numeric(FLERR, arg[8+j]);
ampl[j] = force->numeric(FLERR, arg[9+ord+j]);
omega[j] = 2.*M_PI/force->numeric(FLERR, arg[10+2*ord+j]);

fix:
ampl[j] = force->numeric(FLERR, arg[8+j]);
phi[j] = force->numeric(FLERR, arg[9+ord+j]);
omega[j] = 2.*M_PI/force->numeric(FLERR, arg[10+2*ord+j]);

Cheers

Niels

JoG | Fri, 11/03/2017 - 12:08

Hello Niels,

thank you so much! I just had a look at the forum and saw your response, I recompiled and it works! Great, thank you very much.

Best,
Johannes