varenius / ascot Goto Github PK
View Code? Open in Web Editor NEWASCOT - Analysis, Scheduling and Combination Toolbox, for VLBI
License: GNU General Public License v3.0
ASCOT - Analysis, Scheduling and Combination Toolbox, for VLBI
License: GNU General Public License v3.0
When running indep solution, we see
*** XYZ| OPTL| OLC| VMF1| VMF3|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
*** ONSA13NE| X| X| X| | X| | X| | X| | | | | | |
*** ONSA13SW| X| X| X| | X| | X| | X| | | | | | |
*** ONSALA60| X| X| X| | X| | X| X| X| | | | | | |
*** XYZ| OPTL| OLC| VMF1| VMF3|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
It would be nice if Gravitational Deformation and Thermal Deformation was also shown in this table.
In control file we define e.g.
# Here the log file is saved
logdir = "/home/eskil/ASCOT/GR/log/";
But if this folder does not exist, ASCOT will silently just not save any logs. It would be good to have a warning about this (or possibly an error)
I run a control file where I specify
# select method for outlier detection:
# BAARDA test if variance factor is known, POPE test otherwise
# or simple method using fixed number of iterations, a threshold
# for gross outliers and a quantile (inverse cdf)
test_method = ( ( "baarda", { significance_level = 1e-9; } ),
( "pope", { significance_level = 1e-9; } ),
( "simple", { iterations = 25;
threshold = 1.0e-9; # 1 ns
quantile = 5.0 } ) );
# additional information which editing should be used (e.g. iIVS or iGSFC)
# used for creating GroupDelayFull_bX.nc and Edit.nc filenames and search of the wrapper
vgosdb_editing = "iOSO";
outliers = {
detect = true;
restoration = ( true,3.0 );
data_snooping = "simple";
#data_snooping = "pope";
save = ( false, "Edit_AI2");# if true, quality_code = 0
# AND use_obs_flags = false
# have to be set!
load = (true, "Edit_iOSO");
force_load = false; # force to load EXACTLY e.g. Edit_IVG
};
# only in case of vgosDB
# eliminate observations with a quality code smaller than the one specified
# use quality codes between 0 (worst) and 9 (best)
quality_code = 5;
use_obs_flags = true; # if true: only observations with delay flag "0"
# (and " " in case of NGS) are used from
# the DELUFLAG entries in Edit.nc or the
# flags in NGS card #2
# if false: all obs are used
I get output
<LEVEL2> *** Observations with invalid qcode: 26 of 3522
<LEVEL2> *** Observations with invalid delay flag: 122 of 3522
<LEVEL2> *** Observations with invalid ionospheric correction: 0 of 3522
<LEVEL2> *** Observations with invalid ionospheric correction AND invalid delay flag: 0 of 3522
<LEVEL2> *** Percentage of flagged observations and remaining number of observations for each site and baseline
*** | ONSA13NE| ONSA13SW| ONSALA60|
*** ONSA13NE| % | 3.5 % | 4.7 % | 2.4 % |
*** ONSA13NE| # | 2265 # | 1119 # | 1146 # |
*** ONSA13SW| % | | 4.0 % | 3.3 % |
*** ONSA13SW| # | | 2254 # | 1135 # |
*** ONSALA60| % | | | 2.9 % |
*** ONSALA60| # | | | 2281 # |
<LEVEL0> *** END-Loading vgosDB: /home/eskil/vgosdbs/ONTIE//2020/20NOV12VB/
<LEVEL3> *** START-Session::init_vgosdb_ngs_solution with _name: 20NOV12VB
<LEVEL3> *** Delays calculated: 0/3522
<LEVEL3> *** Delays calculated: 1000/3522
<LEVEL3> *** Delays calculated: 2000/3522
<LEVEL3> *** Delays calculated: 3000/3522
<LEVEL3> *** Delays calculated: 3522/3522
<LEVEL3> *** Data elimination: 122 of 3522 observations removed. New #nobs 3400
<LEVEL3> *** Data elimination: 122 removed due to use_flag == false
I don't understand why it says "use_flag == false" here. If "flag" means an observation has been flagged as bad, then the logical thing would be to remove it if the flag is used, i.e. if "use_flag=true"?
Would be good to have tests which could be run after compiling to ensure stuff is working and nothing has broken.
Running "make" for "ivg" fails on Linux Mint 20 with libgcal-dev 5.0.2-3 (instead of 4.4. before).
eskil@grotte:/opt/ascot/src/ivg$ make
g++ -c ./matrix.cpp -I/include -I./ -I/opt/ascot//include -I/opt/ascot//src/projectpluto/include -I/opt/ascot//src/iers -I/opt/ascot//src/sofa/include
./matrix.cpp: In member function ‘ivg::Matrix& ivg::Matrix::operator=(const std::vector<int>&)’:
./matrix.cpp:211:1: warning: no return statement in function returning non-void [-Wreturn-type]
210 | _cols = 1;
+++ |+ return *this;
211 | }
| ^
g++ -c ./funother.cpp -I./
g++ -O3 -std=c++0x -g -fPIC -c ./date.cpp -I/include -I./ -I/opt/ascot//include -I/opt/ascot//src/projectpluto/include -I/opt/ascot//src/iers -I/opt/ascot//src/sofa/include
g++ -O3 -std=c++0x -g -fPIC -o auxfunc.o -c ./auxfunc.cpp -I/include -I./ -I/opt/ascot//include -I/opt/ascot//src/projectpluto/include -I/opt/ascot//src/iers -I/opt/ascot//src/sofa/include
./auxfunc.cpp: In function ‘libconfig::Setting& get_list_element(libconfig::Setting&, std::string, int)’:
./auxfunc.cpp:117:1: warning: control reaches end of non-void function [-Wreturn-type]
117 | }
| ^
g++ -c -o tictoc.o tictoc.h
gcc -O3 -c ./sparse2array.c
g++ -O3 -std=c++0x -g -fPIC -c ./eop_series.cpp -I/include -I./ -I/opt/ascot//include -I/opt/ascot//src/projectpluto/include -I/opt/ascot//src/iers -I/opt/ascot//src/sofa/include
In file included from /usr/include/CGAL/Kernel/global_functions.h:25,
from /usr/include/CGAL/Cartesian/Cartesian_base.h:22,
from /usr/include/CGAL/Simple_cartesian.h:20,
from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:20,
from ./trf.h:4,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/Kernel/hash_functions.h:25:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
25 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:47:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
47 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:57:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
57 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:66:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
66 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:75:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
75 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:84:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
84 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:93:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
93 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:102:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
102 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:126:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
126 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:135:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
135 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:145:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
145 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:154:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
154 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:164:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
164 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Kernel/hash_functions.h:174:13: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
174 | inline std::enable_if_t<std::is_same<typename K::Rep_tag, Cartesian_tag>::value, std::size_t>
| ^~~~~~~~~~~
| enable_if
In file included from /usr/include/CGAL/Lazy_exact_nt.h:33,
from /usr/include/CGAL/internal/Exact_type_selector.h:25,
from /usr/include/CGAL/Exact_kernel_selector.h:26,
from /usr/include/CGAL/Filtered_kernel.h:22,
from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:21,
from ./trf.h:4,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/Lazy.h:108:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
108 | template<class T>inline std::enable_if_t<std::is_arithmetic<T>::value||std::is_enum<T>::value, T> approx(T d){return d;}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:109:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
109 | template<class T>inline std::enable_if_t<std::is_arithmetic<T>::value||std::is_enum<T>::value, T> exact (T d){return d;}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:110:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
110 | template<class T>inline std::enable_if_t<std::is_arithmetic<T>::value||std::is_enum<T>::value, unsigned> depth(T){return 0;}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:113:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
113 | template<class T>inline std::enable_if_t<std::is_empty<T>::value, T> exact(T){return {};}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:114:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
114 | template<class T>inline std::enable_if_t<std::is_empty<T>::value, T> approx(T){return {};}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:115:30: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
115 | template<class T>inline std::enable_if_t<std::is_empty<T>::value, unsigned> depth(T){return 0;}
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:118:31: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
118 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:118:42: error: expected ‘>’ before ‘<’ token
118 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^
/usr/include/CGAL/Lazy.h:119:1: error: ‘exact’ function uses ‘auto’ type specifier without trailing return type
119 | auto exact(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::exact(u);});}
| ^~~~
/usr/include/CGAL/Lazy.h:119:1: note: deduced return type only available with ‘-std=c++14’ or ‘-std=gnu++14’
/usr/include/CGAL/Lazy.h: In function ‘auto CGAL::exact(const T&)’:
/usr/include/CGAL/Lazy.h:119:64: error: use of ‘auto’ in lambda parameter declaration only available with ‘-std=c++14’ or ‘-std=gnu++14’
119 | auto exact(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::exact(u);});}
| ^~~~
/usr/include/CGAL/Lazy.h: In lambda function:
/usr/include/CGAL/Lazy.h:119:98: error: no matching function for call to ‘exact(const int&)’
119 | auto exact(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::exact(u);});}
| ^
/usr/include/CGAL/Lazy.h:84:1: note: candidate: ‘template<class AT, class ET, class E2A> const ET& CGAL::exact(const CGAL::Lazy<AT, ET, E2A>&)’
84 | exact(const Lazy<AT,ET,E2A>& l)
| ^~~~~
/usr/include/CGAL/Lazy.h:84:1: note: template argument deduction/substitution failed:
/usr/include/CGAL/Lazy.h:119:98: note: mismatched types ‘const CGAL::Lazy<AT, ET, E2A>’ and ‘const int’
119 | auto exact(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::exact(u);});}
| ^
/usr/include/CGAL/Lazy.h:104:1: note: candidate: ‘const CGAL::Bbox_2& CGAL::exact(const CGAL::Bbox_2&)’
104 | CGAL_LAZY_FORWARD(Bbox_2)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:104:1: note: no known conversion for argument 1 from ‘const int’ to ‘const CGAL::Bbox_2&’
104 | CGAL_LAZY_FORWARD(Bbox_2)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:105:1: note: candidate: ‘const CGAL::Bbox_3& CGAL::exact(const CGAL::Bbox_3&)’
105 | CGAL_LAZY_FORWARD(Bbox_3)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:105:1: note: no known conversion for argument 1 from ‘const int’ to ‘const CGAL::Bbox_3&’
105 | CGAL_LAZY_FORWARD(Bbox_3)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:119:6: note: candidate: ‘template<class T, class> auto CGAL::exact(const T&)’
119 | auto exact(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::exact(u);});}
| ^~~~~
/usr/include/CGAL/Lazy.h:119:6: note: template argument deduction/substitution failed:
/usr/include/CGAL/Lazy.h: At global scope:
/usr/include/CGAL/Lazy.h:120:31: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
120 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:120:42: error: expected ‘>’ before ‘<’ token
120 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^
/usr/include/CGAL/Lazy.h:121:1: error: ‘approx’ function uses ‘auto’ type specifier without trailing return type
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^~~~
/usr/include/CGAL/Lazy.h:121:1: note: deduced return type only available with ‘-std=c++14’ or ‘-std=gnu++14’
/usr/include/CGAL/Lazy.h: In function ‘auto CGAL::approx(const T&)’:
/usr/include/CGAL/Lazy.h:121:65: error: use of ‘auto’ in lambda parameter declaration only available with ‘-std=c++14’ or ‘-std=gnu++14’
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^~~~
/usr/include/CGAL/Lazy.h: In lambda function:
/usr/include/CGAL/Lazy.h:121:100: error: no matching function for call to ‘approx(const int&)’
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^
/usr/include/CGAL/Lazy.h:66:1: note: candidate: ‘template<class AT, class ET, class E2A> const AT& CGAL::approx(const CGAL::Lazy<AT, ET, E2A>&)’
66 | approx(const Lazy<AT,ET,E2A>& l)
| ^~~~~~
/usr/include/CGAL/Lazy.h:66:1: note: template argument deduction/substitution failed:
/usr/include/CGAL/Lazy.h:121:100: note: mismatched types ‘const CGAL::Lazy<AT, ET, E2A>’ and ‘const int’
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^
/usr/include/CGAL/Lazy.h:75:1: note: candidate: ‘template<class AT, class ET, class E2A> AT& CGAL::approx(CGAL::Lazy<AT, ET, E2A>&)’
75 | approx(Lazy<AT,ET,E2A>& l)
| ^~~~~~
/usr/include/CGAL/Lazy.h:75:1: note: template argument deduction/substitution failed:
/usr/include/CGAL/Lazy.h:121:100: note: mismatched types ‘CGAL::Lazy<AT, ET, E2A>’ and ‘const int’
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^
/usr/include/CGAL/Lazy.h:104:1: note: candidate: ‘const CGAL::Bbox_2& CGAL::approx(const CGAL::Bbox_2&)’
104 | CGAL_LAZY_FORWARD(Bbox_2)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:104:1: note: no known conversion for argument 1 from ‘const int’ to ‘const CGAL::Bbox_2&’
104 | CGAL_LAZY_FORWARD(Bbox_2)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:105:1: note: candidate: ‘const CGAL::Bbox_3& CGAL::approx(const CGAL::Bbox_3&)’
105 | CGAL_LAZY_FORWARD(Bbox_3)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:105:1: note: no known conversion for argument 1 from ‘const int’ to ‘const CGAL::Bbox_3&’
105 | CGAL_LAZY_FORWARD(Bbox_3)
| ^~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:121:6: note: candidate: ‘template<class T, class> auto CGAL::approx(const T&)’
121 | auto approx(T const& t) {return make_transforming_iterator(t,[](auto const&u){return CGAL::approx(u);});}
| ^~~~~~
/usr/include/CGAL/Lazy.h:121:6: note: template argument deduction/substitution failed:
/usr/include/CGAL/Lazy.h: At global scope:
/usr/include/CGAL/Lazy.h:122:31: error: ‘enable_if_t’ in namespace ‘std’ does not name a template type; did you mean ‘enable_if’?
122 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^~~~~~~~~~~
| enable_if
/usr/include/CGAL/Lazy.h:122:42: error: expected ‘>’ before ‘<’ token
122 | template <class T, class=std::enable_if_t<is_iterator_type<T,std::input_iterator_tag>::value>>
| ^
In file included from /usr/include/CGAL/Lazy_exact_nt.h:33,
from /usr/include/CGAL/internal/Exact_type_selector.h:25,
from /usr/include/CGAL/Exact_kernel_selector.h:26,
from /usr/include/CGAL/Filtered_kernel.h:22,
from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:21,
from ./trf.h:4,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/Lazy.h:320:33: error: ‘std::index_sequence’ has not been declared
320 | void update_exact_helper(std::index_sequence<I...>) const {
| ^~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:320:47: error: expected ‘,’ or ‘...’ before ‘<’ token
320 | void update_exact_helper(std::index_sequence<I...>) const {
| ^
/usr/include/CGAL/Lazy.h: In member function ‘void CGAL::Lazy_rep_n<AT, ET, AC, EC, E2A, L>::update_exact() const’:
/usr/include/CGAL/Lazy.h:327:30: error: ‘make_index_sequence’ is not a member of ‘std’
327 | update_exact_helper(std::make_index_sequence<sizeof...(L)>{});
| ^~~~~~~~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:327:63: error: expected primary-expression before ‘{’ token
327 | update_exact_helper(std::make_index_sequence<sizeof...(L)>{});
| ^
/usr/include/CGAL/Lazy.h: At global scope:
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:39: error: ‘remove_reference_t’ is not a member of ‘std’; did you mean ‘remove_reference’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~~~~~~
| remove_reference
/usr/include/CGAL/Lazy.h:831:89: error: template argument 1 is invalid
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:39: error: ‘remove_reference_t’ is not a member of ‘std’; did you mean ‘remove_reference’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~~~~~~
| remove_reference
/usr/include/CGAL/Lazy.h:831:89: error: template argument 1 is invalid
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:39: error: ‘remove_reference_t’ is not a member of ‘std’; did you mean ‘remove_reference’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~~~~~~
| remove_reference
/usr/include/CGAL/Lazy.h:831:89: error: template argument 1 is invalid
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:39: error: ‘remove_reference_t’ is not a member of ‘std’; did you mean ‘remove_reference’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~~~~~~
| remove_reference
/usr/include/CGAL/Lazy.h:831:89: error: template argument 1 is invalid
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:22: error: ‘remove_cv_t’ is not a member of ‘std’; did you mean ‘remove_cv’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~
| remove_cv
/usr/include/CGAL/Lazy.h:831:39: error: ‘remove_reference_t’ is not a member of ‘std’; did you mean ‘remove_reference’?
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~~~~~~
| remove_reference
/usr/include/CGAL/Lazy.h:831:89: error: template argument 1 is invalid
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~
/usr/include/CGAL/Lazy.h:831:3: error: invalid use of template-name ‘CGAL::Lazy_exact_nt’ without an argument list
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^~~~~~~~~~~~~
/usr/include/CGAL/Lazy.h:831:3: note: class template argument deduction is only available with ‘-std=c++17’ or ‘-std=gnu++17’
In file included from /usr/include/CGAL/Lazy_exact_nt.h:33,
from /usr/include/CGAL/internal/Exact_type_selector.h:25,
from /usr/include/CGAL/Exact_kernel_selector.h:26,
from /usr/include/CGAL/Filtered_kernel.h:22,
from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:21,
from ./trf.h:4,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/Lazy.h:61:7: note: ‘template<class ET_> class CGAL::Lazy_exact_nt’ declared here
61 | class Lazy_exact_nt;
| ^~~~~~~~~~~~~
In file included from /usr/include/CGAL/Lazy_exact_nt.h:33,
from /usr/include/CGAL/internal/Exact_type_selector.h:25,
from /usr/include/CGAL/Exact_kernel_selector.h:26,
from /usr/include/CGAL/Filtered_kernel.h:22,
from /usr/include/CGAL/Exact_predicates_inexact_constructions_kernel.h:21,
from ./trf.h:4,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/Lazy.h:831:16: error: expected initializer before ‘<’ token
831 | Lazy_exact_nt<std::remove_cv_t<std::remove_reference_t<decltype(ec(CGAL::exact(l)...))>>>
| ^
In file included from /usr/include/CGAL/N_step_adaptor_derived.h:20,
from /usr/include/CGAL/Polyhedron_3.h:26,
from ./trf.h:6,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
/usr/include/CGAL/iterator.h:663:16: error: ‘decay_t’ in namespace ‘std’ does not name a template type; did you mean ‘decay’?
663 | typedef std::decay_t<typename cpp11::result_of<Op(arg_type)>::type> value_type;
| ^~~~~~~
| decay
/usr/include/CGAL/iterator.h:665:11: error: ‘value_type’ does not name a type; did you mean ‘arg_type’?
665 | typedef value_type const* pointer;
| ^~~~~~~~~~
| arg_type
/usr/include/CGAL/iterator.h:666:11: error: ‘value_type’ does not name a type; did you mean ‘arg_type’?
666 | typedef value_type const& reference;
| ^~~~~~~~~~
| arg_type
/usr/include/CGAL/iterator.h:671:11: error: ‘value_type’ does not name a type; did you mean ‘arg_type’?
671 | mutable value_type val; // Note: mutable is needed because we want to
| ^~~~~~~~~~
| arg_type
/usr/include/CGAL/iterator.h:699:9: error: ‘value_type’ does not name a type; did you mean ‘arg_type’?
699 | const value_type& operator*() const {
| ^~~~~~~~~~
| arg_type
/usr/include/CGAL/iterator.h:715:9: error: ‘value_type’ does not name a type; did you mean ‘arg_type’?
715 | const value_type& operator[](difference_type i) const {
| ^~~~~~~~~~
| arg_type
/usr/include/CGAL/iterator.h:1321:44: error: ‘std::index_sequence’ has not been declared
1321 | auto to_tuple(std::tuple<Args...> &t, std::index_sequence<Is...>)
| ^~~~~~~~~~~~~~
/usr/include/CGAL/iterator.h:1321:58: error: expected ‘,’ or ‘...’ before ‘<’ token
1321 | auto to_tuple(std::tuple<Args...> &t, std::index_sequence<Is...>)
| ^
/usr/include/CGAL/iterator.h:1321:1: error: ‘to_tuple’ function uses ‘auto’ type specifier without trailing return type
1321 | auto to_tuple(std::tuple<Args...> &t, std::index_sequence<Is...>)
| ^~~~
/usr/include/CGAL/iterator.h:1321:1: note: deduced return type only available with ‘-std=c++14’ or ‘-std=gnu++14’
/usr/include/CGAL/iterator.h: In member function ‘CGAL::Dispatch_output_iterator<std::tuple<_Tps ...>, std::tuple<_Args2 ...> >::operator std::tuple<O& ...>()’:
/usr/include/CGAL/iterator.h:1414:49: error: ‘index_sequence_for’ is not a member of ‘std’
1414 | return tuple_internal::to_tuple(*this, std::index_sequence_for<O...>{});
| ^~~~~~~~~~~~~~~~~~
/usr/include/CGAL/iterator.h:1414:69: error: expected primary-expression before ‘...’ token
1414 | return tuple_internal::to_tuple(*this, std::index_sequence_for<O...>{});
| ^~~
/usr/include/CGAL/iterator.h: In member function ‘CGAL::Dispatch_output_iterator<std::tuple<_Tps ...>, std::tuple<_Args2 ...> >::operator std::tuple<const O& ...>() const’:
/usr/include/CGAL/iterator.h:1419:49: error: ‘index_sequence_for’ is not a member of ‘std’
1419 | return tuple_internal::to_tuple(*this, std::index_sequence_for<O...>{});
| ^~~~~~~~~~~~~~~~~~
/usr/include/CGAL/iterator.h:1419:69: error: expected primary-expression before ‘...’ token
1419 | return tuple_internal::to_tuple(*this, std::index_sequence_for<O...>{});
| ^~~
In file included from ./ls_neq.h:4,
from ./sinex.h:10,
from ./trf.h:19,
from ./parser.h:10,
from ./eop_series.h:13,
from ./eop_series.cpp:1:
./ls_solution.h: In member function ‘virtual double ivg::Ls_solution::calc_posterior_vfac()’:
./ls_solution.h:85:9: warning: no return statement in function returning non-void [-Wreturn-type]
85 | };
| ^
./ls_solution.h: In member function ‘virtual double ivg::Ls_solution::calc_wrms()’:
./ls_solution.h:137:9: warning: no return statement in function returning non-void [-Wreturn-type]
137 | };
| ^
./ls_solution.h: In member function ‘virtual double ivg::Ls_solution::calc_rms()’:
./ls_solution.h:144:9: warning: no return statement in function returning non-void [-Wreturn-type]
144 | };
| ^
./ls_solution.h: In member function ‘virtual int ivg::Ls_solution::get_degrees_of_freedom()’:
./ls_solution.h:216:9: warning: no return statement in function returning non-void [-Wreturn-type]
216 | };
| ^
./ls_solution.h: In member function ‘virtual int ivg::Ls_solution::get_nobs()’:
./ls_solution.h:219:9: warning: no return statement in function returning non-void [-Wreturn-type]
219 | };
| ^
make: *** [Makefile:44: eop_series.o] Error 1
Led by notes in colmap/colmap#793 I changed the MakeFile for ivg to allow compiling with libcgal5.
<LEVEL4> *** writing wrapper file/home/eskil/vgosdb//2020/20NOV12VB/20NOV12VB_V005_iiii_kall.wrp
should be
<LEVEL4> *** writing wrapper file /home/eskil/vgosdb//2020/20NOV12VB/20NOV12VB_V005_iiii_kall.wrp
with space after "file"
Would be nice to upgrade to latest project_pluto version, see https://www.projectpluto.com/.
grep -r gravtational_deformation *
Binary file bin/ivg_indep matches
Binary file bin/sinex_analyzer matches
Binary file bin/solve_ambiguities matches
Binary file bin/ivg_atools_tropo matches
Binary file bin/ivg_atools matches
Binary file bin/ivg_atools_eop matches
Binary file bin/ivg_global matches
config/ONTIE_groupdelay.cfg: gravtational_deformation = true;
config/ONTIE_groupdelay.cfg:# gravtational_deformation = false;
Binary file lib/libIvgUtils.a matches
src/ivg/obs.cpp: if(((_session->_setup)).exists("gravtational_deformation")&&(bool)((_session->_setup))["gravtational_deformation"])
Binary file src/ivg/obs.o matches
It should be "gravitational_deformation" with the letter "i". This typo should be fixed, but will then also require updating config files etc.
eskil@grotte:~$ ivg_indep -v 5 -c ONTIE_groupdelay.cfg
===================================================================
> > > > > ivg::ASCOT (independent solution) ver-2021-01-01 < < < < <
terminate called after throwing an instance of 'std::runtime_error'
what(): Masterfile::Masterfile(string directory, int start_year, int end_year): Unexpected field length of 16 with tokens IVS-R1875 R1875 JAN02 217:0024 in masterfile: /opt/ascot/apriori_files/masterfiles//master19.txtONN19JAN161.0 XA NASA 13 4639
This is with the official masterfile downloaded. Old files included in the ascot code bundle works. Now trying to figure out the difference...
When reading in a database (with phase-delays present), I find two unidentified (n/a) file associations:
n/a: Phase_bX
n/a: RefFreq_bX
see complete output:
eskil@gyller:~/ascot$ time /opt/ascot/bin/ivg_indep -c ONTIE_groupdelay_test.cfg -v 5 -r
===================================================================
> > > > > ivg::ASCOT (independent solution) ver-2021-01-01 < < < < <
<LEVEL0> ********* processing session 20NOV13VB
<LEVEL1> !!! No session found within masterfiles for dbname: 20NOV13VB are start and end year specified correct?
<LEVEL3> *** Initializing ivg::Eop_series with /opt/ascot/apriori_files/usno_finals.erp between 29/OCT/2020 - 28/NOV/2020
<LEVEL4> *** ivg::parser::cs_erp Matrix #rows:31
<LEVEL1> !!! No session found within masterfiles for dbname: 20NOV13VB are start and end year specified correct?
<LEVEL4> *** Using latest wrapper file 20NOV13VB_V004_iOSO_kall.wrp
*** The following file associations have been found:
X-band:
Head: Head
ObsCrossRef: ObsCrossRef
StationCrossRef: StationCrossRef
Sources: SourceCrossRef
CorrInfo: CorrInfo-difx_bX
GroupDelayFull: GroupDelayFull_bX
GroupDelay: GroupDelay_bX
SBDelay: SBDelay_bX
SNR: SNR_bX
NumGroupAmbig: NumGroupAmbig_bX
AmbigSize: AmbigSize_bX
QualityCode: QualityCode_bX
GroupRate: GroupRate_bX
n/a: Phase_bX
n/a: RefFreq_bX
ScanName: ScanName
TimeUTC: TimeUTC
S-band:
Head: Head
ObsCrossRef: ObsCrossRef
StationCrossRef: StationCrossRef
Sources: SourceCrossRef
ScanName: ScanName
TimeUTC: TimeUTC
...
The unindentified data should be identified.
Log message (when no phasedelay sols exist already)
<LEVEL1> !!! No PhaseDelays found (/ObsEdit/PhaseDelayFullX.nc not existent). Calculating from Phase.
Should be _bX instead of X.
Problem when using "simple" outlier detection defined as this:
test_method = ( ( "baarda", { significance_level = 1e-9; } ),
( "pope", { significance_level = 1e-9; } ),
( "simple", { iterations = 25;
threshold = 1.0e-9; # 1 ns
quantile = 5.0 } ) );
# additional information which editing should be used (e.g. iIVS or iGSFC)
# used for creating GroupDelayFull_bX.nc and Edit.nc filenames and search of the wrapper
vgosdb_editing = "iOSO";
outliers = {
detect = true;
restoration = ( true,3.0 );
data_snooping = "simple";
#data_snooping = "pope";
save = ( false, "Edit_AI2");# if true, quality_code = 0
# AND use_obs_flags = false
# have to be set!
load = (true, "Edit_NGS");
force_load = false; # force to load EXACTLY e.g. Edit_IVG
};
I get this error:
<LEVEL2> *** Dimension of jacobian matrix: 3417 x 56
<LEVEL3> *** #outlier iteration 1: 3416
<LEVEL3> *** #outlier iteration 2: 0
<LEVEL3> *** #outlier iteration 3: 3417
<LEVEL3> *** #outlier iteration 4: 0
<LEVEL3> *** #outlier iteration 5: 3417
<LEVEL3> *** #outlier iteration 6: 0
<LEVEL3> *** #outlier iteration 7: 3417
<LEVEL3> *** #outlier iteration 8: 0
<LEVEL3> *** #outlier iteration 9: 3417
<LEVEL3> *** #outlier iteration 10: 0
<LEVEL3> *** #outlier iteration 11: 3417
<LEVEL3> *** #outlier iteration 12: 0
<LEVEL3> *** #outlier iteration 13: 3417
<LEVEL3> *** #outlier iteration 14: 0
<LEVEL3> *** #outlier iteration 15: 3417
<LEVEL3> *** #outlier iteration 16: 0
<LEVEL3> *** #outlier iteration 17: 3417
<LEVEL3> *** #outlier iteration 18: 0
<LEVEL3> *** #outlier iteration 19: 3417
<LEVEL3> *** #outlier iteration 20: 0
<LEVEL3> *** #outlier iteration 21: 3417
<LEVEL3> *** #outlier iteration 22: 0
<LEVEL3> *** #outlier iteration 23: 3417
<LEVEL3> *** #outlier iteration 24: 0
<LEVEL3> *** #outlier iteration 25: 3417
std::exception: vector::_M_range_check: __n (which is 0) >= this->size() (which is 0) in 20AUG10VB
if instead using "pope" it works and I get a solution.
grep -r TRF.SSC *
[... binary files]
src/ivg/masterfile.cpp: // TRF.SSC only used for calculating network volume
src/ivg/masterfile.cpp: vectorivg::Analysis_station all_stations = ivg::parser::ssc_parser(directory+"/TRF.SSC", nscodes);
Why use this file, and not the input TRF file selected in the config? The current way, TRF.SSC must always reside in apriori_files/masterfiles/. This is a limitation, and not obvious why.
File http://acc.igs.org/tropo/gpt2_5.grd seem to be identical to the one we have. Will it always be, or should we update it regularly? (I know too little about the GPT files at this point to answer this).
Get
*** No cable cal data available for station ONSA13NE. Setting cable cal to 0.0
with use_wrapper=false, not with true
<LEVEL3> *** TRF vtrf2019ext Data Information Table (W: Warning, E: Error, X: Set, Empty: Not Set)
*** XYZ| OPTL| OLC| VMF1| VMF3|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
*** ONSA13NE| X| X| X| | X| | X| | X| | | | | | |
*** ONSA13SW| X| X| X| | X| | X| | X| | | | | | |
*** ONSALA60| X| X| X| | X| | X| X| X| | | | | | |
*** XYZ| OPTL| OLC| VMF1| VMF3|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
For some reason, ONSA13NE/SW does not get ECC values, despite being in ECC file:
ONSA13NE 7316 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
ONSA13SW 7317 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
ONSALA60 7213 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
ONSAFLEX 7213 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
ONSAVDIF 7213 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
ONSALAAN 7213 1970.01.01-00:00 2050.01.01-00:00 0.0 0.0 0.0 XYZ
I use a config file with
# must be false except you are running 'solve_ambiguities' program
solve_ambig = false;
SB_solution = false;
phase_solution=false;
So it should solve for group-delays. But, when reading the vgosDb I find:
<LEVEL4> *** read Phase in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20NOV13VB//Observables/Phase_bX.nc
<LEVEL4> *** read PhaseSig in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20NOV13VB//Observables/Phase_bX.nc
<LEVEL1> !!! no entry found for "n/a" (X-band) in wrapper
<LEVEL1> !!! No PhasesDelays found (/ObsEdit/PhaseDelayFullX.nc not existent). Calculating from phase
<LEVEL4> *** read QualityCode in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20NOV13VB//Observables/QualityCode_bX.nc
Is reading the PhaseDelay-editing necessary for group-delay only solving?
Old libconfig++ syntax generate compiler errors with new libconfig++ version, e.g.
trf.cpp:318:93: error: no match for ‘operator[]’ (operand types are ‘libconfig::Setting’ and ‘std::__cxx11::string {aka std::__cxx11::basic_string<char>}’)
definitions["troposphere"]["external_meteo_data"][string((const char*)setup["troposphere"]["external_meteo_data"][2])],
This can be solved by using the new ".lookup()" syntax instead, so changing e.g.
OLD:
definitions["troposphere"]["external_meteo_data"][string((const char*)setup["troposphere"]["external_meteo_data"][2])],
to NEW:
definitions["troposphere"]["external_meteo_data"].lookup(string((const char*)setup["troposphere"]["external_meteo_data"][2])),
May be useful to be able to generate SFF (spool files), for easy comparison with other softwares e.g. nuSolve.
Would be nice to use autoconf and automake to simplify compiling. Can handle subdirectories, see e.g. https://www.gnu.org/software/automake/manual/html_node/Subpackages.html.
Some databases have had issues with errors like
...
<LEVEL3> *** #44 constraints added to system due to create_constraint_conditions
<LEVEL3> *** #3 constraints added to system due to NNR on 0 of 80 sources
Type: vgosdb
<LEVEL2> *** Dimension of jacobian matrix: 568 x 54
<LEVEL3> *** #outlier iteration 1: 353
<LEVEL3> *** #outlier iteration 2: 414
<LEVEL3> *** #outlier iteration 3: 354
<LEVEL3> *** #outlier iteration 4: 372
<LEVEL3> *** #outlier iteration 5: 348
<LEVEL3> *** #outlier iteration 6: 360
<LEVEL3> *** #outlier iteration 7: 355
<LEVEL3> *** #outlier iteration 8: 360
<LEVEL3> *** #outlier iteration 9: 366
<LEVEL3> *** #outlier iteration 10: 357
<LEVEL3> *** #outlier iteration 11: 366
<LEVEL3> *** #outlier iteration 12: 355
<LEVEL3> *** #outlier iteration 13: 366
<LEVEL3> *** #outlier iteration 14: 352
<LEVEL3> *** #outlier iteration 15: 369
<LEVEL3> *** #outlier iteration 16: 346
<LEVEL3> *** #outlier iteration 17: 377
std::exception: Matrix::solve_neq: LAPACK error: 54 in 19MAY15VB
1 ONSA13SW zwd 0 58619.58699 2.32402572293164e+00 2.32402572293164e+00 0.00000000000000e+00 0.00000000000e+00 m
===================================================================
Could perhaps be related to other outlier-detection issues?
Would be nice to upgrade to latest IERS conventions at https://iers-conventions.obspm.fr/conventions_versions.php#official_target
It appears number of spaces can change in e.g. VTRF SSC files. A line such as
STATION POSITIONS AT EPOCH 2010.0 AND VELOCITIES
is parsed to find the epoch (2010.0) but assuming a fixed position of the epoch chars. Given that spaces change, would be better to search the line to find the epoch position.
On screen, with verbose output, we see e.g.
<LEVEL2> *** IDX # STATION TYPE O MJD TOTAL APRIORI ESTIMATE STD-DEVIATION UNIT
<LEVEL2> *** 0000 1 ONSA13NE stax 0 59166.79132 3.37088916499188e+06 3.37088914425137e+06 2.07405101478703e-02 4.77486357968e-02 m
<LEVEL2> *** 0001 1 ONSA13NE stay 0 59166.79132 7.11571360108150e+05 7.11571357782975e+05 2.32517518328316e-03 2.37141413509e-02 m
<LEVEL2> *** 0002 1 ONSA13NE staz 0 59166.79132 5.34969216374762e+06 5.34969216538193e+06 -1.63430928283001e-03 7.20369024125e-02 m
<LEVEL2> *** 0003 1 ONSA13SW stax 0 59166.79132 3.37094658377798e+06 3.37094662545137e+06 -4.16733965412641e-02 4.89735171411e-02 m
<LEVEL2> *** 0004 1 ONSA13SW stay 0 59166.79132 7.11534640152964e+05 7.11534665482975e+05 -2.53300104083209e-02 2.43033525378e-02 m
...
<LEVEL2> *** 0238 1 ONSA13SW zwd 0 59167.25006 2.33680202024845e+00 2.29904550307900e+00 3.77565171694483e-02 7.03679207937e-02 m
<LEVEL2> *** 0239 1 ONSA13SW zwd 0 59167.27089 2.31578432759127e+00 2.29966109814949e+00 1.61232294417751e-02 7.33942315508e-02 m
<LEVEL2> *** IDX # STATION TYPE O MJD TOTAL APRIORI ESTIMATE STD-DEVIATION UNIT
<LEVEL2> *** Database: 20NOV13VB VFAC: 122.977 WRMS: 1.5126e-09 RMS: 1.79131e-09
<LEVEL3> *** Writing results to /mnt/raidz0/ASCOT_out/GR/output//20NOV13VB_result.txt
<LEVEL3> *** Writing /mnt/raidz0/ASCOT_out/GR/sinex//20NOV13VB_oso2020x.snx
<LEVEL3> *** Writing /mnt/raidz0/ASCOT_out/GR/sinex//20NOV13VB.tro
But in the results file it just says
20NOV13VB
---------
0000 1 ONSA13NE stax 0 59166.79132 3.37088916499188e+06 3.37088914425137e+06 2.07405101478703e-02 4.77486357968e-02 m
0001 1 ONSA13NE stay 0 59166.79132 7.11571360108150e+05 7.11571357782975e+05 2.32517518328316e-03 2.37141413509e-02 m
0002 1 ONSA13NE staz 0 59166.79132 5.34969216374762e+06 5.34969216538193e+06 -1.63430928283001e-03 7.20369024125e-02 m
0003 1 ONSA13SW stax 0 59166.79132 3.37094658377798e+06 3.37094662545137e+06 -4.16733965412641e-02 4.89735171411e-02 m
...
Wouldn't it be good to have the header line also in the result files? There is already some header info with exp name, but could add
IDX # STATION TYPE O MJD TOTAL APRIORI ESTIMATE STD-DEVIATION UNIT
Cannot plot residuals with any version since putting on github. Using -r flag on ivg_indep I get e.g.
...
<LEVEL3> *** Creating Solution-Infos...
<LEVEL3> *** Solution-Infos created.
std::exception: void Plot::_plot_coastline(QFormat format) in plot.cpp: Failed to open file: in 20NOV12VB
===================================================================
Maybe due to Qt4->5 upgrade?
There are a number of (possibly benign) compiler warnings with g++/gfortran 7.5.0. Should be fixed.
The 0.7.3 RC3 version of nuSolve will write ObsEdit/PhaseDelayFull_bX.nc. Ascot tries to read this:
*** read PhaseDelay in /data2/eskil/vgosdb_ONTIE//2020/20NOV12VB//ObsEdit/PhaseDelayFull_bX.nc
std::exception: template vector get_vector( string folder, string nc, string var ): Variable PhaseDelay not existent in /data2/eskil/vgosdb_ONTIE//2020/20NOV12VB//ObsEdit/PhaseDelayFull_bX.nc in 20NOV12VB
The variables inside the file seem to be called PhaseDelayFull instead of PhaseDelay.
It would be good if ASCOT could directly use, without modifications, the Tidal/non-tidal APLO data from Vienna:
Non-tidal APLO: https://vmf.geo.tuwien.ac.at/APL_products/VLBI/yearly/
Tidal APLO: https://vmf.geo.tuwien.ac.at/APL_products/TIDAL/s1_s2_s3_cm_noib_vlbi.dat
Currently, these files need to be modified for ASCOT to understant the data.
I came across some cases when the eccentricities are not correctly read in. The reason is that ASCOT only reads the values of the eccentricities from column 56 onward in ECCDAT.ecc, thus only getting the first two characters before the decimal for the X/North eccentricity. Hence if this eccentricity is larger than +100 m or lower than -10 m the eccentricity will not be read correctly. This is luckily a very rare case, the only case I noticed is the station PENTICTN after 1996.01.01, where the X eccentricity is -194 m! This only affects a handful of sessions, but for the affected sessions the impact is significant, ASCOT will set the eccentricity to +94 m instead of -194 m, a difference of almost 300 m!
I will update the code in the file parser.cpp to correct this issue.
Old wiki pages currently up at https://nain.oso.chalmers.se/ascotwiki/. Useful info should be moved to the github wiki instead.
grep -r TRF.SSC *
[... binary files]
src/ivg/masterfile.cpp: // TRF.SSC only used for calculating network volume
src/ivg/masterfile.cpp: vectorivg::Analysis_station all_stations = ivg::parser::ssc_parser(directory+"/TRF.SSC", nscodes);
Why use this file, and not the input TRF file selected in the config? The current way, TRF.SSC must always reside in apriori_files/masterfiles/. This is a limitation, and not obvious why.
Input wrapper 4 gives output version 4. Should be 5.
Possibly file src/progs/solve_ambiguities/solve_ambiguities.cpp
line 538 wrapper.write_wrapper(new_editing);
where a version argument (now default to 999) could be given.
If you use the option "use_wrapper=false" ASCOT will not use the wrapper to find the filenames, instead us the hardcoded names in the source-code. Unfortunately, the hardcoded name for the reference frequency is wrong, RefFreqX instead of RefFreq_bX. This causes and error, and the program will not work if the reference frequencies are need (e.g. when solving phase delay ambiguities).
Using VMF3 I don't see any hint of this in TRF summary table when running indep_solution:
<LEVEL3> *** TRF vtrf2019ext Data Information Table (W: Warning, E: Error, X: Set, Empty: Not Set)
*** XYZ| OPTL| OLC| VMF1|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
*** ONSA13NE| X| | X| | | X| | X| | | | | | |
*** ONSA13SW| X| | X| | | X| | X| | | | | | |
*** ONSALA60| X| | X| | | X| X| X| | | | | | |
*** XYZ| OPTL| OLC| VMF1|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
E.g.
<LEVEL3> *** Initializing ivg::Crf with 126 sources based on icrf3
<LEVEL1> !!! no entry found for "ClockBreak" (X-band) in wrapper
<LEVEL1> !!! No information about ClockSetup (RefClockStationList) in vgosdb. Automatic setting of RefClock not possible. Must be done manually in configfile.
<LEVEL4> *** read Obs2Scan in /home/eskil/vgosdb//2020/20NOV12VB//CrossReference/ObsCrossRef.nc
<LEVEL4> *** read Obs2Baseline in /home/eskil/vgosdb//2020/20NOV12VB//CrossReference/ObsCrossRef.nc
<LEVEL4> *** read Scan2Station in /home/eskil/vgosdb//2020/20NOV12VB//CrossReference/StationCrossRef.nc
<LEVEL4> *** read ScanNameFull in /home/eskil/vgosdb//2020/20NOV12VB//Scan/ScanName.nc
<LEVEL4> *** read YMDHM in /home/eskil/vgosdb//2020/20NOV12VB//Observables/TimeUTC.nc
<LEVEL4> *** read Second in /home/eskil/vgosdb//2020/20NOV12VB//Observables/TimeUTC.nc
<LEVEL4> *** read Cal-Cable in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13NE/Cal-Cable_kCDMS.nc
<LEVEL4> *** read FeedRotation in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13NE/FeedRotation.nc
<LEVEL4> *** read TempC in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13NE/Met.nc
<LEVEL4> *** read AtmPres in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13NE/Met.nc
<LEVEL4> *** read RelHum in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13NE/Met.nc
<LEVEL4> *** read Cal-Cable in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13SW/Cal-Cable_kCDMS.nc
<LEVEL4> *** read FeedRotation in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13SW/FeedRotation.nc
<LEVEL4> *** read TempC in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13SW/Met.nc
<LEVEL4> *** read AtmPres in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13SW/Met.nc
<LEVEL4> *** read RelHum in /home/eskil/vgosdb//2020/20NOV12VB//ONSA13SW/Met.nc
<LEVEL4> *** read Cal-Cable in /home/eskil/vgosdb//2020/20NOV12VB//ONSALA60/Cal-Cable.nc
<LEVEL4> *** read FeedRotation in /home/eskil/vgosdb//2020/20NOV12VB//ONSALA60/FeedRotation.nc
<LEVEL4> *** read TempC in /home/eskil/vgosdb//2020/20NOV12VB//ONSALA60/Met.nc
<LEVEL4> *** read AtmPres in /home/eskil/vgosdb//2020/20NOV12VB//ONSALA60/Met.nc
<LEVEL4> *** read RelHum in /home/eskil/vgosdb//2020/20NOV12VB//ONSALA60/Met.nc
<LEVEL4> *** read GroupRate in /home/eskil/vgosdb//2020/20NOV12VB//Observables/GroupRate_bX.nc
<LEVEL4> *** read GroupRateSig in /home/eskil/vgosdb//2020/20NOV12VB//Observables/GroupRate_bX.nc
<LEVEL4> *** read GroupDelayFull in /home/eskil/vgosdb//2020/20NOV12VB//ObsEdit/GroupDelayFull_bX.nc
<LEVEL4> *** read GroupDelaySig in /home/eskil/vgosdb//2020/20NOV12VB//Observables/GroupDelay_bX.nc
<LEVEL4> *** read SBDelay in /home/eskil/vgosdb//2020/20NOV12VB//Observables/SBDelay_bX.nc
<LEVEL4> *** read SBDelaySig in /home/eskil/vgosdb//2020/20NOV12VB//Observables/SBDelay_bX.nc
<LEVEL4> *** read Phase in /home/eskil/vgosdb//2020/20NOV12VB//Observables/Phase_bX.nc
<LEVEL4> *** read PhaseSig in /home/eskil/vgosdb//2020/20NOV12VB//Observables/Phase_bX.nc
<LEVEL1> !!! no entry found for "n/a" (X-band) in wrapper
<LEVEL1> !!! No PhaseDelays found (/ObsEdit/PhaseDelayFull_bX.nc not existent). Calculating from Phase.
<LEVEL4> *** read QualityCode in /home/eskil/vgosdb//2020/20NOV12VB//Observables/QualityCode_bX.nc
<LEVEL1> !!! no entry found for "Cal-SlantPathIonoGroup" (X-band) in wrapper
<LEVEL1> !!! Cal-SlantPathIonoGroup*.nc not found in wrapper. Using Cal-SlantPathIonoGroup_bX.nc instead
<LEVEL1> !!! No ErrorFlag information available (variable /ObsDerived/Cal-SlantPathIonoGroup_bX.nc/Cal-SlantPathIonoGroupDataFlag not existent). Setting all observations to ErrorFlag = 0
<LEVEL1> !!! No IonoCorr information available (variable /ObsDerived/Cal-SlantPathIonoGroup_bX.nc/Cal-SlantPathIonoGroup not existent). Setting all IonoCorr & IonoCorrSigma = 0
<LEVEL4> *** read SNR in /home/eskil/vgosdb//2020/20NOV12VB//Observables/SNR_bX.nc
<LEVEL1> !!! no entry found for "SNR" (S-band) in wrapper
<LEVEL1> *** No SNR information available (/Observables/SNR_bS.nc not existent).
<LEVEL1> *** Using Edit.nc for DelayFlag because Edit_iOSO doesn't exist
<LEVEL4> *** read DelayFlag in /home/eskil/vgosdb//2020/20NOV12VB//ObsEdit/Edit.nc
with problematic line <LEVEL1> !!! no entry found for "n/a" (X-band) in wrapper
. Seems to be in wrapper:
eskil@grotte:/opt/ascot$ grep "no entry found for" -r *
src/ivg/wrapper.cpp: log<WARNING> ("!!! no entry found for \"") % wrapper_entries_to_string(entry) % "\" (" % ivg::band_to_string(band) % "-band) in wrapper";
src/ivg/wrapper.cpp: log<WARNING> ("!!! no entry found for \"") % wrapper_entries_to_string(entry) % "\" " % sta % " in wrapper";
But the error is likely from something in ivg/session_inout.cpp, where the data is read.
First time I ran "./make_ascot clean" I got
****** sat_code
g++ -Wall -O3 -pedantic -Wextra -c sgp.cpp
g++ -Wall -O3 -pedantic -Wextra -c sgp4.cpp
g++ -Wall -O3 -pedantic -Wextra -c sgp8.cpp
g++ -Wall -O3 -pedantic -Wextra -c sdp4.cpp
g++ -Wall -O3 -pedantic -Wextra -c sdp8.cpp
g++ -Wall -O3 -pedantic -Wextra -c deep.cpp
g++ -Wall -O3 -pedantic -Wextra -c basics.cpp
g++ -Wall -O3 -pedantic -Wextra -c get_el.cpp
g++ -Wall -O3 -pedantic -Wextra -c common.cpp
rm -f sat_code.a
ar rv ../lib/libsat.a sgp.o sgp4.o sgp8.o sdp4.o sdp8.o deep.o basics.o get_el.o common.o
ar: ../lib/libsat.a: No such file or directory
makefile:56: recipe for target 'sat_code.a' failed
make: *** [sat_code.a] Error 1
running a second time to check this errror, I got
****** sat_code
rm -f sat_code.a
ar rv ../lib/libsat.a sgp.o sgp4.o sgp8.o sdp4.o sdp8.o deep.o basics.o get_el.o common.o
ar: ../lib/libsat.a: No such file or directory
makefile:56: recipe for target 'sat_code.a' failed
make: *** [sat_code.a] Error 1
this without having run any compilation before (so no need to clean really). But still, should not be an error.
Having defined (and yes, files exist)
troposphere:
{
#temperature = { vmf1 = "/opt/ascot/apriori_files/VMF/station_matrices/" };
#pressure = { vmf1 = "/opt/ascot/apriori_files/VMF/station_matrices/" };
#mapping_function = { vmf1 = "/opt/ascot/apriori_files/VMF/station_matrices/" };
temperature = { vmf3 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
pressure = { vmf3 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
mapping_function = { vmf3 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
#temperature = { vmf1 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
#pressure = { vmf1 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
#mapping_function = { vmf1 = "/opt/ascot/apriori_files/VMF3/station_matrices/" };
}
I get
<LEVEL0> *** START-Loading vgosDB (X-band) : /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB/
<LEVEL4> *** read EffectiveDuration in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB//Observables/CorrInfo-difx_bX.nc
<LEVEL4> *** read GeocMBD in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB//Observables/CorrInfo-difx_bX.nc
<LEVEL4> *** read iUTCInterval in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB///Head.nc
<LEVEL4> *** read NumObs in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB///Head.nc
<LEVEL4> *** read RefFreq in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB//Observables/RefFreq_bX.nc
<LEVEL4> *** read StationList in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB///Head.nc
<LEVEL4> *** read SourceList in /mnt/raidz0/K-analysis_Onames/vgosdbs//2020/20AUG10VB///Head.nc
<LEVEL3> *** Initializing ivg::Trf with SSC file /opt/ascot/apriori_files/IVS_TRF2019d_withOTT.SSC.txt including station displacements
libconfig::SettingException: SettingNotFoundException at setup.definitions.troposphere.mapping_function.vmf3
Using the first 3 lines, for vmf3 works. Second group, for vmf3 fails. Last group, calling it vmf1 but using vmf3 files also runs (but does it work properly?)
This solution runs, but refuses to plot?
eskil@gyller:~/ascot$ time /opt/ascot/bin/ivg_indep -c ONTIE_groupdelay_test.cfg -v 5 -r
===================================================================
> > > > > ivg::ASCOT (independent solution) ver-2021-01-01 < < < < <
<LEVEL0> ********* processing session 20NOV13VB
<LEVEL1> !!! No session found within masterfiles for dbname: 20NOV13VB are start and end year specified correct?
<LEVEL3> *** Initializing ivg::Eop_series with /opt/ascot/apriori_files/usno_finals.erp between 29/OCT/2020 - 28/NOV/2020
<LEVEL4> *** ivg::parser::cs_erp Matrix #rows:31
<LEVEL1> !!! No session found within masterfiles for dbname: 20NOV13VB are start and end year specified correct?
<LEVEL4> *** Using latest wrapper file 20NOV13VB_V004_iOSO_kall.wrp
*** The following file associations have been found:
...
<LEVEL2> *** Database: 20NOV13VB VFAC: 1.40354 WRMS: 1.72387e-11 RMS: 2.32683e-11
<LEVEL3> *** Writing results to /mnt/raidz0/ASCOT_out/RESULTS/output//20NOV13VB_result.txt
<LEVEL3> *** Writing /mnt/raidz0/ASCOT_out/RESULTS/sinex//20NOV13VB_oso2020x.snx
<LEVEL3> *** Writing /mnt/raidz0/ASCOT_out/RESULTS/sinex//20NOV13VB.tro
<LEVEL3> *** Creating Solution-Infos...
<LEVEL3> *** Solution-Infos created.
std::exception: void Plot::_plot_coastline(QFormat format) in plot.cpp: Failed to open file: in 20NOV13VB
`
Seeing messages similar to this one for all ONTIE vgosDbs:
*** Observation 834/834 later than session-end from Edit***.nc. Setting new _end to 22/MAY/2019 23:59:00
Surprising, perhaps worth checking why this is? But seems benign as obs are included anyway.
Running "ivg_indep -c" with a non-existent filename generates
eskil@gyller:~$ time /opt/ascot/bin/ivg_indep -c ONTIE_groupdelay_test.cfg -v 5
===================================================================
> > > > > ivg::ASCOT (independent solution) ver-2021-01-01 < < < < <
terminate called after throwing an instance of 'libconfig::FileIOException'
what(): FileIOException
Perhaps better to report which file is not found, and in a more graceful manner?
If sked apply=false, no sked runs so no createPlots should be checked, right?
Currently we need to install unsupported legacy netcdf c++ headers. Perhaps http://unidata.github.io/netcdf-cxx4/index.html could be an alternative?
I see this a lot for ONTIE vgosDBs:
!!! no entry found for "Edit" (X-band) in wrapper
!!! Edit*.nc not found in wrapper. Using Edit_iOSO.nc instead
Seems strange to me; "Edit*.nc" seems like a wildcard search in the wrong place? I assume it should find all, but fails? But it still gets the right one, so benign for now. Still a bit strange.
It has been reported that the GUI shows local system time (e.g. CET) for inspection of data points rather than UTC. This should be confirmed, but if confirmed it should probably be changed to always show UTC for clarity.
It appears ns-codes.txt must be in masterfiles directory, despite directives with other path to ns-codes in config. Would be nice to honor e.g.
definitions:
{
nscodes = "/opt/ascot/apriori_files/ns-codes.txt";
[...]
Found these lines in iers_wrapper.h:
/**
* \b Description: \n
* Determines the Vienna Mapping Function 1(VMF1, grid version) including
* height correction (VMF1, grid version). The coefficients can be obtained
* from the website http://ggosatm.hg.tuwien.ac.at/DELAY/GRID
* \param [in] [double *] ah - Hydrostatic coefficient a
* \param [in] [double *] aw - Wet coefficient a
* \param [in] [double *] mjd -Modified Julian Date
* \param [in] [double *] lat -Latitude given in radians (North Latitude)
* \param [in] [double *] hgt - Ellipsoidal height given in meters
* \param [in] [double *] zd - Zenith distance in radians
* \param [out] [double *] vmf1h - Hydrostatic mapping function
* \param [out] [double *] vmf1w - Wet mapping function
*/
void vmf1_ht_( double *ah, double *aw, double *mjd, double *lat,
double *hgt, double *zd, double *vmf1h, double *vmf1w );
/**
* \b Description: \n
* Determines the Vienna Mapping Function 3(VMF3, grid version) including
* height correction (VMF3, grid version). The coefficients can be obtained
* from the website http://ggosatm.hg.tuwien.ac.at/DELAY/GRID
* \param [in] [double *] ah - Hydrostatic coefficient a
* \param [in] [double *] aw - Wet coefficient a
* \param [in] [double *] mjd -Modified Julian Date
* \param [in] [double *] lat -Latitude given in radians (North Latitude)
* \param [in] [double *] lon -Longitude given in radians (East Longitude)
* \param [in] [double *] hgt - Ellipsoidal height given in meters
* \param [in] [double *] zd - Zenith distance in radians
* \param [out] [double *] vmf1h - Hydrostatic mapping function
* \param [out] [double *] vmf1w - Wet mapping function
*/
void vmf3_ht_( double *ah, double *aw, double *mjd, double *lat, double *lon,
double *hgt, double *zd, double *vmf1h, double *vmf1w );
For the latter function, the parameters "double *vmf1h, double *vmf1w " should be called vmf3, not vmf1, right?
@TobNilsson noted in an email to Sergei today the following, which I think is worth remembering also here in the issue tracker:
I commonly find the files for S-band ( “ObsEdit/PhaseDelayFull_bS.nc” ) in many vgosDb’s from the 1990’ies (for example, 93MAY04XA, 98NOV17XE, and 99SEP14XE). [...] The format of these files are similar to “ObsEdit/GroupDelayFull_b?.nc”, except that the full phase delay is written in the field PhaseDelayFull (instead of the full group delay in GroupDelayFull). However, for some reason the unit of the phase delays written in the “ObsEdit/PhaseDelayFull_bS.nc”-files are in microseconds instead of seconds (as for the group delays in “ObsEdit/GroupDelayFull_b?.nc”). I don’t know if it for some strange reason should be so, or if it is an error in the vgosDB-files. I suppose we should try to clarify this. For now, ASCOT assumes that the unit of the phase delays are in microseconds, however, if this turns out to be wrong it can easily be changed.
So, perhaps we need/should change the way ASCOT interpret this unit at some point, if this gets clarified. I think it seems like an error, there's no reason to use a different unit there.
Current SOFA files are old (2015). Would be nice to upgrade to most recent from https://www.iausofa.org/.
When solving, I see
<LEVEL3> *** TRF vtrf2019ext Data Information Table (W: Warning, E: Error, X: Set, Empty: Not Set)
*** XYZ| OPTL| OLC| VMF1|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
*** ONSA13NE| X| X| X| | | X| | X| | | | | | |
*** ONSA13SW| X| X| X| | | X| | X| | | | | | |
*** ONSALA60| X| X| X| | | X| X| X| | | | | | |
*** XYZ| OPTL| OLC| VMF1|NTAPL| TAPL| ECC|ANT_I|HYDLO|ANT_C| SEFD| FREQ| MASK|CHA_I|
But this is when I have chosen VMF3 (and no complaints about stations not being present, so it should work)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.