~ubuntu-branches/ubuntu/karmic/psicode/karmic

« back to all changes in this revision

Viewing changes to src/lib/libchkpt/fragment_coeff.cc

  • Committer: Bazaar Package Importer
  • Author(s): Michael Banck, Michael Banck, Daniel Leidert
  • Date: 2009-02-23 00:12:02 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090223001202-rutldoy3dimfpesc
Tags: 3.4.0-1
* New upstream release.

[ Michael Banck ]
* debian/patches/01_DESTDIR.dpatch: Refreshed.
* debian/patches/02_FHS.dpatch: Removed, applied upstream.
* debian/patches/03_debian_docdir: Likewise.
* debian/patches/04_man.dpatch: Likewise.
* debian/patches/06_466828_fix_gcc_43_ftbfs.dpatch: Likewise.
* debian/patches/07_464867_move_executables: Fixed and refreshed.
* debian/patches/00list: Adjusted.
* debian/control: Improved description.
* debian/patches-held: Removed.
* debian/rules (install/psi3): Do not ship the ruby bindings for now.

[ Daniel Leidert ]
* debian/rules: Fix txtdir via DEB_MAKE_INSTALL_TARGET.
* debian/patches/01_DESTDIR.dpatch: Refreshed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*!
 
2
  \file
 
3
  \ingroup CHKPT
 
4
*/
 
5
 
 
6
#include <stdio.h>
 
7
#include <stdlib.h>
 
8
#include <psifiles.h>
 
9
#include <libpsio/psio.hpp>
 
10
extern "C" {
 
11
        #include <libchkpt/chkpt.h>
 
12
}
 
13
#include <libchkpt/chkpt.hpp>
 
14
#include <libciomr/libciomr.h>
 
15
 
 
16
using namespace psi;
 
17
 
 
18
double ***Chkpt::rd_fragment_coeff(void)
 
19
{
 
20
        int nfragment, *natom_per_fragment, *nref_per_fragment, i, j;
 
21
    psio_address ptr;
 
22
        double ***fragment_coeff;
 
23
        char *keyword;
 
24
        keyword = build_keyword("Fragment coeff");
 
25
 
 
26
        nfragment = rd_nfragment();
 
27
        natom_per_fragment = rd_natom_per_fragment();
 
28
        nref_per_fragment = rd_nref_per_fragment();
 
29
 
 
30
        fragment_coeff = array<double **>(nfragment);
 
31
    for (i=0; i<nfragment; ++i)
 
32
          fragment_coeff[i] = matrix<double>(nref_per_fragment[i],natom_per_fragment[i]);
 
33
 
 
34
    ptr = PSIO_ZERO;
 
35
    for (i=0; i<nfragment; ++i)
 
36
      for (j=0; j<nref_per_fragment[i]; ++j)
 
37
            psio->read(PSIF_CHKPT, keyword, (char *) fragment_coeff[i][j], 
 
38
            (int) natom_per_fragment[i]*sizeof(double), ptr, &ptr);
 
39
 
 
40
    free(natom_per_fragment);
 
41
    free(nref_per_fragment);
 
42
        free(keyword);
 
43
        return fragment_coeff;
 
44
}
 
45
 
 
46
void Chkpt::wt_fragment_coeff(double ***fragment_coeff)
 
47
{
 
48
        int nfragment, *natom_per_fragment, *nref_per_fragment, i, j;
 
49
    psio_address ptr;
 
50
        char *keyword;
 
51
        keyword = build_keyword("Fragment coeff");
 
52
 
 
53
        nfragment = rd_nfragment();
 
54
    natom_per_fragment = rd_natom_per_fragment();
 
55
    nref_per_fragment = rd_nref_per_fragment();
 
56
 
 
57
    ptr = PSIO_ZERO;
 
58
    for (i=0; i<nfragment; ++i)
 
59
      for (j=0; j<nref_per_fragment[i]; ++j)
 
60
            psio->write(PSIF_CHKPT, keyword, (char *) fragment_coeff[i][j], 
 
61
            (int) natom_per_fragment[i]*sizeof(double), ptr, &ptr);
 
62
 
 
63
    free(natom_per_fragment);
 
64
    free(nref_per_fragment);
 
65
        free(keyword);
 
66
    return;
 
67
}
 
68
 
 
69
extern "C" {
 
70
/*!
 
71
** chkpt_rd_fragment_coeff():  Reads in the coefficients specifying reference points
 
72
** for molecular fragments
 
73
**
 
74
**   takes no arguments.
 
75
**
 
76
**   returns:
 
77
**     double ***fragment_coeff[fragment][reference point][atom in fragment]
 
78
** \ingroup CHKPT
 
79
*/
 
80
        double ***chkpt_rd_fragment_coeff(void)
 
81
        {
 
82
                double ***fragment_coeff;
 
83
                fragment_coeff = _default_chkpt_lib_->rd_fragment_coeff();
 
84
                return fragment_coeff;
 
85
        }
 
86
 
 
87
 
 
88
/*!
 
89
** chkpt_wt_fragment_coeff():  Writes out the coefficients specifying the reference
 
90
** points for molecular fragments
 
91
**
 
92
** \param double ***fragment_coeff[fragment][reference point][atom in fragment]
 
93
** returns: none
 
94
** \ingroup CHKPT
 
95
*/
 
96
        void chkpt_wt_fragment_coeff(double ***fragment_coeff)
 
97
        {
 
98
                _default_chkpt_lib_->wt_fragment_coeff(fragment_coeff);
 
99
        }
 
100
}