File size: 7,321 Bytes
10f2621 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | /** @defgroup PBSAMparm PBSAMparm class
* @brief Parameter which holds useful parameters for Poisson-boltzmann
* analytical method calculations
*/
/**
* @file pbsamparm.h
* @ingroup PBSAMparm
* @brief Contains declarations for class PBSAMparm
* @version $Id$
* @author Lisa Felberg
*
* @attention
* @verbatim
*
* APBS -- Adaptive Poisson-Boltzmann Solver
*
* Nathan A. Baker (nathan.baker@pnnl.gov)
* Pacific Northwest National Laboratory
*
* Additional contributing authors listed in the code documentation.
*
* Copyright (c) 2010-2020 Battelle Memorial Institute. Developed at the
* Pacific Northwest National Laboratory, operated by Battelle Memorial
* Institute, Pacific Northwest Division for the U.S. Department of Energy.
*
* Portions Copyright (c) 2002-2010, Washington University in St. Louis.
* Portions Copyright (c) 2002-2010, Nathan A. Baker.
* Portions Copyright (c) 1999-2002, The Regents of the University of
* California.
* Portions Copyright (c) 1995, Michael Holst.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the developer nor the names of its contributors may be
* used to endorse or promote products derived from this software without
* specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
* THE POSSIBILITY OF SUCH DAMAGE.
*
* @endverbatim
*/
#ifndef _PBSAMPARM_H_
#define _PBSAMPARM_H_
/* Generic header files */
#include "maloc/maloc.h"
#include "generic/vhal.h"
#include "generic/vstring.h"
/** @brief Number of things that can be written out in a single calculation
* @ingroup PBSAMparm
*/
#define CHR_MAXLEN 1000
#define PBSAMPARM_MAXWRITE 15
#define PBSAMPARM_MAXMOL 150
/**
* @brief Calculation type
* @ingroup PBSAMparm
*/
enum ePBSAMparm_CalcType {
//other methods disabled for now only auto currently implemented.
//PBSAMCT_MANUAL=0, /**< PBSAM-manual */
PBSAMCT_AUTO=1, /**< PBSAM-auto */
//PBSAMCT_NONE=2 /**< not defined */
};
/**
* @brief Declare PBSAMparm_CalcType type
* @ingroup PBSAMparm
*/
typedef enum ePBSAMparm_CalcType PBSAMparm_CalcType;
/**
* @ingroup PBSAMparm
* @author Lisa Felberg
* @brief Parameter structure for PBSAM-specific variables from input files
* @note If you add/delete/change something in this class, the member
* functions -- especially PBSAMparm_copy -- must be modified
* accordingly
*/
typedef struct sPBSAMparm {
PBSAMparm_CalcType type; /**< What type of PBSAM calculation? */
int parsed; /**< Has this structure been filled? (0 = no, 1 = yes) */
/* The only parms in addition to PBAM would be
IMAT and Selfpol */
int settolsp;
double tolsp;
double probe_radius;
double density;
int setsurf;
int surfct;
char surffil[PBSAMPARM_MAXMOL][CHR_MAXLEN];
int setimat;
int imatct;
char imatfil[PBSAMPARM_MAXMOL][CHR_MAXLEN];
int setexp;
int expct;
char expfil[PBSAMPARM_MAXMOL][CHR_MAXLEN];
} PBSAMparm;
/** @brief Construct PBSAMparm object
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param type Type of PBSAM calculation
* @returns Newly allocated and initialized PBSAMparm object
*/
VEXTERNC PBSAMparm* PBSAMparm_ctor(PBSAMparm_CalcType type);
/** @brief FORTRAN stub to construct PBSAMparm object ?????????!!!!!!!
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param thee Space for PBSAMparm object
* @param type Type of MG calculation
* @returns Success enumeration
*/
VEXTERNC Vrc_Codes PBSAMparm_ctor2(PBSAMparm *thee, PBSAMparm_CalcType type);
/** @brief Object destructor
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param thee Pointer to memory location of PBSAMparm object
*/
VEXTERNC void PBSAMparm_dtor(PBSAMparm **thee);
/** @brief FORTRAN stub for object destructor ?????????!!!!!!!!!!!!
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param thee Pointer to PBSAMparm object
*/
VEXTERNC void PBSAMparm_dtor2(PBSAMparm *thee);
/** @brief Consistency check for parameter values stored in object
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param thee PBSAMparm object
* @returns Success enumeration
*/
VEXTERNC Vrc_Codes PBSAMparm_check(PBSAMparm *thee);
/** @brief Parse an MG keyword from an input file
* @ingroup PBSAMparm
* @author Lisa Felberg
* @param thee PBSAMparm object
* @param tok Token to parse
* @param sock Stream for more tokens
* @returns Success enumeration (1 if matched and assigned; -1 if matched, but there's some sort
* of error (i.e., too few args); 0 if not matched)
*/
VEXTERNC Vrc_Codes PBSAMparm_parseToken(PBSAMparm *thee, char tok[VMAX_BUFSIZE],
Vio *sock);
/**
* @brief copy PBSAMparm object int thee.
* @ingroup PBSAMparm
* @author
* @param thee PBSAMparm object to be copied into
* @param parm PBSAMparm object.
*/
VEXTERNC void PBSAMparm_copy(PBSAMparm *thee, PBSAMparm *parm);
/**
* @brief Find sphere tolerance for coarse-graining
* @ingroup PBSAMparm
* @author
* @param thee PBSAMparm object to be copied into
* @param sock The stream from which parameter is taken
*/
VPRIVATE Vrc_Codes PBSAMparm_parseTolsp(PBSAMparm *thee, Vio *sock);
/**
* @brief Find vertex files for each molecule and save them
* @ingroup PBSAMparm
* @author
* @param thee PBSAMparm object to be copied into
* @param sock The stream from which parameter is taken
*/
VPRIVATE Vrc_Codes PBSAMparm_parseSurf(PBSAMparm *thee, Vio *sock);
/**
* @brief Find IMAT files for each molecule and save them
* @ingroup PBSAMparm
* @author
* @param thee PBSAMparm object to be copied into
* @param sock The stream from which parameter is taken
*/
VPRIVATE Vrc_Codes PBSAMparm_parseImat(PBSAMparm *thee, Vio *sock);
/**
* @brief Find expansion files for each molecule and save them
* @ingroup PBSAMparm
* @author
* @param thee PBSAMparm object to be copied into
* @param sock The stream from which parameter is taken
*/
VPRIVATE Vrc_Codes PBSAMparm_parseExp(PBSAMparm *thee, Vio *sock);
#endif
|