# How to get position of floating particles

edited November 12

I am reading through to understand the source code for DualSPHysics. Can someone help me understand where the positions of the floating particles are stored. Where I think the variables are stored do not give me the values I would expect to see. I added a few print statements just after the for loop at line 940 of JSphCpuSingle.cpp. below is the full modified loop.

int fxav = 0;

int fyav = 0;

int fzav = 0;

int psize = 0;

for(unsigned fp=fpini;fp<fpfin;fp++){

printf("Particle: %d x: %f y:%f z:%f\n",fp,Posc[fp].x, Posc[fp].y, Posc[fp].z);

fxav += Posc[fp].x;

fyav += Posc[fp].y;

fzav += Posc[fp].z;

psize++;

const int p=FtRidp[fp];

if(p!=UINT_MAX){

tfloat4 *velrhop=Velrhopc+p;

//-Compute and record position displacement. | Calcula y graba desplazamiento de posicion.

const double dx=dt*double(velrhop->x);

const double dy=dt*double(velrhop->y);

const double dz=dt*double(velrhop->z);

UpdatePos(Posc[p],dx,dy,dz,false,p,Posc,Dcellc,Codec);

//-Compute and record new velocity. | Calcula y graba nueva velocidad.

velrhop->x=fvel.x+(fomega.y*dist.z-fomega.z*dist.y);

velrhop->y=fvel.y+(fomega.z*dist.x-fomega.x*dist.z);

velrhop->z=fvel.z+(fomega.x*dist.y-fomega.y*dist.x);

}

}

fxav = fxav/psize;

fyav = fyav/psize;

fzav = fzav/psize;

printf("Average Floating Particle Position: \n x: %f y: %f z: %f\n",fxav, fyav, fzav);

Here is the output:

Particle: 0 x: -0.500000 y:-0.500000 z:-0.250000

Particle: 1 x: -0.500000 y:-0.500000 z:-0.240000

Particle: 2 x: -0.500000 y:-0.500000 z:-0.230000

Particle: 3 x: -0.500000 y:-0.500000 z:-0.220000

Particle: 4 x: -0.500000 y:-0.490000 z:-0.250000

.......

Particle: 176 x: -0.270000 y:-0.470000 z:-0.250000

Particle: 177 x: -0.260000 y:-0.500000 z:-0.250000

Particle: 178 x: -0.260000 y:-0.500000 z:-0.240000

Average Floating Particle Position:

x: -0.260000 y: -0.500000 z: -0.240000

Here is a snippit of my case setup that shows sphere and floating settings:

<setmkbound mk="2"/>

<setdrawmode mode="full"/>

<point x="0.3" y="-0.3" z="0.0" />

</drawsphere>

<shapeout file="" />

</mainlist>

</commands>

</geometry>

<floatings>

<floating mkbound="2" rhopbody="800.0">

</floating>

</floatings>

So... the average position of the floating ball should be around .3 in the x and -.3 in the y, but this is not that values I am getting at the start of the sim. How do I figure out the position of the floating particles? can anyone give me some guidance? Obviously my understanding is wrong.