Public Member Functions | |
integer function | compute_ncol (nb_ntr, nb_ion, nb_eml) |
Compute ncol parameter. More... | |
integer function | compute_nligne_hd (nb_ntr, nb_ion, nb_eml, ncol) |
Compute nligne_hd parameter. More... | |
Public Attributes | |
integer | nb_param = 15 |
integer | nb_real = 5 |
integer | nb_proxy = 10 |
integer | nb_version = 6 |
integer | ncol_geom = 18 |
integer | ipos_alt = 1 |
integer | ipos_curv = 2 |
integer | ipos_surf = 3 |
integer | ipos_vol = 4 |
integer | ipos_dip = 5 |
integer | ipos_longeo = 6 |
integer | ipos_latgeo = 7 |
integer | ipos_tmag = 8 |
integer | ipos_lonmag = 9 |
integer | ipos_latmag = 10 |
integer | ipos_rmag = 11 |
integer | ipos_kiangle = 12 |
integer | ipos_bmag = 13 |
integer | ipos_stl = 14 |
integer | ipos_f_i1 = 15 |
integer | ipos_f_i2 = 16 |
integer | ipos_vconv_nord = 17 |
integer | ipos_vconv_est = 18 |
integer | ncol_spc = 10 |
integer | ipos_ni = 1 |
integer | ipos_ui = 2 |
integer | ipos_tpi = 3 |
integer | ipos_tti = 4 |
integer | ipos_xpi = 5 |
integer | ipos_xti = 6 |
integer | ipos_pi = 7 |
integer | ipos_hpi = 8 |
integer | ipos_hti = 9 |
integer | ipos_li = 10 |
integer | ncol_ntr = 12 |
integer | ipos_nn = 1 |
integer | ipos_tn = 2 |
integer | ipos_un = 3 |
integer | ipos_vn = 4 |
integer | ipos_wn = 5 |
integer | ipos_tpn = 6 |
integer | ipos_ttn = 7 |
integer | ipos_xpn = 8 |
integer | ipos_xtn = 9 |
integer | ipos_hpn = 10 |
integer | ipos_htn = 11 |
integer | ipos_ln = 12 |
integer | ncol_ew = 1 |
integer function version_6::compute_ncol | ( | integer, intent(in) | nb_ntr, |
integer, intent(in) | nb_ion, | ||
integer, intent(in) | nb_eml | ||
) |
Compute ncol parameter.
ncol = ncol_geom+(nb_ion+2)*ncol_spc+nb_ntr*ncol_ntr+nb_eml+ncol_ew
integer function version_6::compute_nligne_hd | ( | integer, intent(in) | nb_ntr, |
integer, intent(in) | nb_ion, | ||
integer, intent(in) | nb_eml, | ||
integer, intent(in) | ncol | ||
) |
Compute nligne_hd parameter.
nligne_hd = (nb_param+6+6+nb_proxy+9+4+27+5+nb_real*(nb_ion+nb_ntr+nb_eml)+nb_ion+nb_ntr)/ncol+1
integer version_6::nb_param = 15 |
Parameters which never change across all IPIM versions:
buffer( 1) = nb_alt
buffer( 2) = ncol
buffer( 9) = nb_ion
buffer(10) = nb_neutre
Other parameters:
buffer(3 ) = nb_param
buffer(4 ) = nligne_hd
buffer(5 ) = nligne = nb_alt + nligne_hd
buffer(11) = nb_eml
buffer(12) = nb_real (character are coded on nb_real)
buffer(13) = nb_version = 4 or 1.600.000+nb_ion*100+nb_ntr
buffer(14) = nb_proxy
buffer(15) = ncol_ew
ncol = see version_5.compute_ncol function
nligne_hd = (nb_param+6+6+nb_proxy+9+27+5+nb_real*(nb_ion+nb_ntr+nb_eml)+nb_ion+nb_ntr)/ncol+1
nligne = nb_alt + nligne_hd
nb_version = 1.600.000+nb_ion*100+nb_ntr or 4
longbuf = nligne*ncol
longrec = itype*longbuf
integer version_6::ncol_ew = 1 |
integer version_6::ncol_geom = 18 |
ipos_date = nb_param
Date: sim_data%date(1:6)
buffer(ipos_date+1) = time%an
buffer(ipos_date+2) = time%mo
buffer(ipos_date+3) = time%jo
buffer(ipos_date+4) = time%he
buffer(ipos_date+5) = time%mi
buffer(ipos_date+6) = time%se
ipos_planet = ipos_date + 6
Planet: sim_data%planet(1:6)
buffer(ipos_planet+1) = time%lonref
buffer(ipos_planet+2) = time%coef_omega
buffer(ipos_planet+3) = time%r_helio
buffer(ipos_planet+4) = G_o
buffer(ipos_planet+5) = geod%Rp_eq
buffer(ipos_planet+6) = time%lambda
ipos_proxy = ipos_planet + 6
Proxy: sim_data%proxy(1:10)
buffer(ipos_proxy+1:ipos_proxy+3 ) = proxy%f107
buffer(ipos_proxy+4:ipos_proxy+10) = proxy%ap
ipos_posref = ipos_proxy + nb_proxy
Reference position: sim_data%pos_ref(1:9)
buffer(ipos_posref+1) = pos_ref(i_tube)%alt
buffer(ipos_posref+2) = pos_ref(i_tube)%longeo
buffer(ipos_posref+3) = pos_ref(i_tube)%latgeo
buffer(ipos_posref+4) = pos_ref(i_tube)%tmag
buffer(ipos_posref+5) = pos_ref(i_tube)%lonmag
buffer(ipos_posref+6) = pos_ref(i_tube)%latmag
buffer(ipos_posref+7) = pos_tube(1,i_tube)%kiangle
buffer(ipos_posref+8) = pos_ref(i_tube)%Bmag
buffer(ipos_posref+9) = pos_ref(i_tube)%L
ipos_tube = ipos_posref + 9
Tube: sim_data%tube(1:4)
buffer(ipos_tube+1) = bsurf
buffer(ipos_tube+2) = f_exp
buffer(ipos_tube+3) = z_apex
buffer(ipos_tube+2) = latgeo_foot
ipos_stuff = ipos_tube + 4
Other stuff: sim_data%stuff(1:27)
buffer(ipos_stuff+1 ) = dTinf
buffer(ipos_stuff+2 ) = dUinf
buffer(ipos_stuff+3 ) = cofo
buffer(ipos_stuff+4 ) = cofh
buffer(ipos_stuff+5 ) = cofn
buffer(ipos_stuff+6 ) = Fe_tube(i_tube)
buffer(ipos_stuff+7 ) = Ee_tube(i_tube)
buffer(ipos_stuff+8 ) = Fi_tube(i_tube)
buffer(ipos_stuff+9 ) = Ei_tube(i_tube)
buffer(ipos_stuff+10) = Jtop
buffer(ipos_stuff+11) = sig_pedersen_s_tube(i_tube)
buffer(ipos_stuff+12) = sig_hall_s_tube(i_tube)
buffer(ipos_stuff+13) = sig_para_s_tube(i_tube)
buffer(ipos_stuff+14) = Jtop
buffer(ipos_stuff+15) = sig_pedersen_n_tube(i_tube)
buffer(ipos_stuff+16) = sig_hall_n_tube(i_tube)
buffer(ipos_stuff+17) = sig_para_n_tube(i_tube)
buffer(ipos_stuff+18) = ddp
buffer(ipos_stuff+19) = E_tube(1,i_tube)
buffer(ipos_stuff+20) = E_tube(2,i_tube)
buffer(ipos_stuff+21) = E_tube(3,i_tube)
buffer(ipos_stuff+22) = pos_tube(1,i_tube)%vconv_nord
buffer(ipos_stuff+23) = pos_tube(1,i_tube)%vconv_est
buffer(ipos_stuff+24) = div_veq_t
buffer(ipos_stuff+25) = pot
buffer(ipos_stuff+26) = CET_tube_s(i_tube)
buffer(ipos_stuff+27) = CET_tube_n(i_tube)
ipos_proc = ipos_stuff + 27
Proc info: sim_data%proc(1:5)
buffer(ipos_proc+1) = 0.
if (flg_ocbl) buffer(ipos_proc+1) = 1.
buffer(ipos_proc+2) = 16*10000+nb_ion*100+nb_neutre
buffer(ipos_proc+3) = i_tube
buffer(ipos_proc+4) = nb_tube
buffer(ipos_proc+5) = proc_num
Coded right after proc info
ipos_mass_ion = ipos_proc+5
ipos_mass_ntr = ipos_mass_ion+nb_ion
buffer(ipos_mass_ion+1:ipos_mass_ion+nb_ion) = sim_data%mass_ion
buffer(ipos_mass_ntr+1:ipos_mass_ntr+nb_ntr) = sim_data%mass_ntr
ipos_name_ion = ipos_mass_ntr + nb_ntr
sim_data%name_ion = buffer(ipos_name_ion+1:ipos_name_ion+nb_real*nb_ion)
ipos_name_ntr = ipos_name_ion + nb_real*nb_ion
sim_data%name_ntr = buffer(ipos_name_ntr+1:ipos_name_ntr+nb_real*nb_ntr)
ipos_name_eml = ipos_name_ntr + nb_real*nb_ntr
sim_data%name_eml = buffer(ipos_name_eml+1:ipos_name_eml+nb_real*nb_eml)
buffer((nligne_hd*ncol+1):longbuf)=transfer(transpose(profils),profils(1,1),ncol*nb_alt)
ncol_geom = 18
profils(:,ipos_alt ) = pos_tube(1:nb_alt,i_tube)%alt
profils(:,ipos_curv ) = pos_tube(1:nb_alt,i_tube)%curv
profils(:,ipos_surf ) = pos_tube(1:nb_alt,i_tube)%surf
profils(:,ipos_vol ) = pos_tube(1:nb_alt,i_tube)%vol
profils(:,ipos_dip ) = pos_tube(1:nb_alt,i_tube)%dip
profils(:,ipos_longeo ) = pos_tube(1:nb_alt,i_tube)%longeo
profils(:,ipos_latgeo ) = pos_tube(1:nb_alt,i_tube)%latgeo
profils(:,ipos_tmag ) = pos_tube(1:nb_alt,i_tube)%tmag
profils(:,ipos_lonmag ) = pos_tube(1:nb_alt,i_tube)%lonmag
profils(:,ipos_latmag ) = pos_tube(1:nb_alt,i_tube)%latmag
profils(:,ipos_Rmag ) = pos_tube(1:nb_alt,i_tube)%Rmag
profils(:,ipos_kiangle ) = pos_tube(1:nb_alt,i_tube)%kiangle
profils(:,ipos_Bmag ) = pos_tube(1:nb_alt,i_tube)%Bmag
profils(:,ipos_stl ) = pos_tube(1:nb_alt,i_tube)%stl
profils(:,ipos_F_i1 ) = pos_tube(1:nb_alt,i_tube)%F_i1/to_loc
profils(:,ipos_F_i2 ) = pos_tube(1:nb_alt,i_tube)%F_i2/to_loc
profils(:,ipos_vconv_nord ) = pos_tube(1:nb_alt,i_tube)%vconv_nord
profils(:,ipos_vconv_est ) = pos_tube(1:nb_alt,i_tube)%vconv_est
integer version_6::ncol_ntr = 12 |
ipos_ref = ncol_geom + (nb_ion+2)*ncol_spc
ncol_ntr = 12
For all isp in [1,nb_ntr]:
profils(:,ipos_ref+ipos_nn ) = neutre(isp)%N (1:nb_alt,i_tube)*N_o
profils(:,ipos_ref+ipos_tn ) = neutre(isp)%T (1:nb_alt,i_tube)*T_o
profils(:,ipos_ref+ipos_un ) = neutre(isp)%U (1:nb_alt,i_tube)*Cn_o_loc
profils(:,ipos_ref+ipos_vn ) = neutre(isp)%V (1:nb_alt,i_tube)*Cn_o_loc
profils(:,ipos_ref+ipos_wn ) = neutre(isp)%W (1:nb_alt,i_tube)*Cn_o_loc
profils(:,ipos_ref+ipos_tpn) = neutre(isp)%Tp(1:nb_alt,i_tube)*T_o
profils(:,ipos_ref+ipos_ttn) = neutre(isp)%Tt(1:nb_alt,i_tube)*T_o
profils(:,ipos_ref+ipos_xpn) = neutre(isp)%Xp(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_xtn) = neutre(isp)%Xt(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_hpn) = neutre(isp)%Hp(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_htn) = neutre(isp)%Ht(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_ln ) = neutre(isp)%L (1:nb_alt,i_tube)
ipos_ref = ncol_geom + (nb_ion+2)*ncol_spc + nb_ntr*ncol_ntr
For all isp in [1,nb_eml]:
profils(:,ipos_ref+isp) = eml%intensity(1:nb_alt,isp)
integer version_6::ncol_spc = 10 |
ipos_ref = ncol_geom ncol_spc = 10
For all isp in [1,nb_ion]:
profils(:,ipos_ref+ipos_ni ) = ion(isp)%n(1:nb_alt,i_tube)*N_o
profils(:,ipos_ref+ipos_ui ) = ion(isp)%U(1:nb_alt,i_tube)*C_o(min(isp,nb_spc))
profils(:,ipos_ref+ipos_tpi) = ion(isp)%Tp(1:nb_alt,i_tube)*T_o
profils(:,ipos_ref+ipos_tti) = ion(isp)%Tt(1:nb_alt,i_tube)*T_o
profils(:,ipos_ref+ipos_xpi) = ion(isp)%xp(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_xti) = ion(isp)%xt(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_pi ) = ion(isp)%P(1:nb_alt,i_tube)*N_o/to or (if isp==indi_e) ion(isp)%P(1:nb_alt,i_tube)*N_o/to*P_o/N_o
profils(:,ipos_ref+ipos_hpi) = ion(isp)%hp(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_hti) = ion(isp)%ht(1:nb_alt,i_tube)
profils(:,ipos_ref+ipos_li ) = ion(isp)%l (1:nb_alt,i_tube)