source: issm/trunk-jpl/src/m/classes/rotational.py@ 25171

Last change on this file since 25171 was 25171, checked in by jdquinn, 5 years ago

BUG: Fix for test2002; additional MATLAB -> Python translation; cleanup

File size: 2.4 KB
Line 
1import numpy as np
2
3from checkfield import checkfield
4from fielddisplay import fielddisplay
5from WriteData import WriteData
6
7
8class 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 #}}}
Note: See TracBrowser for help on using the repository browser.