“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.
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