GROMACS: src/gromacs/ewald/pme_pp.h | Fossies




GROMACS: src/gromacs/ewald/pme_pp.h | Fossies


Fossies” – the Fresh Open Source Software Archive

Member “gromacs-2021.3/src/gromacs/ewald/pme_pp.h” (18 Aug 2021, 5141 Bytes) of package /linux/privat/gromacs-2021.3.tar.gz:


As a special service “Fossies” has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option.
Alternatively you can here view or download the uninterpreted source code file.
For more information about “pme_pp.h” see the Fossies “Dox” file reference documentation.

    1 /*
    2  * This file is part of the GROMACS molecular simulation package.
    3  *
    4  * Copyright (c) 2020, by the GROMACS development team, led by
    5  * Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
    6  * and including many others, as listed in the AUTHORS file in the
    7  * top-level source directory and at http://www.gromacs.org.
    8  *
    9  * GROMACS is free software; you can redistribute it and/or
   10  * modify it under the terms of the GNU Lesser General Public License
   11  * as published by the Free Software Foundation; either version 2.1
   12  * of the License, or (at your option) any later version.
   13  *
   14  * GROMACS is distributed in the hope that it will be useful,
   15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   17  * Lesser General Public License for more details.
   18  *
   19  * You should have received a copy of the GNU Lesser General Public
   20  * License along with GROMACS; if not, see
   21  * http://www.gnu.org/licenses, or write to the Free Software Foundation,
   22  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
   23  *
   24  * If you want to redistribute modifications to GROMACS, please
   25  * consider that scientific software is very special. Version
   26  * control is crucial - bugs must be traceable. We will be happy to
   27  * consider code for inclusion in the official distribution, but
   28  * derived work must not be called official GROMACS. Details are found
   29  * in the README & COPYING files - if they are missing, get the
   30  * official version at http://www.gromacs.org.
   31  *
   32  * To help us fund GROMACS development, we humbly ask that you cite
   33  * the research papers on the package. Check out http://www.gromacs.org.
   34  */
   35 /*! internal file
   36  *
   37  * brief This file contains function declarations necessary for
   38  * mananging the PP side of PME-only ranks.
   39  *
   40  * author Berk Hess <hess@kth.se>
   41  * author Mark Abraham <mark.j.abraham@gmail.com>
   42  * ingroup module_ewald
   43  */
   44 
   45 #ifndef GMX_EWALD_PME_PP_H
   46 #define GMX_EWALD_PME_PP_H
   47 
   48 #include "gromacs/math/vectypes.h"
   49 #include "gromacs/utility/basedefinitions.h"
   50 
   51 struct gmx_wallcycle;
   52 struct interaction_const_t;
   53 struct t_commrec;
   54 struct t_forcerec;
   55 
   56 class GpuEventSynchronizer;
   57 
   58 namespace gmx
   59 {
   60 class ForceWithVirial;
   61 class PmePpCommGpu;
   62 } // namespace gmx
   63 
   64 /*! brief Send the charges and maxshift to out PME-only node. */
   65 void gmx_pme_send_parameters(const t_commrec*           cr,
   66                              const interaction_const_t* ic,
   67                              gmx_bool                   bFreeEnergy_q,
   68                              gmx_bool                   bFreeEnergy_lj,
   69                              real*                      chargeA,
   70                              real*                      chargeB,
   71                              real*                      sqrt_c6A,
   72                              real*                      sqrt_c6B,
   73                              real*                      sigmaA,
   74                              real*                      sigmaB,
   75                              int                        maxshift_x,
   76                              int                        maxshift_y);
   77 
   78 /*! brief Send the coordinates to our PME-only node and request a PME calculation */
   79 void gmx_pme_send_coordinates(t_forcerec*           fr,
   80                               const t_commrec*      cr,
   81                               const matrix          box,
   82                               const rvec*           x,
   83                               real                  lambda_q,
   84                               real                  lambda_lj,
   85                               bool                  computeEnergyAndVirial,
   86                               int64_t               step,
   87                               bool                  useGpuPmePpComms,
   88                               bool                  reinitGpuPmePpComms,
   89                               bool                  sendCoordinatesFromGpu,
   90                               GpuEventSynchronizer* coordinatesReadyOnDeviceEvent,
   91                               gmx_wallcycle*        wcycle);
   92 
   93 /*! brief Tell our PME-only node to finish */
   94 void gmx_pme_send_finish(const t_commrec* cr);
   95 
   96 /*! brief Tell our PME-only node to reset all cycle and flop counters */
   97 void gmx_pme_send_resetcounters(const t_commrec* cr, int64_t step);
   98 
   99 /*! brief PP nodes receive the long range forces from the PME nodes */
  100 void gmx_pme_receive_f(gmx::PmePpCommGpu*    pmePpCommGpu,
  101                        const t_commrec*      cr,
  102                        gmx::ForceWithVirial* forceWithVirial,
  103                        real*                 energy_q,
  104                        real*                 energy_lj,
  105                        real*                 dvdlambda_q,
  106                        real*                 dvdlambda_lj,
  107                        bool                  useGpuPmePpComms,
  108                        bool                  receivePmeForceToGpu,
  109                        float*                pme_cycles);
  110 
  111 /*! brief Tell our PME-only node to switch to a new grid size */
  112 void gmx_pme_send_switchgrid(const t_commrec* cr, ivec grid_size, real ewaldcoeff_q, real ewaldcoeff_lj);
  113 
  114 #endif

Read more here: Source link