lib/gs2crmod/calculations.rb in gs2crmod-0.12.14 vs lib/gs2crmod/calculations.rb in gs2crmod-0.12.15
- old
+ new
@@ -385,10 +385,11 @@
divisor *= 2
length = (vector.size.to_f / divisor.to_f).floor
return "NaN" if length <= offset + 1
growth_rate = GSL::Fit::linear(gsl_vector(:t).subvector(offset, length-offset), 0.5*GSL::Sf::log(vector.subvector(offset, length-offset)))[1]
end
+ p 'HELLLOOASJDKFHASDF'
growth_rate
end
# Not needed for GS2 built after 16/06/2010
def corrected_mom_flux_stav
@@ -689,28 +690,28 @@
def max_es_heat_amp(species_index)
@transient_es_heat_flux_amplification_at_species_at_ky[species_index-1].values.max
end
def calculate_spectral_checks
- kx = gsl_vector('kx')
- ky = gsl_vector('ky')
- ky_spec = gsl_vector('spectrum_over_ky')
- kx_spec = gsl_vector('spectrum_over_kx')
- kpar_spec = gsl_vector('spectrum_over_kpar', ky_index: ky_spec.max_index + 1, kx_index: 1)
-
- @spectrum_check = []
- [kx_spec, ky_spec, kpar_spec].each do |spec|
- begin
- ends_max = [spec[0], spec[-1]].max + (10.0**(-9))
- p ends_max
- p spec.max
- check = (Math.log(spec.max/ends_max)/Math.log(10)).round
- rescue
- check= -10
- end
- @spectrum_check.push check
- end
+ kx = gsl_vector('kx')
+ ky = gsl_vector('ky')
+ ky_spec = gsl_vector('spectrum_over_ky')
+ kx_spec = gsl_vector('spectrum_over_kx')
+ kpar_spec = gsl_vector('spectrum_over_kpar', ky_index: ky_spec.max_index + 1, kx_index: 1)
+
+ @spectrum_check = []
+ [kx_spec, ky_spec, kpar_spec].each do |spec|
+ begin
+ ends_max = [spec[0], spec[-1]].max + (10.0**(-9))
+ p ends_max
+ p spec.max
+ check = (Math.log(spec.max/ends_max)/Math.log(10)).round
+ rescue
+ check= -10
+ end
+ @spectrum_check.push check
+ end
#Calculate peak kx, ky spectrum values and associated phi2 values
@ky_spectrum_peak_idx = ky_spec.max_index
@ky_spectrum_peak_ky = ky[@ky_spectrum_peak_idx]
@@ -747,9 +748,33 @@
def sc(min)
return @spectrum_check.min >= min
end
alias :csc :calculate_spectral_checks
+
+def calculate_prandtl_number
+ if @g_exb == 0
+ eputs 'g_exb = 0 therefore Prandtl number is undefined.'
+ return nil
+ elsif @nonlinear_mode=="off"
+ eputs 'Prandtl number only makes sense for a nonlinear run.'
+ return nil
+ elsif @local_eq.fortran_false?
+ eputs 'Prandtl number currently only calculated for Miller equilibrium.'
+ return nil
+ end
+
+ @prandtl_number = {}
+
+ @nspec.times do |i|
+ species_index = i + 1
+ @prandtl_number[species_index] = - (@rhoc/@qinp/@rmaj**2) *
+ (eval("@tprim_#{species_index}")/@g_exb) *
+ (@es_mom_flux_stav[species_index]/
+ @es_heat_flux_stav[species_index])
+ end
+ write_results
+end
end
end