IPIM
 All Classes Files Functions Variables Pages
Public Member Functions | Public Attributes | List of all members
version_2 Module Reference

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 = 14
 
integer nb_real = 5
 
integer nb_proxy = 10
 
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 = 9
 
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 = 9
 
integer ncol_ntr = 4
 
integer ipos_tn = 1
 
integer ipos_un = 2
 
integer ipos_vn = 3
 
integer ipos_wn = 4
 

Detailed Description

Author
IPIM Format Version 2 (20 Jun 2016). Header: more parameters at the beginning (nb_param).
Header still coded on 2 lines, with Ion and Ntr names.
Data: Same as V1.
(Usefull?)

Member Function/Subroutine Documentation

integer function version_2::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

integer function version_2::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+27+5+nb_real*(nb_ion+nb_ntr+nb_eml)+nb_ion+nb_ntr)/ncol+1

Member Data Documentation

integer version_2::nb_param = 14

Parameters

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 = 160.0000+nb_ion*100+nb_ntr
buffer(14) = nb_proxy

ncol = see version_2.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_2::ncol_geom = 18

Date

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

Planet

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) = 0

Proxy

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

Reference position

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

Other stuff

ipos_stuff = ipos_posref + 9
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)

Proc info

Proc info: sim_data%proc(1:5)
buffer(ncol-4) = 0.
if (flg_ocbl) buffer(ncol-4) = 1.
buffer(ncol-3) = 16*10000+nb_ion*100+nb_neutre
buffer(ncol-2) = i_tube
buffer(ncol-1) = nb_tube
buffer(ncol) = proc_num

Ion and neutral mass

Coded on 2nd line of buffer (from ncol+1)
ipos_mass_ion = ncol+1
ipos_mass_ntr = ipos_mass_ion+nb_ion+1
buffer(ipos_mass_ion:ipos_mass_ion+nb_ion-1) = sim_data%mass_ion
buffer(ipos_mass_ntr:ipos_mass_ntr+nb_ntr-1) = sim_data%mass_ntr

Names

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)

Profils

buffer((nligne_hd*ncol+1):longbuf)=transfer(transpose(profils),profils(1,1),ncol*nb_alt)

Geometry

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_2::ncol_ntr = 4

Neutral

ncol_ntr = 4
profils(:,ipos_nn) = neutre(isp)%N(1:nb_alt,i_tube) forall isp in [1,nb_ntr]
profils(:,ipos_tn) = neutre(indn_O )%T(1:nb_alt,i_tube)
profils(:,ipos_un) = neutre(indn_O )%U(1:nb_alt,i_tube)
profils(:,ipos_vn) = neutre(indn_O )%V(1:nb_alt,i_tube)
profils(:,ipos_wn) = neutre(indn_O )%W(1:nb_alt,i_tube)

Light emissions

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_2::ncol_spc = 9

Ion

ncol_spc = 9
For all isp in [1,nb_ion]:
profils(:,ipos_ni ) = ion(isp)%n(1:nb_alt,i_tube)*N_o
profils(:,ipos_ui ) = ion(isp)%U(1:nb_alt,i_tube)*C_o(min(isp,nb_spc))
profils(:,ipos_tpi) = ion(isp)%Tp(1:nb_alt,i_tube)*T_o
profils(:,ipos_tti) = ion(isp)%Tt(1:nb_alt,i_tube)*T_o
profils(:,ipos_xpi) = ion(isp)%xp(1:nb_alt,i_tube)
profils(:,ipos_xti) = ion(isp)%xt(1:nb_alt,i_tube)
nothing
nothing
profils(:,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


The documentation for this module was generated from the following file: