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

Last change on this file since 25688 was 25688, checked in by jdquinn, 4 years ago

CHG: MATLAB -> Python translations in support of tests 2005 and 2006 (still have errors to work out here); clean up; various minor improvements

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 """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 #}}}
Note: See TracBrowser for help on using the repository browser.