cmf_init_grid: Initializes grid for a given step and margin around molecules...

Description Usage Arguments Examples

Description

Initializes grid for a given step and margin around molecules from database

Usage

1
cmf_init_grid(mdb, step=1.0, margin=2.0)

Arguments

mdb
step

1.0

margin

2.0

Examples

 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
##---- Should be DIRECTLY executable !! ----
##-- ==>  Define data, use random,
##--	or do  help(data=index)  for the standard data sets.

## The function is currently defined as
cmf_init_grid <- function(mdb, step=1.0, margin=2.0) {
  grid <- list()
  nmols <- length(mdb)
  if (nmols > 0) {
    mdbdim <- cmf_moldim(mdb[[1]])
    if (nmols > 1) {
      for (imol in 2:nmols) {
        mol <- mdb[[imol]]
        moldim <- cmf_moldim(mol)
        if (moldim$xmin < mdbdim$xmin) mdbdim$xmin <- moldim$xmin
        if (moldim$xmax > mdbdim$xmax) mdbdim$xmax <- moldim$xmax
        if (moldim$ymin < mdbdim$ymin) mdbdim$ymin <- moldim$ymin
        if (moldim$ymax > mdbdim$ymax) mdbdim$ymax <- moldim$ymax
        if (moldim$zmin < mdbdim$zmin) mdbdim$zmin <- moldim$zmin
        if (moldim$zmax > mdbdim$zmax) mdbdim$zmax <- moldim$zmax
      }
    }
    mdbdim$xmin <- mdbdim$xmin - margin
    mdbdim$xmax <- mdbdim$xmax + margin
    mdbdim$ymin <- mdbdim$ymin - margin
    mdbdim$ymax <- mdbdim$ymax + margin
    mdbdim$zmin <- mdbdim$zmin - margin
    mdbdim$zmax <- mdbdim$zmax + margin

    sizex <- mdbdim$xmax - mdbdim$xmin
    grid$ngridx <- ceiling(sizex / step) + 1
    grid$gridx <- numeric(grid$ngridx)
    grid$gridx[1] <- mdbdim$xmin
    grid$gridx[grid$ngridx] <- mdbdim$xmax
    if (grid$ngridx > 2) {
      for (igrid in 1:(grid$ngridx-2)) {
        grid$gridx[igrid+1] <- mdbdim$xmin + igrid * step
      }
    }

    sizey <- mdbdim$ymax - mdbdim$ymin
    grid$ngridy <- ceiling(sizey / step) + 1
    grid$gridy <- numeric(grid$ngridy)
    grid$gridy[1] <- mdbdim$ymin
    grid$gridy[grid$ngridy] <- mdbdim$ymax
    if (grid$ngridy > 2) {
      for (igrid in 1:(grid$ngridy-2)) {
        grid$gridy[igrid+1] <- mdbdim$ymin + igrid * step
      }
    }

    sizez <- mdbdim$zmax - mdbdim$zmin
    grid$ngridz <- ceiling(sizez / step) + 1
    grid$gridz <- numeric(grid$ngridz)
    grid$gridz[1] <- mdbdim$zmin
    grid$gridz[grid$ngridz] <- mdbdim$zmax
    if (grid$ngridz > 2) {
      for (igrid in 1:(grid$ngridz-2)) {
        grid$gridz[igrid+1] <- mdbdim$zmin + igrid * step
      }
    }

    grid$val <- array(0.0, c(grid$ngridx, grid$ngridy, grid$ngridz))
  }
  grid
}

conmolfields documentation built on May 2, 2019, 4:18 p.m.