Semi-lagrangian with particule tracking

Clearly defined bug reports and their fixes
Post Reply
AdrienG
Posts: 6
Joined: 21 Nov 2018, 13:59
Antispam: Yes

Semi-lagrangian with particule tracking

Post by AdrienG »

Hello,

I am trying to use the semi-Lagrangian solver to advect a variable while modeling ice-flow. My setup works fine in serial but in parallel the solver got stuck (no error or crash but infinite loop). It seems that the issue come from the ChangeParticulePartition routine or the LocateParticule routine. My understanding is that when a particle changes of partition, it is not correctly deleted from the original partition ?

Can I get some help on this ?

Attached my setup on 4 partitions.

Thanks a lot,
Adrien
Attachments
Test_lagrange.zip
(683.04 KiB) Downloaded 19 times
Rich_B
Posts: 161
Joined: 24 Aug 2009, 20:18

Re: Semi-lagrangian with particule tracking

Post by Rich_B »

Hello,

Would you please upload your serial version, the working version?

If you could also state the command you used to create the partitions, that would help.

Thanks, Rich.
AdrienG
Posts: 6
Joined: 21 Nov 2018, 13:59
Antispam: Yes

Re: Semi-lagrangian with particule tracking

Post by AdrienG »

Hello Rich,

Thanks a lot for your answer. Attached the serial version which is working. To create the partition i simply used the command :

Code: Select all

ElmerGrid 2 2 taco3D -autoclean -metis 4
where taco3D is an existing serial mesh. I tried different things to makes the partition but the problem remains the same.

Thanks again for your help,
Adrien
Attachments
Test_Lagrange_Serial.zip
(673.27 KiB) Downloaded 19 times
raback
Site Admin
Posts: 4396
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Semi-lagrangian with particule tracking

Post by raback »

Hi

The advector has several modes. By default we have nodal variables used for advecting. However, any of the following keywords (just one) overwrites it:

Code: Select all

  Advect Elemental = Logical True
  Advect Ip = Logical True
  Advect Dg = Logical True
You could try any of these. The elemental is just one point in each element but the others have several dofs for each element thereby maintaining the accuracy.

The problem in parallel is that the particles that are initially at the nodes may be exactly at the partition interface and then the algorhitms that try to locate them end up to some kind of loop. This is not observed as easily if the particles are not at the interface to start with. Of course this issue should be resolved as well...

-Peter
AdrienG
Posts: 6
Joined: 21 Nov 2018, 13:59
Antispam: Yes

Re: Semi-lagrangian with particule tracking

Post by AdrienG »

Hi,

I tried the different modes but this does not seem to solve the issue...

It seems that the solver is looping because some particles should be deleted from the partition but in fact are not deleted. The ChangeParticlePartition is looping on this :

Code: Select all

ChangeParticlePartition: Sending particles among partitions
ChangeParticlePartition: Number of active partitions: 2
ChangeParticlePartition: Number of particles to send: 17
ChangeParticlePartition: Global number of particles to sent: 46
ChangeParticlePartition: Number of particles to receive: 4
ChangeParticlePartition: Global number of particles to receive: 46
ChangeParticlePartition: Total number of particles to sent: 17
ChangeParticlePartition: Collected particles from partitions: 17
ChangeParticlePartition: Transferring real entries between particles: 15
ChangeParticlePartition: Transferring integer entries between particles: 2
ChangeParticlePartition: Size of data buffer: 1118
ChangeParticlePartition: Now sending particle data
ChangeParticlePartition: Now receiving particle data
DeleteLostParticles: Number of active particles: 5701
DeleteLostParticles: No particles need to be deleted
ChangeParticlePartition: Information exchange done

ChangeParticlePartition: Sending particles among partitions
ChangeParticlePartition: Number of active partitions: 2
ChangeParticlePartition: Number of particles to send: 4
ChangeParticlePartition: Global number of particles to sent: 46
ChangeParticlePartition: Number of particles to receive: 17
ChangeParticlePartition: Global number of particles to receive: 46
ChangeParticlePartition: Total number of particles to sent: 4
ChangeParticlePartition: Collected particles from partitions: 4
ChangeParticlePartition: Transferring real entries between particles: 15
ChangeParticlePartition: Transferring integer entries between particles: 2
ChangeParticlePartition: Size of data buffer: 1092
ChangeParticlePartition: Now sending particle data
ChangeParticlePartition: Now receiving particle data
DeleteLostParticles: Number of active particles: 5701
DeleteLostParticles: No particles need to be deleted
ChangeParticlePartition: Information exchange done
It seems to me that there is an issue with the DeleteLostParticles routine ?

Adrien
AdrienG
Posts: 6
Joined: 21 Nov 2018, 13:59
Antispam: Yes

Re: Semi-lagrangian with particule tracking

Post by AdrienG »

Hi,

So I could not properly fix the issue. For now, I just did a little hack for limiting the number of iteration in the LocateParticle subroutine since the function ChangeParticlePartition never return zero in my case. See line 4288 in ParticleUtils.F90.

This allows the solver to run but some little bugs are present when the advected field cross a partition.

I will keep working like this for now but that would be helpful to find out what's wrong ? Otherwise the semi-lagrangian solver is a great improvement for transport problem. Thanks for the work done!

Cheers,
Adrien
raback
Site Admin
Posts: 4396
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Semi-lagrangian with particule tracking

Post by raback »

Hi,

I had a look at the case. It seems that some particles that were not even moving resulted to an eternal loop trying to settle the owner partition. I tried to fix that. I hope the results are now better, or at least the wrong results are obtained faster as we are not in an eternal loop ;-)

The changes are in “devel” branch since a few minutes.

-Peter
Post Reply