Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Film compression by reducing the distance of two planar hard walls #2

Closed
Suvendu86 opened this issue Jun 1, 2012 · 6 comments
Closed
Assignees
Milestone

Comments

@Suvendu86
Copy link

Hi Marcus,

studying planar thin films, we have realized that Dynamo has some problems in
compressing the system along one single spatial direction.

For our purpose, it would be fine if the code could include the following feature:

  1. Initialize the system with a given values of N, Lx, Ly and Lz,
    where Lz is the distance between two planar hard walls

  2. Keeping N, Lx and Ly constant, reduce Lz gradually until a desired value
    Lz_final is reached. That is all.

This would allow us to conveniently achieve any combination of average
density and wall-to-wall separation, a necessary condition for our
present studies.

Cheers,
Fathollah

@ghost ghost assigned toastedcrumpets Jun 2, 2012
@toastedcrumpets
Copy link
Collaborator

This feature was delayed until DynamO 1.4 as it requires a file format change.

At the moment, walls do not support polydisperse interactions. DynamO 1.3 was to be a absolutely stable version for some ongoing projects so I decided to wait till 1.4 for major features. Its an easy change to implement but it will require changing the file format.

I'll post in here with the patch that implements polydisperse walls, then we can talk about the compression problem, it is easy to compress in two dimensions and use a wall in the other, but not easy to compress in just one dimension.

However, I think compressing in two dimensions will be fine for you, correct me if I'm wrong?

Marcus

@Suvendu86
Copy link
Author

Hello Marcus,

In this project, we are interested to study 3D system. We are not interested in 2D.
We will do the following:

  1. Initialize the system with Lx, Ly, and Lz, where Lz is the distance between walls. Of course particle number is fixed.

  2. Now we want to keep the volume fraction fixed and vary the wall-to-wall distance.
    For ex., wall-to-wall distances are 2.0d, 2.1d, 2.3d, 2.4d, 2.5d, 2.6d, ----, 4.0d, 5.0d, where d=average particle diameter

  3. Then we change the volume fraction and repeat the above wall-to-wall distances.

So I do not mind to compress Lx and Ly .

Please let me know if you have any questions.

best regards,
Suvendu

@toastedcrumpets
Copy link
Collaborator

Hi Suvendu,
Well, I finally got around to implementing this into DynamO, sorry for the delay. I've attached a configuration which is an example of a polydisperse system interacting with walls correctly.
Example Polydisperse Wall Configuration

But, you will have problems using compression, as there is a fundamental problem with neighbour lists and Locals in compression dynamics. I've put a new issue (Issue #17) on the tracker to follow this, but it will take a long time for me to get around to fixing this (its a very specialized use case of DynamO which is not relevant to my research at the moment). In the meantime, you can use the workaround I've posted in Issue #17.
Marcus

@toastedcrumpets
Copy link
Collaborator

I did some more work on this problem and decided to disable the optimisations for local events completely. They now work with compression too.
This work was carried out in the 9bba687 commit

@Suvendu86
Copy link
Author

Dear Marcus,
Many thanks for the update, and I would like to test the code.
It would be nice if you please send me the command line to prepare and compress the system.

best wishes,
Suvendu

@toastedcrumpets
Copy link
Collaborator

I first prepared a appropriate polydisperse simulation, using
dynamod -m26
I then edited the configuration file by hand.
I first checked how big the simulation was by looking at
<SimulationSize x="1.40000000000000e+01" y="1.40000000000000e+01" z="1.40000000000000e+01"/>
As I want to add walls in one direction (lets pick the x direction), I decide to make the system large in that dimension (to stop particles wrapping around via the periodic boundary conditions). So I change it to
<SimulationSize x="30" y="1.40000000000000e+01" z="1.40000000000000e+01"/>
Now that I have room I add some wall. I did this by replacing

<Locals/>

with

<Locals>
  <Local Type="Wall" Name="LowWall" Elasticity="1" Diameter="D" Range="All">
    <Norm x="1" y="0" z="0"/>
    <Origin x="-8" y="0" z="0"/>
  </Local>
  <Local Type="Wall" Name="HighWall" Elasticity="1" Diameter="D" Range="All">
    <Norm x="-1" y="0" z="0"/>
    <Origin x="+8" y="0" z="0"/>
  </Local>
</Locals>

I put the walls at +- 8 for the following reason. The system is 14x14x14 before I resized it and all particles have a diameter smaller than 1. This means that all particles are somewhere in the range +7 to -7 and cannot interact with anything if its outside the range +8 to -8. So If I make the system bigger, and put walls at +-8 then I guarantee there are no overlaps.

I now turn off the shearing by replacing

<BC Type="LE" DXD="0.00000000000000e+00" Rate="1.00000000000000e+00"/>

with

<BC Type="PBC"/>

And by changing

<Global Type="ShearingCells" Name="SchedulerNBList" NeighbourhoodRange="9.18327587973054e-01" Range="All"/>

to

<Global Type="Cells" Name="SchedulerNBList" NeighbourhoodRange="9.18327587973054e-01" Range="All"/>

And I'm done. An example has been uploaded here

If you want to try compression, just run the configuration with the compression engine on

dynarun --engine 3 config.out.xml.bz2

and it should just work.
Marcus

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants