Apply clang-format to source tree
[alexxy/gromacs.git] / src / gromacs / math / densityfittingforce.cpp
index 15c6ebce6be827cfc5024e9ab3620f793a739dbc..ff4f26fbd93cfc8eef4b1945247a2e3c7863f25d 100644 (file)
@@ -58,43 +58,42 @@ namespace gmx
  */
 class DensityFittingForce::Impl
 {
-    public:
-        /*! \brief Construct densityfitting force implementation from
-         * spread of function used to generate the density and spread range.
-         * \param[in] kernelShapeParameters determine the shape of the spreading kernel
-         */
-        explicit Impl(const GaussianSpreadKernelParameters::Shape &kernelShapeParameters);
-        //! \copydoc DensityFittingForce::evaluateForce(const DensitySpreadKernelParameters::PositionAndAmplitude & localParameters, basic_mdspan<const float, dynamicExtents3D> densityDerivative)
-        RVec evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitude &localParameters, basic_mdspan<const float, dynamicExtents3D> densityDerivative);
-        //! The width of the Gaussian in lattice spacing units
-        DVec                                 sigma_;
-        //! The spread range in lattice points
-        IVec                                 latticeSpreadRange_;
-        //! The three one-dimensional Gaussians that are used in the force calculation
-        std::array<GaussianOn1DLattice, DIM> gauss1d_;
-        //! The outer product of a Gaussian along the z and y dimension
-        OuterProductEvaluator                outerProductZY_;
+public:
+    /*! \brief Construct densityfitting force implementation from
+     * spread of function used to generate the density and spread range.
+     * \param[in] kernelShapeParameters determine the shape of the spreading kernel
+     */
+    explicit Impl(const GaussianSpreadKernelParameters::Shape& kernelShapeParameters);
+    //! \copydoc DensityFittingForce::evaluateForce(const DensitySpreadKernelParameters::PositionAndAmplitude & localParameters, basic_mdspan<const float, dynamicExtents3D> densityDerivative)
+    RVec evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitude& localParameters,
+                       basic_mdspan<const float, dynamicExtents3D> densityDerivative);
+    //! The width of the Gaussian in lattice spacing units
+    DVec sigma_;
+    //! The spread range in lattice points
+    IVec latticeSpreadRange_;
+    //! The three one-dimensional Gaussians that are used in the force calculation
+    std::array<GaussianOn1DLattice, DIM> gauss1d_;
+    //! The outer product of a Gaussian along the z and y dimension
+    OuterProductEvaluator outerProductZY_;
 };
 
-DensityFittingForce::Impl::Impl(const GaussianSpreadKernelParameters::Shape &kernelShapeParameters)
-    : sigma_ {kernelShapeParameters.sigma_},
-latticeSpreadRange_ {
-    kernelShapeParameters.latticeSpreadRange()
-},
-gauss1d_({GaussianOn1DLattice(latticeSpreadRange_[XX], sigma_[XX]),
-          GaussianOn1DLattice(latticeSpreadRange_[YY], sigma_[YY]),
-          GaussianOn1DLattice(latticeSpreadRange_[ZZ], sigma_[ZZ])})
+DensityFittingForce::Impl::Impl(const GaussianSpreadKernelParameters::Shape& kernelShapeParameters) :
+    sigma_{ kernelShapeParameters.sigma_ },
+    latticeSpreadRange_{ kernelShapeParameters.latticeSpreadRange() },
+    gauss1d_({ GaussianOn1DLattice(latticeSpreadRange_[XX], sigma_[XX]),
+               GaussianOn1DLattice(latticeSpreadRange_[YY], sigma_[YY]),
+               GaussianOn1DLattice(latticeSpreadRange_[ZZ], sigma_[ZZ]) })
 {
 }
 
