File: GridSettings.h

package info (click to toggle)
ausaxs 1.1.8-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 72,592 kB
  • sloc: cpp: 49,853; ansic: 6,901; python: 730; makefile: 18
file content (53 lines) | stat: -rw-r--r-- 2,378 bytes parent folder | download
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
// SPDX-License-Identifier: LGPL-3.0-or-later
// Author: Kristian Lytje

#pragma once

#include <settings/ExportMacro.h>
#include <utility/Limit3D.h>

namespace ausaxs::settings {
    struct EXPORT grid {
        // The number of generated water molecules as a percent of the number of atoms.
        static double water_scaling;

        // Cell width in Ångström. Each grid cell is a cube with sides of this length.
        static double cell_width;

        // The percent increase in grid size in all dimensions when the grid size is automatically deduced based on an input vector of atoms.
        static double scaling;
        
        // The radius of the excluded volume sphere around each atom. This does *not* block water placement and *only* affects volume calculations. 
        static double min_exv_radius;

        // Whether to generate a cubic grid. This is primarily intended for rigid body optimization, to ensure there's enough space for all possible conformations.
        static bool   cubic;

        // The minimum number of bins in each dimension of the grid. 
        // This is primarily intended for rigid body optimization, to ensure there's enough space for all possible conformations. A value of 0 means disabled. 
        static unsigned int min_bins;

        // Grid-based excluded volume settings.
        struct exv {
            // Whether to save the excluded volume grid when using the grid-based excluded volume calculations. This is primarily useful for debugging.
            static bool   save;

            // The width of the excluded volume dummy atoms used for the grid-based excluded volume calculations in Å.
            static double width;

            // The surface thickness of the grid in Ångström. This is used for fitting the excluded volume. 
            static double surface_thickness;

            enum class ExvType {
                AtomicOnly,     // Consider only atoms as part of the excluded volume
                AtomicAndWater, // Consider both atoms and waters as part of the excluded volume
            };
            // The expansion algorithm
            static ExvType expansion_strategy;
        };

        struct detail {
            static double min_score; // min_score is the minimum percentage of radial lines which must not intersect anything to place a water molecule.
        };
    };
}