Commit f9673ee9 authored by Takhir Fakhrutdinov's avatar Takhir Fakhrutdinov

Добавили папку rdjson

parent f89f998d
...@@ -7,4 +7,5 @@ ...@@ -7,4 +7,5 @@
!fson/ !fson/
!sofa_c/ !sofa_c/
!sofa/ !sofa/
!rdjson/
!fte/ !fte/
*
!*.f95
!makefile
!.gitignore
This diff is collapsed.
!------------------------------------------------------------------------------
!> @group adaps - АСПОС ОКП
!> @author ИПМ им.Келдыша
!> @file print_cadr_m.f95
!> @date Ноябрь 8, 2016
!> @brief модуль определения констант
!------------------------------------------------------------------------------
module const_m
use, intrinsic :: iso_fortran_env
real(8) , parameter :: JDconst = 2400000.5D00 ! константа для перевода в MJD
real(8) , parameter :: PENALTY = 1.0D20 ! штрафное значение
real(8) , parameter :: DNULL = 0.0D00 ! нулевое значение
! Зaдaниe пapaмeтpoв Зeмли. OЗЭ.
!
! AEARTB - бoльшaя пoлyocь OЗЭ. (км) (ПЗ-90.11)
! AEARTS - мaлaя пoлyocь OЗЭ. (км) (ПЗ-90.11)
! AEART0 - cpeдний paдиyc Зeмли. (км)
! EXEAR2 - пepвый экcцeнтpиcитeт в квaдpaтe (ПЗ-90.11)
! WEARTH - номинальная yглoвaя cкopocть вpaщeния Зeмли. (1/c)
! GRAVIT - гpaвитaциoннaя пocтoяннaя Зeмли (км^3/c^2) (ПЗ-90.11)
! C20 - коэффициент C20
! C30 - коэффициент C30
! C40 - коэффициент C40
!
! Физичecкиe пocтoянныe.
!
! CLIGHT - Cкopocть cвeтa (км/c)
!
real(8), parameter :: AEARTB = 0.6378136490D+04
real(8), parameter :: AEARTS = 0.63567513618+04
real(8), parameter :: AEART0 = 0.6371165000D+04
real(8), parameter :: WEARTH = 0.7292115146704D-04
real(8), parameter :: EXEAR2 = 0.66943661774819D-02
real(8), parameter :: GRAVIT = 398600.44180D+00
real(8), parameter :: CLIGHT = 299792.45800D+00
real(8), parameter :: C20 = -0.10826266835532D-02
real(8), parameter :: C30 = 0.25326564853322D-05
real(8), parameter :: C40 = 0.16196215913670E-05
!
! Постоянные
!
! DAS2R - Arcseconds to radians
! TURNAS - Arcseconds in a full circle
! DJ00 - Reference epoch (J2000.0), JD
! DJC - Days per Julian century
! D2PI - 2PI
! SECDAY - количество секунд в сутках
! MINDAY - количество минут в сутках
! DPI - PI
! DSMALL - маленькое число
! RADDEG - количество радиан в градусе
! DEGRAD - количество градусов в радиане
! TTBEGLIMIT - левая граница временной области
! TTENDLIMIT - правая граница временной области
!
real(8), parameter :: DAS2R = 4.848136811095359935899141D-6
real(8), parameter :: TURNAS = 1296000D0
real(8), parameter :: DJ00 = 2451545D0
real(8), parameter :: DJC = 36525D0
real(8), parameter :: D2PI = 6.283185307179586476925287D0
real(8), parameter :: SECDAY = 86400D00
real(8), parameter :: MINDAY = 1440D00
real(8), parameter :: DPI = 3.141592653589793238462643D0
real(8), parameter :: DSMALL = 1.0D-12
real(8), parameter :: DEGRAD = 57.2957795130823208D0
real(8), parameter :: RADDEG = 0.01745329251994329D0
! real(8), parameter :: TTBEGLIMIT = 2451536.5D00
real(8), parameter :: TTBEGLIMIT = 2440000.5D00
real(8), parameter :: TTENDLIMIT = 2525008.5D00
!
! Физические постоянные
!
! GRAVSU - гравитвционня постоянная Солнца (км**3/с**2)
! GRAVMO - гравитвционня постоянная Луны (км**3/с**2)
! CSUNE0 - световое давление у Земли (H/m**2)
! ASTRED - астрономическая единица длины (км)
!
real(8), parameter :: GRAVSU = 1.32715445D+11
real(8), parameter :: GRAVMO = 4.90277790D+03
real(8), parameter :: CSUNE0 = 4.56000000D-06
real(8), parameter :: ASTRED = 1.49597900D+08
!
! Базовые значения, описывющие произвольный КО
!
! CXBASE - коэффициент лобового сопротивления
! 1.0 - сфера
! 2.2 - конус, *** (Жданюк)
! CLBASE - коэффициент отражения
! 1.2 - среднее значение (Стат. Динамика)
! OPMBASE - базовое отношение площади к массе
! 1m2/1000кг = 0.001 (плотность воды)
!
real(8), parameter :: CXBASE = 2.2D00
real(8), parameter :: CLBASE = 1.2D00
real(8), parameter :: OPMBASE = 0.001D00
!
! NaN
real(8), parameter :: NaN = transfer(-2251799813685248_int64, 1._real64)
end module const_m
\ No newline at end of file
!------------------------------------------------------------------------------
!> @group adaps - АСПОС ОКП
!> @author Нью-Ком Технолоджис
!> @file delta_m.f95
!> @date мар 21, 2019
!> @brief модуль задания области с параметрами интегрирования
!------------------------------------------------------------------------------
module delta_m
use, intrinsic :: iso_fortran_env
!
! deltaX(8) - R*8 вектор приращений
!
!real(8), public :: deltaX(8) = (/1.0D00,1.0D00,1.0D00,0.00001D00,0.00001D00,0.00001D00,0.1D00,0.1D00/)
real(8), public :: deltaX(8) = (/0.1D00,0.1D00,0.1D00,0.000001D00,0.000001D00,0.000001D00,0.001D00,0.001D00/)
real(8), public :: deltaXF(8) = (/0.01D00,0.01D00,0.01D00,0.0000001D00,0.0000001D00,0.0000001D00,0.001D00,0.001D00/)
real(8), public :: deltaXFF(8) = (/0.001D00,0.001D00,0.001D00,0.0000001D00,0.0000001D00,0.0000001D00,0.00001D00,0.00001D00/)
!
! формируем вектор приращений при расчете баллистических производных
! для координат - 1 км
! для скоростей - 0.1 м/c
! для коэффициента светового давления
! для баллистического коэффициента
!
!
! deltaM(8) - R*8 вектор приращений для модифицированных кеплеровых элементов
!
real(8), public :: deltaM(8) = (/1.0D00,3.0D-05,3.0D-05,1.0D-05,1.0D-05,3.0D-06,0.001D00,0.001D00/)
!real(8) :: deltaM(8) = (/0.01D00,1.0D-06,1.0D-06,1.0D-06,1.0D-06,1.0D-06,0.0001D00,0.0001D00/)
!
! для большой полуоси - 1км
! для эксцентриситета - 0.00001
! для углов - 0.000003 1 км=5"/(360*60*60)
!
! deltaL(8) - R*8 вектор приращений для элементов Лагранжа
!
real(8), public :: deltaL(8) = (/1.0D-6,1.0D-06,1.0D-06,1.0D-06,1.0D-06,1.0D-06,0.001D00,0.001D00/)
!
! для среднего движения - 1.0D-06
! для средней аномалии - 1.0D-06
! для k h p q эксцентриситета - 1.0D-06
! для коэффициентов - 0.001
! deltaS(8) - R*8 вектор приращений для элементов TLE
!
real(8),public :: deltaS(8) = (/1.0D-6,1.0D-06,1.0D-06,1.0D-06,1.0D-06,1.0D-06,1.0D-08,1.0D-08/)
!
! 1 - долгота восходящего узла, рад
! 2 - наклонение, рад
! 3 - Частота обращения (рад / мин)
! 4 - эксцентриситет
! 5 - аргумент перигея, рад
! 6 - средняя аномалия, рад
! 7 - Первая производная от среднего движения (ускорение), деленная на два
! 8 - Коэффициент торможения B* (BSTAR)
! deltaCOEF(8) - I*4 количество шагов поиска коэффициентов
!
integer(8),public :: deltaCOEF(8) = (/ 1,2,4,8,16,32,64,128 /)
end module delta_m
\ No newline at end of file
This diff is collapsed.
PLATFORM:=$(shell uname -s |awk -F- '{print $$1}')
FC=gfortran
RM=rm
AR = ar
ARFLAGS= ru
BUILDDIR = ../build/$(PLATFORM)
MODDIR = $(BUILDDIR)/mod
LIBDIR = $(BUILDDIR)/lib
SHAREDIR = $(BUILDDIR)/share
OBJDIR = $(BUILDDIR)/obj/rdjson
FCFLAGS = -MD -Wall -ffree-line-length-none -O -J$(MODDIR) -cpp
ifdef DEBUG
FCFLAGS += -g -O0 -DDEBUG=$(DEBUG)
else
FCFLAGS += -O2
endif
OBJS = $(addprefix $(OBJDIR)/,adaps_m.o const_m.o param_m.o delta_m.o rdjson.o wrjson.o)
DEPS = $(addprefix $(OBJDIR)/,$(patsubst %.f95,%.d,$(wildcard *.f*)))
MODS = $(addprefix $(MODDIR)/,$(patsubst %.f95,%.mod,$(wildcard *.f*)))
LIBTARGET=$(LIBDIR)/librdjson.a
all: dirs lib
.PHONY: dirs
dirs:
mkdir -p $(MODDIR) $(LIBDIR) $(OBJDIR)
lib: $(LIBTARGET)
$(LIBTARGET) : $(OBJS)
$(AR) $(ARFLAGS) $(LIBTARGET) $(OBJS)
$(OBJDIR)/%.o: %.f*
$(FC) -c $(FCFLAGS) -o $@ $<
include $(wildcard $(OBJDIR)/*.d)
.PHONY: clean
clean:
$(RM) -f $(OBJS) $(DEPS) $(MODS) $(LIBTARGET)
!------------------------------------------------------------------------------
!> @group adaps - АСПОС ОКП
!> @author Нью-Ком Технолоджис
!> @file param_m.f95
!> @date мар 21, 2019
!> @brief модуль задания области с параметрами интегрирования
!------------------------------------------------------------------------------
module param_m
use, intrinsic :: iso_fortran_env
! Параметры интегрирования передаваемые через общую область
real(8), public :: P_JD ! P_JD R*8 - TT генерации условий интегрирования P_JD=P_TT1+P_TT2
real(8), public :: P_TT1 ! P_TT1 R*8 - первая часть двусоставного времени (JD)
real(8), public :: P_TT2 ! P_TT2 R*8 - вторая часть двусоставного времени (JD)
real(8), public :: P_TIMER ! P_TIMER R*8 - Интервал для обновления условий
real(8), public :: P_DAT ! P_DAT R*8 - Delta AT (UTC-TAI)
real(8), public :: P_DUT1 ! P_DUT1 R*8 - delta UT1 (UT1-UTC)
real(8), public :: P_XP ! P_XP R*8 - Смещение полюса XP на дату P_JD
real(8), public :: P_YP ! P_YP R*8 - Смещение полюса YP на дату P_JD
real(8), public :: P_STIME ! P_STIME R*8 - Звездное время на Гринвиче на дату P_JD, рад
real(8), public :: P_SUN(6) ! P_SUN(6) R*8 - координаты x,y,z и скорости Солнца в J2000 на дату
real(8), public :: P_MOON(6) ! P_MOON(6) R*8 - координаты x,y,z и скорости Луны в J2000 на дату
real(8), public :: P_OPM ! P_OPM R*8 - отношение площади к массе
real(8), public :: P_CX ! P_CX R*8 - коэффициент лобового сопротивления
real(8), public :: P_SV ! P_SV R*8 - коэффициент отражения (альбедо)
real(8), public :: P_SAEM(4) ! P_SAEM(4) R*8 - индексы FAP ( F0, F, F81, Kp )
real(8), public :: P_POM(3,3) ! P_POM(3,3) R*8 - матрица перевода из ITRS в TIRS
real(8), public :: P_PN(3,3) ! P_ERA(3,3) R*8 - матрица перевода из TIRS а ERS
real(8), public :: P_ERA(3,3) ! P_PN(3,3) R*8 - матрица перевода из ERS в J2000
real(8), public :: P_BIAS(3,3) ! P-BIAS(3,3) R*8 - матрица перевода из GCRS в J2000
INTEGER(4), public :: P_MODEL(6) ! P_MODEL(6) I*4 - управляющие индексы:
! 1 - гравитационноное влияние Солнца
! 2 - гравитационное влияние Луны
! 3 - нецентральность поля тяготения Земли
! 4 - учет светового давления
! 5 - учет сопротивления атмосферы
! 6 - количество учитываемых гармоник ГПЗ
end module param_m
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment