tum-pbs / DMCF

Guaranteed Conservation of Momentum for Learning Particle-based Fluid Dynamics (NeurIPS '22)
MIT License
49 stars 10 forks source link

Question about ASCC #17

Closed WangLeft closed 5 months ago

WangLeft commented 6 months ago

Hi! I noticed in the sym_net.py that there's ans = tf.concat([ans, feats[tf.shape(pos[0])[0]:]], axis=0) if self.use_bnds=False. Is it necessary to include fluid and obstacle particles during convolution calculations when using ASCC, (with inp_positions and out_positions both set as all_pos)?

Prantl commented 6 months ago

Exactly. In order for the network to be able to take boundaries into account, the boundaries must be added in the ASCC layer at the latest. The ASCC calculates a local position delta in relation to all neighboring particles. If the boundary particles are missing, the ASCC cannot calculate a relative force. For example, if there is only one single particle, the result of the ASCC layer would always be 0, as otherwise it would break the antisymmetry rule. A repulsive force can only be calculated if a second (boundary ) particle is added.

The “use_bnds” parameter is only used to decide whether the boundaries are taken into account from beginning in the feature accumulation (HRNet). Since there are usually a lot of boundary particles, this can affect the efficiency of the network. However, the network can utilize more input data for longer. However, if you set "use_bnds" we just use the raw input values in the ASCC layer (i.e. normals or just a constant scalar).