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