From Water Drop Tank · v2. Edit this definition in its source simulation.
Source
behavior CollideD3Q19 for FreeSurfaceWater {
update when self.kind > 0.0 {
let omega = 1.0 / self.tau;
let cu0 = 0.0;
let equilibrium0 = 0.3333333333333333 * self.rho * (1.0 + 3.0 * (0.0) + 4.5 * (0.0) * (0.0) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force0 = 0.3333333333333333 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu0 * 0.0);
let cu1 = (-self.ux) + (-self.uy);
let equilibrium1 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.ux) + (-self.uy)) + 4.5 * ((-self.ux) + (-self.uy)) * ((-self.ux) + (-self.uy)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force1 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu1 * 0.0);
let cu2 = (-self.ux) + (-self.uz);
let equilibrium2 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.ux) + (-self.uz)) + 4.5 * ((-self.ux) + (-self.uz)) * ((-self.ux) + (-self.uz)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force2 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (-1.0 - self.uz) + 9.0 * cu2 * -1.0);
let cu3 = (-self.ux);
let equilibrium3 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * ((-self.ux)) + 4.5 * ((-self.ux)) * ((-self.ux)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force3 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu3 * 0.0);
let cu4 = (-self.ux) + self.uz;
let equilibrium4 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.ux) + self.uz) + 4.5 * ((-self.ux) + self.uz) * ((-self.ux) + self.uz) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force4 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (1.0 - self.uz) + 9.0 * cu4 * 1.0);
let cu5 = (-self.ux) + self.uy;
let equilibrium5 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.ux) + self.uy) + 4.5 * ((-self.ux) + self.uy) * ((-self.ux) + self.uy) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force5 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu5 * 0.0);
let cu6 = (-self.uy) + (-self.uz);
let equilibrium6 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.uy) + (-self.uz)) + 4.5 * ((-self.uy) + (-self.uz)) * ((-self.uy) + (-self.uz)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force6 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (-1.0 - self.uz) + 9.0 * cu6 * -1.0);
let cu7 = (-self.uy);
let equilibrium7 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * ((-self.uy)) + 4.5 * ((-self.uy)) * ((-self.uy)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force7 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu7 * 0.0);
let cu8 = (-self.uy) + self.uz;
let equilibrium8 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * ((-self.uy) + self.uz) + 4.5 * ((-self.uy) + self.uz) * ((-self.uy) + self.uz) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force8 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (1.0 - self.uz) + 9.0 * cu8 * 1.0);
let cu9 = (-self.uz);
let equilibrium9 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * ((-self.uz)) + 4.5 * ((-self.uz)) * ((-self.uz)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force9 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (-1.0 - self.uz) + 9.0 * cu9 * -1.0);
let cu10 = self.uz;
let equilibrium10 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * (self.uz) + 4.5 * (self.uz) * (self.uz) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force10 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (1.0 - self.uz) + 9.0 * cu10 * 1.0);
let cu11 = self.uy + (-self.uz);
let equilibrium11 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.uy + (-self.uz)) + 4.5 * (self.uy + (-self.uz)) * (self.uy + (-self.uz)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force11 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (-1.0 - self.uz) + 9.0 * cu11 * -1.0);
let cu12 = self.uy;
let equilibrium12 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * (self.uy) + 4.5 * (self.uy) * (self.uy) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force12 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu12 * 0.0);
let cu13 = self.uy + self.uz;
let equilibrium13 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.uy + self.uz) + 4.5 * (self.uy + self.uz) * (self.uy + self.uz) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force13 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (1.0 - self.uz) + 9.0 * cu13 * 1.0);
let cu14 = self.ux + (-self.uy);
let equilibrium14 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.ux + (-self.uy)) + 4.5 * (self.ux + (-self.uy)) * (self.ux + (-self.uy)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force14 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu14 * 0.0);
let cu15 = self.ux + (-self.uz);
let equilibrium15 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.ux + (-self.uz)) + 4.5 * (self.ux + (-self.uz)) * (self.ux + (-self.uz)) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force15 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (-1.0 - self.uz) + 9.0 * cu15 * -1.0);
let cu16 = self.ux;
let equilibrium16 = 0.05555555555555555 * self.rho * (1.0 + 3.0 * (self.ux) + 4.5 * (self.ux) * (self.ux) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force16 = 0.05555555555555555 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu16 * 0.0);
let cu17 = self.ux + self.uz;
let equilibrium17 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.ux + self.uz) + 4.5 * (self.ux + self.uz) * (self.ux + self.uz) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force17 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (1.0 - self.uz) + 9.0 * cu17 * 1.0);
let cu18 = self.ux + self.uy;
let equilibrium18 = 0.027777777777777776 * self.rho * (1.0 + 3.0 * (self.ux + self.uy) + 4.5 * (self.ux + self.uy) * (self.ux + self.uy) - 1.5 * (self.ux * self.ux + self.uy * self.uy + self.uz * self.uz));
let force18 = 0.027777777777777776 * (1.0 - omega * 0.5) * self.rho * (-self.gravity) * (3.0 * (0.0 - self.uz) + 9.0 * cu18 * 0.0);
set self.f0 = clamp(self.f0 + omega * (equilibrium0 - self.f0) + force0, -1000000.0, 1000000.0);
set self.f1 = clamp(self.f1 + omega * (equilibrium1 - self.f1) + force1, -1000000.0, 1000000.0);
set self.f2 = clamp(self.f2 + omega * (equilibrium2 - self.f2) + force2, -1000000.0, 1000000.0);
set self.f3 = clamp(self.f3 + omega * (equilibrium3 - self.f3) + force3, -1000000.0, 1000000.0);
set self.f4 = clamp(self.f4 + omega * (equilibrium4 - self.f4) + force4, -1000000.0, 1000000.0);
set self.f5 = clamp(self.f5 + omega * (equilibrium5 - self.f5) + force5, -1000000.0, 1000000.0);
set self.f6 = clamp(self.f6 + omega * (equilibrium6 - self.f6) + force6, -1000000.0, 1000000.0);
set self.f7 = clamp(self.f7 + omega * (equilibrium7 - self.f7) + force7, -1000000.0, 1000000.0);
set self.f8 = clamp(self.f8 + omega * (equilibrium8 - self.f8) + force8, -1000000.0, 1000000.0);
set self.f9 = clamp(self.f9 + omega * (equilibrium9 - self.f9) + force9, -1000000.0, 1000000.0);
set self.f10 = clamp(self.f10 + omega * (equilibrium10 - self.f10) + force10, -1000000.0, 1000000.0);
set self.f11 = clamp(self.f11 + omega * (equilibrium11 - self.f11) + force11, -1000000.0, 1000000.0);
set self.f12 = clamp(self.f12 + omega * (equilibrium12 - self.f12) + force12, -1000000.0, 1000000.0);
set self.f13 = clamp(self.f13 + omega * (equilibrium13 - self.f13) + force13, -1000000.0, 1000000.0);
set self.f14 = clamp(self.f14 + omega * (equilibrium14 - self.f14) + force14, -1000000.0, 1000000.0);
set self.f15 = clamp(self.f15 + omega * (equilibrium15 - self.f15) + force15, -1000000.0, 1000000.0);
set self.f16 = clamp(self.f16 + omega * (equilibrium16 - self.f16) + force16, -1000000.0, 1000000.0);
set self.f17 = clamp(self.f17 + omega * (equilibrium17 - self.f17) + force17, -1000000.0, 1000000.0);
set self.f18 = clamp(self.f18 + omega * (equilibrium18 - self.f18) + force18, -1000000.0, 1000000.0);
}
}Building blocks
These exact versions are included when you reuse this artifact.