summaryrefslogtreecommitdiff
path: root/cad/src/simulation/SimServer.py
blob: ce1f7d9755d448c1d201cf1076a8c4e481d12aa7 (plain)
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
# Copyright 2005-2007 Nanorex, Inc.  See LICENSE file for details.
"""
SimServer.py - hold attributes needed to connect to and run a SimJob.
(Appears to be specific to GAMESS in some ways.)
[bruce 071217 guess at description]

@author: Mark
@version: $Id$
@copyright: 2005-2007 Nanorex, Inc.  See LICENSE file for details.

History:

By Mark. A lot of changes made by Huaicai.

"""

import sys
import foundation.env as env

class SimServer:
    """
    a SimServer has all the attributes needed to connect to and run a SimJob.
    """
    server_parms = {
        'hostname'  : 'localhost',
        'ipaddress' : '127.0.0.1',
        'method'    : 'Local access',
        'engine'    : 'PC GAMESS',
        'program'   : 'C:\\PCGAMESS\\gamess.exe',
        'tmpdir'    : 'C:\\PCGAMESS\\',
        'platform'  : 'Windows',
        'username'  : 'nanorex',
        'password'  : '',
     }

    def __init__(self):
        """
        Create a server with default parameters.

        @note: If you want to change properties of the server,
        call set_parms() instead.
        """
        self.server_id = env.prefs.get('server_id')
        if not self.server_id:
            self.server_id = 66
        else:
            self.server_id += 1
        env.prefs['server_id'] = self.server_id

        self.parms = SimServer.server_parms
        if sys.platform == 'linux2':
            self.parms['platform'] = 'Linux'
            self.parms['program'] = '/home/huaicai/gamess/rungms'
            self.parms['engine'] = 'GAMESS'
        elif sys.platform == 'darwin':
            self.parms['program'] = 'rungms'
            self.parms['platform'] = 'Mac Os'
            self.parms['engine'] = 'GAMESS'

        self.parms.keys().sort() # Sort parms.

        ### WARNING: Bugs will be caused if any of SimJob's own methods or
        # instance variables had the same name as any of the parameter ('k') values.
        for k in self.parms:
             self.__dict__[k] = self.parms[k]

        self.edit_cntl = None

    def __getstate__(self):
        """
        Called by pickle
        """
        return self.server_id, self.parms, self.edit_cntl

    def __setstate__(self, state):
        """
        Called by unpickle
        """
        self.server_id, self.parms, self.edit_cntl = state
        self.set_parms(self.parms)

    def set_parms(self, parms):
        self.parms = parms
        for k in parms:
             self.__dict__[k] = parms[k]

    def write_parms(self, f): # deprecated method
        """
        [deprecated method]
        Write server parms to file f
        """
        rem = self.get_comment_character()

        f.write (rem + '\n' + rem +  'Server Parameters\n' + rem + '\n')
        for k in self.parms:
            phrase = rem + k + ': ' + str(self.__dict__[k])
            f.write (phrase + '\n')
        f.write (rem+'\n')

    pass

# end