1 | import numpy as np
|
---|
2 |
|
---|
3 | from checkfield import checkfield
|
---|
4 | from fielddisplay import fielddisplay
|
---|
5 | from WriteData import WriteData
|
---|
6 |
|
---|
7 |
|
---|
8 | class rotational(object):
|
---|
9 | '''
|
---|
10 | ROTATIONAL class definition
|
---|
11 |
|
---|
12 | Usage:
|
---|
13 | rotational = rotational()
|
---|
14 | '''
|
---|
15 |
|
---|
16 | def __init__(self, *args): #{{{
|
---|
17 | self.equatorialmoi = 0
|
---|
18 | self.polarmoi = 0
|
---|
19 | self.langularvelocity = 0
|
---|
20 |
|
---|
21 | nargin = len(args)
|
---|
22 |
|
---|
23 | if nargin == 0:
|
---|
24 | self.setdefaultparameters()
|
---|
25 | else:
|
---|
26 | raise Exception('constructor not supported')
|
---|
27 | #}}}
|
---|
28 |
|
---|
29 | def __repr__(self): # {{{
|
---|
30 | s = ' rotational parameters:\n'
|
---|
31 | s += '{}\n'.format(fielddisplay(self, 'equatorialmoi', 'mean equatorial moment of inertia [kg m^2]'))
|
---|
32 | s += '{}\n'.format(fielddisplay(self, 'polarmoi', 'polar moment of inertia [kg m^2]'))
|
---|
33 | s += '{}\n'.format(fielddisplay(self, 'angularvelocity', 'mean rotational velocity of earth [per second]'))
|
---|
34 |
|
---|
35 | return s
|
---|
36 | #}}}
|
---|
37 |
|
---|
38 | def setdefaultparameters(self): # {{{
|
---|
39 | #moment of inertia
|
---|
40 | self.equatorialmoi = 8.0077e37 # [kg m^2]
|
---|
41 | self.polarmoi = 8.0345e37 # [kg m^2]
|
---|
42 |
|
---|
43 | #mean rotational velocity of earth
|
---|
44 | self.angularvelocity = 7.2921e-5 # [s^-1]
|
---|
45 | #}}}
|
---|
46 |
|
---|
47 | def checkconsistency(self, md, solution, analyses): # {{{
|
---|
48 | if ('SealevelriseAnalysis' not in analyses) or (solution == 'TransientSolution' and md.transient.isslr == 0):
|
---|
49 | return md
|
---|
50 |
|
---|
51 | md = checkfield(md, 'fieldname', 'solidearth.rotational.equatorialmoi', 'NaN', 1, 'Inf', 1)
|
---|
52 | md = checkfield(md, 'fieldname', 'solidearth.rotational.polarmoi', 'NaN', 1, 'Inf', 1)
|
---|
53 | md = checkfield(md, 'fieldname', 'solidearth.rotational.angularvelocity', 'NaN', 1, 'Inf', 1)
|
---|
54 |
|
---|
55 | return md
|
---|
56 | #}}}
|
---|
57 |
|
---|
58 | def defaultoutputs(self, md): #{{{
|
---|
59 | return []
|
---|
60 | #}}}
|
---|
61 |
|
---|
62 | def marshall(self, prefix, md, fid): #{{{
|
---|
63 | WriteData(fid, prefix, 'object', self, 'fieldname', 'equatorialmoi', 'name', 'md.solidearth.rotational.equatorialmoi', 'format', 'Double')
|
---|
64 | WriteData(fid, prefix, 'object', self, 'fieldname', 'polarmoi', 'name', 'md.solidearth.rotational.polarmoi', 'format', 'Double')
|
---|
65 | WriteData(fid, prefix, 'object', self, 'fieldname', 'angularvelocity', 'name', 'md.solidearth.rotational.angularvelocity', 'format', 'Double')
|
---|
66 | #}}}
|
---|
67 |
|
---|
68 | def extrude(self, md): #{{{
|
---|
69 | return self
|
---|
70 | #}}}
|
---|