MCPcopy Create free account
hub / github.com/ElectroZybr/LatticeLab / compute

Method compute

Lattice/Engine/physics/VectorField.cpp:35–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

33}
34
35void VectorField::compute(const IForceField* forceField, AtomStorage& atoms, SpatialGrid& grid) {
36 if (forceField == nullptr) {
37 std::fill(field.begin(), field.end(), 0.0f);
38 std::fill(vectorField.begin(), vectorField.end(), glm::vec2(0.0f));
39 return;
40 }
41
42 const float z = static_cast<float>(sliceZ);
43 for (int y = 0; y < size.y; ++y) {
44 for (int x = 0; x < size.x; ++x) {
45 const float sampleX = std::min(static_cast<float>(x) * scale, static_cast<float>(domain.x));
46 const float sampleY = std::min(static_cast<float>(y) * scale, static_cast<float>(domain.y));
47 const auto sample = forceField->fieldAtPoint(atoms, grid, sampleX, sampleY, z);
48 const int index = x + size.x * y;
49 field[index] = sample.potential;
50 vectorField[index] = glm::vec2(sample.field.x, sample.field.y);
51 }
52 }
53}
54
55void VectorField::show() const {
56 for (int y = 0; y < size.y; ++y) {

Callers 2

updateVectorFieldMethod · 0.45

Calls 1

fieldAtPointMethod · 0.45

Tested by 1