-RVec DensityFittingForce::Impl::evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitude &localParameters,
+RVec DensityFittingForce::Impl::evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitudelocalParameters,
                                               basic_mdspan<const float, dynamicExtents3D> densityDerivative)
 {
-    const IVec closestLatticePoint(
-            roundToInt(localParameters.coordinate_[XX]),
-            roundToInt(localParameters.coordinate_[YY]),
-            roundToInt(localParameters.coordinate_[ZZ]));
-    const auto spreadRange = spreadRangeWithinLattice(closestLatticePoint, densityDerivative.extents(), latticeSpreadRange_);
+    const IVec closestLatticePoint(roundToInt(localParameters.coordinate_[XX]),
+                                   roundToInt(localParameters.coordinate_[YY]),
+                                   roundToInt(localParameters.coordinate_[ZZ]));
+    const auto spreadRange = spreadRangeWithinLattice(
+            closestLatticePoint, densityDerivative.extents(), latticeSpreadRange_);
 
     // do nothing if the added Gaussian will never reach the lattice
     if (spreadRange.empty())
@@ -106,23 +105,24 @@ RVec DensityFittingForce::Impl::evaluateForce(const GaussianSpreadKernelParamete
     {
         // multiply with amplitude so that Gauss3D = (amplitude * Gauss_x) * Gauss_y * Gauss_z
         const float gauss1DAmplitude = dimension > XX ? 1.0 : localParameters.amplitude_;
-        gauss1d_[dimension].spread(gauss1DAmplitude, localParameters.coordinate_[dimension] - closestLatticePoint[dimension]);
+        gauss1d_[dimension].spread(gauss1DAmplitude, localParameters.coordinate_[dimension]
+                                                             - closestLatticePoint[dimension]);
     }
 
-    const auto  spreadZY         = outerProductZY_(gauss1d_[ZZ].view(), gauss1d_[YY].view());
-    const auto  spreadX          = gauss1d_[XX].view();
-    const IVec  spreadGridOffset(latticeSpreadRange_[XX] - closestLatticePoint[XX],
-                                 latticeSpreadRange_[YY] - closestLatticePoint[YY],
-                                 latticeSpreadRange_[ZZ] - closestLatticePoint[ZZ]);
+    const auto spreadZY = outerProductZY_(gauss1d_[ZZ].view(), gauss1d_[YY].view());
+    const auto spreadX  = gauss1d_[XX].view();
+    const IVec spreadGridOffset(latticeSpreadRange_[XX] - closestLatticePoint[XX],
+                                latticeSpreadRange_[YY] - closestLatticePoint[YY],
+                                latticeSpreadRange_[ZZ] - closestLatticePoint[ZZ]);
 
-    const DVec differenceVectorScale  =
-    {1. / (square(sigma_[XX])), 1. / (square(sigma_[YY])), 1. / (square(sigma_[ZZ]))};
-    const DVec differenceVectorOffset =
-        scaleByVector(spreadRange.begin().toDVec() - localParameters.coordinate_.toDVec(), differenceVectorScale);
+    const DVec differenceVectorScale  = { 1. / (square(sigma_[XX])), 1. / (square(sigma_[YY])),
+                                         1. / (square(sigma_[ZZ])) };
+    const DVec differenceVectorOffset = scaleByVector(
+            spreadRange.begin().toDVec() - localParameters.coordinate_.toDVec(), differenceVectorScale);
 
-    DVec       differenceVector = differenceVectorOffset;
+    DVec differenceVector = differenceVectorOffset;
 
-    DVec       force = {0., 0., 0.};
+    DVec force = { 0., 0., 0. };
 
     for (int zLatticeIndex = spreadRange.begin()[ZZ]; zLatticeIndex < spreadRange.end()[ZZ];
          ++zLatticeIndex, differenceVector[ZZ] += differenceVectorScale[ZZ])
@@ -135,53 +135,51 @@ RVec DensityFittingForce::Impl::evaluateForce(const GaussianSpreadKernelParamete
         {
             auto       ySliceOfDerivative = zSliceOfDerivative[yLatticeIndex];
             const auto zyPrefactor        = spreadZY(zLatticeIndex + spreadGridOffset[ZZ],
-                                                     yLatticeIndex + spreadGridOffset[YY]);
+                                              yLatticeIndex + spreadGridOffset[YY]);
 
             differenceVector[XX] = differenceVectorOffset[XX];
             for (int xLatticeIndex = spreadRange.begin()[XX]; xLatticeIndex < spreadRange.end()[XX];
                  ++xLatticeIndex, differenceVector[XX] += differenceVectorScale[XX])
             {
-                const double preFactor = zyPrefactor *
-                    spreadX[xLatticeIndex + spreadGridOffset[XX]] * ySliceOfDerivative[xLatticeIndex];
+                const double preFactor = zyPrefactor * spreadX[xLatticeIndex + spreadGridOffset[XX]]
+                                         * ySliceOfDerivative[xLatticeIndex];
                 force += preFactor * differenceVector;
             }
         }
     }
-    return localParameters.amplitude_*force.toRVec();
+    return localParameters.amplitude_ * force.toRVec();
 }
 
 /********************************************************************
  * DensityFittingForce
  */
 
-DensityFittingForce::DensityFittingForce(const GaussianSpreadKernelParameters::Shape &kernelShapeParameters) :
+DensityFittingForce::DensityFittingForce(const GaussianSpreadKernelParameters::ShapekernelShapeParameters) :
     impl_(new Impl(kernelShapeParameters))
 {
 }
 
-RVec DensityFittingForce::evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitude &localParameters,
+RVec DensityFittingForce::evaluateForce(const GaussianSpreadKernelParameters::PositionAndAmplitudelocalParameters,
                                         basic_mdspan<const float, dynamicExtents3D> densityDerivative)
 {
     return impl_->evaluateForce(localParameters, densityDerivative);
 }
 
-DensityFittingForce::~DensityFittingForce()
-{
-}
+DensityFittingForce::~DensityFittingForce() {}
 
-DensityFittingForce::DensityFittingForce(const DensityFittingForce &other)
-    impl_(new Impl(*other.impl_))
+DensityFittingForce::DensityFittingForce(const DensityFittingForce& other) :
+    impl_(new Impl(*other.impl_))
 {
 }
 
-DensityFittingForce &DensityFittingForce::operator=(const DensityFittingForce &other)
+DensityFittingForce& DensityFittingForce::operator=(const DensityFittingForce& other)
 {
     *impl_ = *other.impl_;
     return *this;
 }
 
-DensityFittingForce::DensityFittingForce(DensityFittingForce &&) noexcept = default;
+DensityFittingForce::DensityFittingForce(DensityFittingForce&&) noexcept = default;
 
-DensityFittingForce &DensityFittingForce::operator=(DensityFittingForce &&) noexcept = default;
+DensityFittingForce& DensityFittingForce::operator=(DensityFittingForce&&) noexcept = default;
 
 } // namespace gmx