|
| 1 | +from pylab import sqrt, loadtxt, zeros, ones, linspace, pi |
| 2 | +#from magic import anelprof |
| 3 | + |
| 4 | +class LD: |
| 5 | + |
| 6 | + def __init__(self, which_data='MB'): |
| 7 | + |
| 8 | + if ( which_data=='FSH' or which_data=='FSD' or \ |
| 9 | + which_data=='FSM' or which_data=='FSDyn' or \ |
| 10 | + which_data=='NSH' or which_data=='NSD' |
| 11 | + ): |
| 12 | + #----------------------- |
| 13 | + data_set1={'FSH':'free_hyd', 'FSD':'free_dip', |
| 14 | + 'FSM':'free_multi', 'FSDyn':'free_dyn', |
| 15 | + 'NSH':'no-slip_hyd', 'NSD':'no-slip_dyn'} |
| 16 | + data=loadtxt(data_set1[which_data]) |
| 17 | + self.Ra=data[:, 0] |
| 18 | + self.Rac=ones(len(self.Ra)) |
| 19 | + self.shell_vol=ones(len(self.Ra))*14.59 |
| 20 | + self.E=data[:,1] |
| 21 | + self.Pr=data[:, 2] |
| 22 | + self.Pm=data[:, 3] |
| 23 | + self.Nrho = data[:, 4] |
| 24 | + self.ekin_pol = data[:, 5] |
| 25 | + self.ekin_tor = data[:, 6] |
| 26 | + self.ekin_pola = data[:, 7] |
| 27 | + self.ekin_tora = data[:, 8] |
| 28 | + self.emag_pol = data[:, 13] |
| 29 | + self.emag_tor = data[:, 14] |
| 30 | + self.emag_pola = data[:, 15] |
| 31 | + self.emag_tora = data[:, 16] |
| 32 | + self.Rm = data[:, 17] |
| 33 | + self.Rol = data[:, 19] |
| 34 | + self.Dip = data[:,21] |
| 35 | + self.DipCMB = data[:, 22] |
| 36 | + self.Els = data[:, 23] |
| 37 | + self.ElsCMB = data[:,24] |
| 38 | + self.Nu = data[:, 25] |
| 39 | + self.dlV = data[:,26] |
| 40 | + self.dlVc = data[:,41] |
| 41 | + self.dlB=data[:,28] |
| 42 | + self.dmB=data[:,29] |
| 43 | + self.diptotal=data[:,30] |
| 44 | + self.Dipl11=data[:,31] |
| 45 | + self.diptotl11 = data[:,32] |
| 46 | + self.dip3=data[:,33] |
| 47 | + self.buoyancy = data[:, 34] |
| 48 | + self.ohm_diss = data[:, 35] |
| 49 | + self.fohm = data[:, 36] |
| 50 | + #------------------------------- |
| 51 | + self.Numod=(self.Nu-1.)*(self.E/self.Pr) |
| 52 | + self.RaQ=self.Ra*self.Numod*(self.E**2.)/self.Pr |
| 53 | + #------------------------------- |
| 54 | + self.Ekin=self.ekin_pol+self.ekin_tor |
| 55 | + self.Emag=self.emag_pol+self.emag_tor |
| 56 | + self.Ekin_convec=self.Ekin-self.ekin_tora |
| 57 | + self.EkinENZ=self.Ekin/self.Ekin_convec |
| 58 | + #-------------------------------- |
| 59 | + self.Ro=self.E*sqrt((2.*self.Ekin)/self.shell_vol) |
| 60 | + self.zonal_Ro=self.E*sqrt((2.*self.ekin_tora)/self.shell_vol) |
| 61 | + self.convec_Ro=self.E*sqrt((2.*self.Ekin_convec)/self.shell_vol) |
| 62 | + #-------------------------------- |
| 63 | + if ( which_data=='FSD' or which_data=='FSM' or which_data=='NSD'): |
| 64 | + self.Els=(2.*self.Emag*(self.E*self.Pm))/(self.shell_vol) |
| 65 | + self.Els_pol=(2.*self.emag_pol*(self.E*self.Pm))/(self.shell_vol) |
| 66 | + self.Els_tor=(2.*self.emag_tor*(self.E*self.Pm))/(self.shell_vol) |
| 67 | + self.Lo=(self.Els*self.E/self.Pm)**0.5 |
| 68 | + self.LoCMB=(self.ElsCMB*self.E/self.Pm)**0.5 |
| 69 | + self.Lo_pol=(self.Els_pol*self.E/self.Pm)**0.5 |
| 70 | + self.Lo_tor=(self.Els_tor*self.E/self.Pm)**0.5 |
| 71 | + self.Lofohm=self.Lo/(self.fohm**0.5) |
| 72 | + self.Lofohm_pol=self.Lo_pol/(self.fohm**0.5) |
| 73 | + self.Lofohm_tor=self.Lo_tor/(self.fohm**0.5) |
| 74 | + self.tmag=(self.Emag)/(self.ohm_diss) |
| 75 | + elif ((which_data=='Lucia')): |
| 76 | + #------------------------ |
| 77 | + data=loadtxt(which_data) |
| 78 | + self.Nrho = data[:,0] |
| 79 | + self.Ra = data[:,1] |
| 80 | + self.E = data[:,2] |
| 81 | + self.Pm = data[:,3] |
| 82 | + self.shell_vol=ones(len(self.Ra))*8.11 |
| 83 | + self.Pr = ones(len(self.Ra)) |
| 84 | + self.Rol= data[:,4] |
| 85 | + self.u_Rol = data[:,5] |
| 86 | + self.Nu_IC = data[:,6] |
| 87 | + self.Nu_OC = data[:,7] |
| 88 | + self.Nu = self.Nu_IC |
| 89 | + self.ekin_pol = data[:, 8] |
| 90 | + self.ekin_tor = data[:, 9] |
| 91 | + self.ekin_pola = data[:, 10] |
| 92 | + self.ekin_tora = data[:, 11] |
| 93 | + #------------------------------- |
| 94 | + self.Numod=(self.Nu-1.)*(self.E/self.Pr) |
| 95 | + self.RaQ=self.Ra*self.Numod*(self.E**2.)/self.Pr |
| 96 | + #------------------------------- |
| 97 | + self.Ekin=self.ekin_pol+self.ekin_tor |
| 98 | + self.Ekin_convec=self.Ekin-self.ekin_tora |
| 99 | + self.EkinENZ=self.Ekin/self.Ekin_convec |
| 100 | + #-------------------------------- |
| 101 | + self.Ro=self.E*sqrt((2.*self.Ekin)/self.shell_vol) |
| 102 | + self.zonal_Ro=self.E*sqrt((2.*self.ekin_tora)/self.shell_vol) |
| 103 | + self.convec_Ro=self.E*sqrt((2.*self.Ekin_convec)/self.shell_vol) |
| 104 | + elif ((which_data=='Thomas_FSH') or (which_data=='Thomas_NSH') or \ |
| 105 | + (which_data=='Thomas_FSDyn')): |
| 106 | + #------------------------ |
| 107 | + data=loadtxt(which_data) |
| 108 | + self.Ra = data[:,0] |
| 109 | + self.E = data[:,1] |
| 110 | + self.Nrho = 0*data[:,2] |
| 111 | + self.Pr = data[:,3] |
| 112 | + self.shell_vol=ones(len(self.Ra))*51.3 |
| 113 | + self.ekin_pol = data[:, 8] |
| 114 | + self.ekin_tor = data[:, 9] |
| 115 | + self.ekin_pola = data[:, 10] |
| 116 | + self.ekin_tora = data[:, 11] |
| 117 | + self.Rol = data[:, 15] |
| 118 | + self.Nu = data[:, 16] |
| 119 | + #------------------------------- |
| 120 | + self.Numod=(self.Nu-1.)*(self.E/self.Pr) |
| 121 | + self.RaQ=self.Ra*self.Numod*(self.E**2.)/self.Pr |
| 122 | + #------------------------------- |
| 123 | + self.Ekin=self.ekin_pol+self.ekin_tor |
| 124 | + self.Ekin_convec=self.Ekin-self.ekin_tora |
| 125 | + self.EkinENZ=self.Ekin/self.Ekin_convec |
| 126 | + #-------------------------------- |
| 127 | + self.Ro=self.E*sqrt((2.*self.Ekin)/self.shell_vol) |
| 128 | + self.zonal_Ro=self.E*sqrt((2.*self.ekin_tora)/self.shell_vol) |
| 129 | + self.convec_Ro=self.E*sqrt((2.*self.Ekin_convec)/self.shell_vol) |
0 commit comments