In the graph (not to scale), only particle 1 is interacting with the center particle, but 1,2,3,4,7 are all in the neighbor list of the center particle.
We devised a method which satisfies all these criteria using
``Maxwell's daemons'', in actuality a membrane at x=0: it is such that
if a fluid atom crosses x=0 from left to right, it passes through
without hindrance. But if it crosses x=0 from right to left, then it
could be elasticly reflected with probabilty p. The membrane
is otherwise transparent in the sense that particles on two
sides can interact. It is easy to see that particle number and energy
is conserved, thus making steady flow dynamically attractive. The heat
is removed by constant entropy/information input from the computer.
Here is more about the method.
We want to simulate fluid flow as close to nature as
possible, which means near the region of interest, there should be no
artificial force or perturbations of any kind. The fluid under
investigation should only be pushed by other fluids. Yet, heat
generated by viscous action must be removed from the simulation
cell. Another requirement is that the simulation should fall into
steady state readily, and it should be economical.
Machine Type | Execution time(s) | Performance | Compilation options |
---|---|---|---|
Pentium166 | 192.21 | 1(Unit) | gcc -O3 -ffast-math -finline-functions -fforce-mem -fforce-addr |
DEC AlphaStation200 4/233 | 127.31 | 1.510 | cc -O5 -om -ifo -migrate -inline speed -fp_reorder -non_shared |
DEC 3000 | 104.35 | 1.842 | *same as above* |
SGI Indy | 237.46 | 0.809 | cc -mips2 -O3 -kpicopt |
SGI Indigo 2 | 158.4 | 1.213 | *same as above* |
SPARC Station 4 | 355.31 | 0.541 | cc -xO4 -fsimple -dalign -fast |
SPARC Station 5 | 454.67 | 0.423 | *same as above* |
SPARC Classic | 1010.77 | 0.190 | *same as above* |
Xolas(1 processor) | 84.24 | 2.282 | cc -xO5 -xdepend -xarch=v8plus -xchip=ultra -fsimple -dalign |
It is impressive to us that it only took about 10 hours to simulate 6000 particles for 1,000,000 timesteps on a heavily loaded xolas0, which usually takes us a week!
The configuration
//====================================================== // User Specifications //====================================================== #define _APPLICATION "Test" #define _2DIM #define _NPROC 8 #define _LCFG #define _LCFG_READ "config2.dat" //#define _RPM 1 #define _NP 6000 #define _NSTEP 1000 #define _NDUMP 100 #define _NRESCALE 0 #define _NBL 80 #define _DT 0.001 #define _RC 2.5 #define _NNL 50 #define _TR 1.2 #define _CUBEX 150.0 #define _CUBEY 50.0 #define _PROP_MESH "mesh.out" #define _PROP_MESH_VX #define _PROP_MESH_VY #define _MESHX (53*3) #define _MESHY 53 #define _PROP_POSITION "pos.out"This is the output of the simulation
====================================================== Atomic Simulation Library/(C/C++) (Version 1.21) : Test Initializing... CFG: Loaded from config2.dat Basic parameters: particle number : 6000 Density : 0.800000, Temperature: 1.200000 Cube : 150.000000 X 50.000000 NEIB: Bin/DList: 53x17 bins, average 9.170667/50 neighbors MDFrame: Using Gear's 5-order corr-pred method PROP:Pos(pos.out)BIN Mesh(mesh.out,159x53)[Density Vx Vy] Spawning children (8)... Child 1:0--6 Child 2:7--13 Child 3:14--20 Child 4:21--27 Child 5:28--34 Child 6:35--40 Child 7:41--46 Child 0:47--52 Start running... 100 1.199459 4.563456 -0.69159692 200 1.188688 4.620878 -0.69169823 300 1.182552 4.625586 -0.69169808 400 1.201941 4.515919 -0.69169757 500 1.199589 4.524973 -0.69169805 600 1.191410 4.581781 -0.69169879 700 1.194896 4.564951 -0.69169861 800 1.199836 4.533135 -0.69169878 900 1.186185 4.594204 -0.69170014 1000 1.190483 4.544438 -0.69170024 Finished! Exiting... CFG: Wrote to config.dat ======================================================You can look at the source code here.