Exceeded iteration error while running with coarse grained force field

Hello,

I am trying to create a coarse grained model with polycarbonate. Now, I have created the corresbonding set-up and force field files, and the force field parameters are checked to be correct. However, after running with EMC, error may happen with exceeded iterations:

Error: core/grow.c:242 GrowError:
Exceeded maximum number of iterations (1000) at 41.09% for
\[main:poly:A\] {cluster, site, group.site} = {5, 1284, 0}.
p\[1284\] = {46.5317, 38.4515, 39.3473}, r = 72.055
Program aborted.

This error probably occurs, and is inevitable when ntotal are higher than 10,000. Could you please give me some advices to solve this problem?

CGPC.esh (345 Bytes)
CGPC.prm (708 Bytes)

Dear user,

Thank you for your question. Your approach contains a few mistakes. Your simulation should be performed in atomistic units. However, you are trying to use the standard force field, which in EMC defaults to a reduced force field. This means, that both Avogadro’s constant and the temperature are set to 1.

Avogadro’s constant nav is used to size your simulation as function of the provided density. This constant equals 0.6022141179 for atomistic units, which results in a 40% larger system volume than when the constant equals 1. See build.emc to find out how nav is used.

Setting the temperature to 1 for a simulation with otherwise atomistic units performs a simulation at a temperature of 1 Kelvin, which causes your simulation to fail due to lack of thermal mobility. I assume you would like to simulate at ambient conditions, i.e. at a pressure of 1 atm and a temperature of 300K.

Normally, this would mean your would have to set field_reduced false after defining field CGPC when using standard as force field. Unfortunately, emc.pl has a mistake, which means field_reduced is interpreted incorrectly. A work-around is to use opls instead. It has the same functional form as standard, not considering dihedral contributions, but defaults to atomistic units. The field_reduced issue will be remedied in future EMC versions.

I would like to point out that – in case of coarse-grained simulations – you do not necessarily have to define terminators. Instead, you can add :t or :term to the name of your repeat unit, which makes this unit both a repeat unit and a terminator group.

I noticed that you transposed sigma and epsilon under your ITEM NONBOND paragraph. This causes your length and energy scales to be incorrect. I changed them to be in the correct order. Subsequently, I would suggest using ITEM BOND etc. instead of ITEM BOND_AUTO. The latter is meant for types containing wildcards, which your types do not. As an aside, to be safe use tabs only instead of spaces as a separator. EMC can be somewhat picky.

Additionally, I noticed that you have a rather high angle constant for angle BCB. Is this what you meant? I would expect this constant to be 11 instead of 110, since this contribution is 10 times larger that the other two contributions. Could you share the original paper from which you distilled your constants? This would answer my question and would help the community.

The resulting EMC input is given by

CGPC.esh (404 Bytes)
CGPC.prm (732 Bytes)

I edited CGPC.esh and CGPC.prm to reflect the changes I discussed above.

Hello,

Thank you for your advice.

I carefully read your edited file, and the temperature setting is the main reason that makes my modelling not work. After setting the temperature to 300 K, I can successfully construct my system with coarse-grained force field. But my core mistake is setting the wrong type of FFMODE.

The force field was set based on this paper:

https://doi.org/10.1016/j.polymer.2019.05.045

It used Morse non-bond style and multi-harmonic bond and angle style, and I replaced it with LJ and harmonic parameters with close energy curve. The sigma and epsilon is transposed in the annotation because I write this script based on v9.4.4\examples\setup\environment\field\chemistry\field\stage\lj.prm, which is maybe incorrect on it. But the parameters in my script are right.