IPIM
 All Classes Files Functions Variables Pages
Public Member Functions | Public Attributes | List of all members
version_1 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 ipos_date = 3
 
integer ipos_posref = 11
 
integer ipos_proxy = 20
 
integer ipos_planet = 57
 
integer ipos_stuff = 30
 
integer ipos_proc
 
integer ipos_mass_ion
 
integer ipos_mass_ntr
 
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 1 (Apr 2016). Header: only nb_alt, ncol, nb_ion, nb_ntr as parameters.
Then date, posref, proxy, planet, stuff. Proc info before the end of 1st line.
In second line, mass_ion and mass_ntr.
Nb_version = 10.000 + nb_ion*100 + nb_ntr.

Member Function/Subroutine Documentation

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

integer function version_1::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 = 2

Member Data Documentation

integer version_1::ipos_date = 3

Parameters

Parameters which never change across all IPIM versions:
buffer( 1) = nb_alt
buffer( 2) = ncol
buffer( 9) = nb_ion
buffer(10) = nb_neutre

ncol = see version_1.compute_ncol function
nligne_hd = 2
nligne = nb_alt + nligne_hd
nb_version = 160.000+nb_ion*100+nb_ntr
longbuf = nligne*ncol
longrec = itype*longbuf

Date

Date: sim_data%date(1:6)
buffer( 3) = time%an
buffer( 4) = time%mo
buffer( 5) = time%jo
buffer( 6) = time%he
buffer( 7) = time%mi
buffer( 8) = time%se

integer version_1::ipos_mass_ion

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

Name_ion, name_ntr, name_eml not present.

integer version_1::ipos_planet = 57

Planet

Planet: sim_data%planet(1:6)
buffer(57) = time%lonref
buffer(58) = time%coef_omega
sim_data%planet(3:6) not used

integer version_1::ipos_posref = 11

Reference position

Reference position: sim_data%pos_ref(1:9)
buffer(11) = pos_ref(i_tube)%alt
buffer(12) = pos_ref(i_tube)%longeo
buffer(13) = pos_ref(i_tube)%latgeo
buffer(14) = pos_ref(i_tube)%tmag
buffer(15) = pos_ref(i_tube)%lonmag
buffer(16) = pos_ref(i_tube)%latmag
buffer(17) = pos_tube(1,i_tube)%kiangle
buffer(18) = pos_ref(i_tube)%Bmag
buffer(19) = pos_ref(i_tube)%L

integer version_1::ipos_proc

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
ipos_proc = ncol - 4

integer version_1::ipos_proxy = 20

Proxy

Proxy: sim_data%proxy(1:10)
buffer(20:22) = proxy%f107
buffer(23:29) = proxy%ap

integer version_1::ipos_stuff = 30

Other stuff

Other stuff: sim_data%stuff(1:27)
buffer(30) = dTinf
buffer(31) = dUinf
buffer(32) = cofo
buffer(33) = cofh
buffer(34) = cofn
buffer(35) = Fe_tube(i_tube)
buffer(36) = Ee_tube(i_tube)
buffer(37) = Fi_tube(i_tube)
buffer(38) = Ei_tube(i_tube)
buffer(39) = Jtop
buffer(40) = sig_pedersen_s_tube(i_tube)
buffer(41) = sig_hall_s_tube(i_tube)
buffer(42) = sig_para_s_tube(i_tube)
buffer(43) = Jtop
buffer(44) = sig_pedersen_n_tube(i_tube)
buffer(45) = sig_hall_n_tube(i_tube)
buffer(46) = sig_para_n_tube(i_tube)
buffer(47) = ddp
buffer(48) = E_tube(1,i_tube)
buffer(49) = E_tube(2,i_tube)
buffer(50) = E_tube(3,i_tube)
buffer(51) = pos_tube(1,i_tube)%vconv_nord
buffer(52) = pos_tube(1,i_tube)%vconv_est
buffer(53) = div_veq_t
buffer(54) = pot
buffer(55) = CET_tube_s(i_tube)
buffer(56) = CET_tube_n(i_tube)

integer version_1::ncol_geom = 18

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_1::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)

integer version_1::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: