MPQC  3.0.0-alpha
psiinput.h
1 //
2 // psiinput.h
3 //
4 // Copyright (C) 2002 Edward Valeev
5 //
6 // Author: Edward Valeev <evaleev@vt.edu>
7 // Maintainer: EV
8 //
9 // This file is part of the SC Toolkit.
10 //
11 // The SC Toolkit is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU Library General Public License as published by
13 // the Free Software Foundation; either version 2, or (at your option)
14 // any later version.
15 //
16 // The SC Toolkit is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU Library General Public License for more details.
20 //
21 // You should have received a copy of the GNU Library General Public License
22 // along with the SC Toolkit; see the file COPYING.LIB. If not, write to
23 // the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24 //
25 // The U.S. Government is granted a limited license as per AL 91-7.
26 //
27 
28 #ifndef _chemistry_qc_psi_input_h
29 #define _chemistry_qc_psi_input_h
30 
31 #include <fstream>
32 #include <string>
33 #include<util/ref/ref.h>
34 #include<chemistry/molecule/molecule.h>
35 #include<chemistry/qc/basis/basis.h>
36 
37 namespace sc {
38 
39 class PsiExEnv;
40 class CorrelationTable;
41 
44 
45 class PsiInput: public RefCount {
46 
47  std::string filename_;
48  std::ofstream file_;
49  int me_; // task id
50 
51  int indentation_;
52 
53  // No default constructor
54  PsiInput() {};
55 
56  // can run on me_?
57  bool can_run_on_me() { return me_ == 0; }
58 
59  public:
60  PsiInput(const std::string& name);
61  ~PsiInput();
62  void open();
63  void close();
64  void print(std::ostream&o=ExEnv::out0());
65 
66  void begin_section(const char * s);
67  void end_section();
68  void write_indent();
69  void incindent(int);
70  void decindent(int);
71  void write_comment(const char *);
72  void write_keyword(const char *, const char *);
73  void write_keyword(const char *, const std::string&);
74  void write_keyword(const char *, bool);
75  void write_keyword(const char *, int);
76  void write_keyword(const char *, double);
77  template <typename T> void write_keyword_array(const char *, const std::vector<T>&);
78  void write_keyword_array(const char *, int, int *);
79  void write_keyword_array(const char *, int, double *);
80  void write_string(const char *);
81  void write_string(const std::string&);
82  void write_key_wq(const char *, const char *);
83 
88  void write_geom(const Ref<Molecule>&);
89 
90  void write_defaults(const Ref<PsiExEnv>&, const char *dertype);
91 };
92 
93 }
94 
95 #include <chemistry/qc/psi/psiinput.timpl.h>
96 
97 #endif
sc::Ref
A template class that maintains references counts.
Definition: ref.h:361
sc::PsiInput
PsiInput is a Psi input file.
Definition: psiinput.h:45
sc::PsiInput::write_basis_sets
void write_basis_sets(const Ref< GaussianBasisSet > &)
Write basis sets explicitly.
sc::ExEnv::out0
static std::ostream & out0()
Return an ostream that writes from node 0.
sc::RefCount
The base class for all reference counted objects.
Definition: ref.h:192
sc
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
sc::PsiInput::write_basis
void write_basis(const Ref< GaussianBasisSet > &)
Construct the "basis" keyword for input. All functions with angular momentum >= 1 must be Cartesian o...

Generated at Sun Jan 26 2020 23:23:59 for MPQC 3.0.0-alpha using the documentation package Doxygen 1.8.16.