Skip to main content

Applying Center Of Gravity Method on the IMAX inverted profiles

This code computes the LOS magnetic field from Stokes I and V inverted profiles of IMAX data

import numpy as np
import matplotlib.pyplot as plt
import pyfits
import math
import os
import sys
from numpy import trapz

lam_0 = 5250.208 #the central wavelength of the FeI line (in Angstroms)
c_0 = 4.67*pow(10, -13) #A^-1 G^-1
g = 3 # the effective Lande factor
sigma = 3*pow(10, -3)

wav = np.linspace(5249.808,5250.808,51)
del_lam = wav[10:26] - lam_0

path= '/home/kahil_administrator/Desktop/Inversions_177/results/'
path2 = '/home/kahil_administrator/Desktop/Inversions_177/B_cog_on_inv/'
os.makedirs(path2)


for n in range(18,58):

 dir_path = path+'Obs177_Cyc0'+str(n)+'/lev2.2_GlobSL0.120_936x936/'
 im = pyfits.open(dir_path+'inverted_profs.1.fits',ignore_missing_end=True)
 profs = im[0].data
 B= np.zeros((936,936)) # LOS magnetic field
 del_lam_G = np.zeros((936,936))

 for i in range(936):
  for j in range(936):
   Prof_I = profs[i,j,0,:]
   Prof_V = profs[i,j,1,:]
   I_lam = Prof_I[10:26]
   V_lam = Prof_V[10:26]
   I_c =  Prof_I[10]       #Prof_I[0:10].max()
   del_lam_G[i][j] = (np.trapz(V_lam*del_lam, x=del_lam))/(np.trapz(I_c-I_lam, x=del_lam))
   B[i][j] = 0.88*abs(del_lam_G[i][j]/(c_0*g*pow(lam_0,2)))

 hdu = pyfits.PrimaryHDU(B)
 hdu.writeto(path2+'B_177_'+str(n)+'.fits')