Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
G
geoms_qa
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
geoms
geoms_qa
Commits
c42cc0e0
Commit
c42cc0e0
authored
3 months ago
by
Ian Boyd
Browse files
Options
Downloads
Patches
Plain Diff
Replace idlcr8hdf.pro
parent
eaa204c8
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
idlcr8hdf.pro
+60
-38
60 additions, 38 deletions
idlcr8hdf.pro
with
60 additions
and
38 deletions
idlcr8hdf.pro
+
60
−
38
View file @
c42cc0e0
;
Main
Program
Version
:
idlcr8hdf
.
pro
v4
.
0
b6
6
,
20241
126
;
Main
Program
Version
:
idlcr8hdf
.
pro
v4
.
0
b6
7
,
20241
218
;
Written
by
Ian
Boyd
for
the
EVDC
/
AVDC
-
iboyd
@
bryanscientific
.
org
;
;
Sub
-
versions
(
refer
to
idlcr8hdf
-
v4
.
0
_Readme
.
pdf
for
full
history
)
...
...
@@ -113,7 +113,7 @@ PRO intro, intype
COMMON
WIDGET_WIN
nhdr
=
44
&
errtxt
=
STRARR
(
nhdr
)
vertxt
=
[
'idlcr8hdf-v4.0_Readme.pdf'
,
'v4.0b6
6 Nov
ember 2024'
]
vertxt
=
[
'idlcr8hdf-v4.0_Readme.pdf'
,
'v4.0b6
7 Dec
ember 2024'
]
errtxt
[
1
]
=
'Welcome to IDLcr8HDF. This program creates GEOMS compliant HDF4, HDF5 and netCDF files'
errtxt
[
2
]
=
'(also refer to '
+
vertxt
[
0
]
+
').'
errtxt
[
4
]
=
'Inputs to the program (IDL Virtual Machine (VM) and IDL Licensed (LIC) Versions):'
...
...
@@ -4650,6 +4650,9 @@ PRO read_data, sds, inf
;
for
identifying
invalid
wind
speed
or
direction
values
-
Version
4.0
b43
;
20201020
:
Add
check
for
negative
random
uncertainty
values
(
standard
or
relative
only
)
;
-
Version
4.0
b56
;
20241218
:
Identify
fill
values
before
checking
that
the
vertical
dimension
values
are
;
monotonically
increasing
or
decreasing
.
Needed
for
Pandora
off
-
axis
measurements
;
-
Version
4.0
b67
;
;
Inputs
:
sds
-
Either
a
structure
containing
the
Variable
Attributes
and
Data
,
or
the
input
;
data
file
...
...
@@ -4903,22 +4906,28 @@ FOR vc=0,N_ELEMENTS(bchks)-1 DO BEGIN
bvals
=
DOUBLE
(
REFORM
(
dtest
,
ndm
[
bci
[
0
],
di
]))
;
put
into
array
order
and
make
numeric
IF
nbcnt
EQ
1
THEN
n_sec
=
ndm
[
bci
[
0
],
nbi
[
0
]]
ELSE
n_sec
=
1
L
;
Number
of
datasets
to
be
read
through
IF
bi
[
0
]
NE
0
THEN
bvals
=
TRANSPOSE
(
bvals
)
;
make
ALTITUDE
or
PRESSURE
array
the
first
index
;
determine
the
VAR_FILL_VALUE
for
the
dataset
zci
=
WHERE
(
mv_dbl
[
*,
bci
[
0
]]
NE
0
.
d
,
zccnt
)
IF
zccnt
NE
0
THEN
bvtfv
=
mv_dbl
[
2
,
bci
[
0
]]
ELSE
bvtfv
=
DOUBLE
(
mv_lng
[
2
,
bci
[
0
]])
FOR
i
=
0
L
,
n_sec
-
1
L
DO
BEGIN
;
e
.
g
.
number
of
DATETIME
values
or
single
loop
if
only
one
dimension
bvtest
=
bvals
[
*,
i
]
;
set
of
PRESSURES
or
ALTITUDES
to
be
tested
asc
=-
1
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
SORT
(
bvtest
)])
THEN
asc
=
1
$
;
ascending
order
ELSE
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
REVERSE
(
SORT
(
bvtest
))])
THEN
asc
=
0
;
descending
order
IF
ascending
EQ
-
1
THEN
ascending
=
asc
IF
(
asc
EQ
-
1
)
OR
(
ascending
NE
asc
)
THEN
BEGIN
;
altitudes
/
pressures
not
in
any
order
IF
(
ascending
NE
-
1
)
AND
(
writeonce
[
1
]
EQ
1
)
THEN
BEGIN
;
more
than
one
dimension
and
error
in
one
or
more
of
the
sets
IF
ascending
EQ
1
THEN
itxt
=
'increasing'
ELSE
itxt
=
'decreasing'
infotxt
=
'3 '
+
bchks
[
vc
]
+
' values not in '
+
itxt
+
' order for every '
+
vdvals
[
nbi
[
0
]]
+
' for '
+
meta_arr
[
mi
[
0
]]
INFOTXT_OUTPUT
,
infotxt
writeonce
[
1
]
=
0
ENDIF
ELSE
IF
writeonce
[
0
]
EQ
1
THEN
BEGIN
infotxt
=
'3 '
+
bchks
[
vc
]
+
' values not monotonically increasing or decreasing for '
+
meta_arr
[
mi
[
0
]]
INFOTXT_OUTPUT
,
infotxt
writeonce
[
0
]
=
0
gvi
=
WHERE
(
bvals
[
*,
i
]
NE
bvtfv
,
gvcnt
)
;
check
for
fill
values
IF
gvcnt
GT
1
THEN
BEGIN
;
can't do monotonic test if there is only one value
bvtest=bvals[gvi,i] ;set of PRESSURES or ALTITUDES to be tested
asc=-1
IF ARRAY_EQUAL(bvtest,bvtest[SORT(bvtest)]) THEN asc=1 $ ;ascending order
ELSE IF ARRAY_EQUAL(bvtest,bvtest[REVERSE(SORT(bvtest))]) THEN asc=0 ;descending order
IF ascending EQ -1 THEN ascending=asc
IF (asc EQ -1) OR (ascending NE asc) THEN BEGIN ;altitudes/pressures not in any order
IF (ascending NE -1) AND (writeonce[1] EQ 1) THEN BEGIN ;more than one dimension and error in one or more of the sets
IF ascending EQ 1 THEN itxt='increasing' ELSE itxt='decreasing'
infotxt='
3
'+bchks[vc]+'
values
not
in
'+itxt+'
order
for
every
'+vdvals[nbi[0]]+'
for
'+meta_arr[mi[0]]
INFOTXT_OUTPUT,infotxt
writeonce[1]=0
ENDIF ELSE IF writeonce[0] EQ 1 THEN BEGIN
infotxt='
3
'+bchks[vc]+'
values
not
monotonically
increasing
or
decreasing
for
'+meta_arr[mi[0]]
INFOTXT_OUTPUT,infotxt
writeonce[0]=0
ENDIF
ENDIF
ENDIF
ENDFOR
...
...
@@ -4978,6 +4987,9 @@ FOR vc=0,N_ELEMENTS(bchks)-1 DO BEGIN
ENDIF ELSE option=0
IF option NE 0 THEN BEGIN
;Determine the VAR_FILL_VALUE
zci=WHERE(mv_dbl[*,bbci[0]] NE 0.d,zccnt)
IF zccnt NE 0 THEN bvtfv=mv_dbl[2,bci[0]] ELSE bvtfv=DOUBLE(mv_lng[2,bci[0]])
writeonceb=[1,1]
FOR i=0L,n_sec-1L DO BEGIN
FOR j=0,n_ind-1 DO BEGIN ;check that order of the boundary sets matches the axis variable ordering
...
...
@@ -4987,16 +4999,21 @@ FOR vc=0,N_ELEMENTS(bchks)-1 DO BEGIN
3: bvtest=bvals[*,i,j]
4: bvtest=bvals[j,*,i]
ENDCASE
asc
=-
1
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
SORT
(
bvtest
)])
THEN
asc
=
1
$
;
ascending
order
ELSE
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
REVERSE
(
SORT
(
bvtest
))])
THEN
asc
=
0
;
descending
order
IF
(
ascending
NE
asc
)
AND
(
writeonceb
[
0
]
EQ
1
)
THEN
BEGIN
;
order
of
the
boundaries
dataset
does
not
match
axis
dataset
IF
ascending
EQ
1
THEN
itxt
=
'increasing'
ELSE
itxt
=
'decreasing'
infotxt
=
'3 '
+
bchks
[
vc
]
+
'.BOUNDARIES order does not match '
+
bchks
[
vc
]
+
' '
+
itxt
+
' ordering for '
+
meta_arr
[
mi
[
0
]]
INFOTXT_OUTPUT
,
infotxt
writeonceb
[
0
]
=
0
;check for VAR_FILL_VALUES in bvtest
gvi=WHERE(bvtest NE bvtfv,gvcnt)
IF gvcnt GT 1 THEN BEGIN
bvtest=bvtest[gvi]
asc=-1
IF ARRAY_EQUAL(bvtest,bvtest[SORT(bvtest)]) THEN asc=1 $ ;ascending order
ELSE IF ARRAY_EQUAL(bvtest,bvtest[REVERSE(SORT(bvtest))]) THEN asc=0 ;descending order
IF (ascending NE asc) AND (writeonceb[0] EQ 1) THEN BEGIN
;order of the boundaries dataset does not match axis dataset
IF ascending EQ 1 THEN itxt='increasing' ELSE itxt='decreasing'
infotxt='
3
'+bchks[vc]+'
.
BOUNDARIES
order
does
not
match
'+bchks[vc]+'
'+itxt+'
ordering
for
'+meta_arr[mi[0]]
INFOTXT_OUTPUT,infotxt
writeonceb[0]=0
ENDIF
ENDIF
ENDFOR
ENDFOR
...
...
@@ -5009,16 +5026,21 @@ FOR vc=0,N_ELEMENTS(bchks)-1 DO BEGIN
3: bvtest=bvals[j,i,*]
4: bvtest=bvals[*,j,i]
ENDCASE
asc
=-
1
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
SORT
(
bvtest
)])
THEN
asc
=
1
$
;
ascending
order
ELSE
IF
ARRAY_EQUAL
(
bvtest
,
bvtest
[
REVERSE
(
SORT
(
bvtest
))])
THEN
asc
=
0
;
descending
order
IF
(
ascending
NE
asc
)
AND
(
writeonceb
[
1
]
EQ
1
)
AND
(
ftirchk
EQ
0
)
THEN
BEGIN
;
order
of
the
boundaries
values
does
not
match
axis
dataset
IF
ascending
EQ
1
THEN
itxt
=
'increasing'
ELSE
itxt
=
'decreasing'
infotxt
=
'3 Boundary index order does not match '
+
bchks
[
vc
]
+
' '
+
itxt
+
' ordering for '
+
meta_arr
[
mi
[
0
]]
INFOTXT_OUTPUT
,
infotxt
writeonceb
[
1
]
=
0
;check for VAR_FILL_VALUES in bvtest
gvi=WHERE(bvtest NE bvtfv,gvcnt)
IF gvcnt GT 1 THEN BEGIN
bvtest=bvtest[gvi]
asc=-1
IF ARRAY_EQUAL(bvtest,bvtest[SORT(bvtest)]) THEN asc=1 $ ;ascending order
ELSE IF ARRAY_EQUAL(bvtest,bvtest[REVERSE(SORT(bvtest))]) THEN asc=0 ;descending order
IF (ascending NE asc) AND (writeonceb[1] EQ 1) AND (ftirchk EQ 0) THEN BEGIN
;order of the boundaries values does not match axis dataset
IF ascending EQ 1 THEN itxt='increasing' ELSE itxt='decreasing'
infotxt='
3
Boundary
index
order
does
not
match
'+bchks[vc]+'
'+itxt+'
ordering
for
'+meta_arr[mi[0]]
INFOTXT_OUTPUT,infotxt
writeonceb[1]=0
ENDIF
ENDIF
ENDFOR
ENDFOR
...
...
@@ -6166,7 +6188,7 @@ PRO idlcr8hdf, ga, sds, tav, odir, reterr, H5=o1, AVK=o2, LOG=o4, POPUP=o5, QA=o
;
;Program documentation, idlcr8hdf-v4.0_Readme.pdf, available from http://avdc.gsfc.nasa.gov.
;
;
Program
sub
-
version
4.0
b6
6
(
20241
126
)
;Program sub-version 4.0b6
7
(20241
218
)
; ----------
;Written by Ian Boyd for the EVDC/AVDC - iboyd@bryanscientific.org
;
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment