diff --git a/src/io_metadata.f90 b/src/io_metadata.f90 new file mode 100644 index 0000000000000000000000000000000000000000..61bb9ba8f3cd0cbd0a2f2dca3f8c925a13380d0e --- /dev/null +++ b/src/io_metadata.f90 @@ -0,0 +1,205 @@ +module io_metadata + implicit none + + type :: variable_metadata + character(len=32) :: name ! variable name + character(len=32), dimension(4) :: dim_names ! dimension names + character(len=32) :: char_name(10) = '' ! character metadata names + character(len=32) :: char_value(10) = '' ! character metadata values + character(len=32) :: int_name(10) = '' ! integer metadata names + integer :: int_value(10) = 0 ! integer metadata values + character(len=32) :: real_name(10) = '' ! real metadata names + real :: real_value(10) = 0.0 ! real metadata values + end type variable_metadata + + ! variable metadata collection + + type(variable_metadata), public :: meta_temperature = variable_metadata( & + name = 'T2M', & + dim_names = [character(len=32) :: 'X', 'Y', 'Z', 'Time'], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Air Temperature', & + 'C', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_pressure = variable_metadata( & + name = 'SLP', & + dim_names = [character(len=32) :: 'X', 'Y', 'Time', ''], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Air Pressure at Sea Level', & + 'Pa', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_humidity = variable_metadata( & + name = 'HUM_2M', & + dim_names = [character(len=32) :: 'X', 'Y', 'Time', ''], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Relative Humidity', & + '%', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_richnum = variable_metadata( & + name = 'RICHNUM', & + dim_names = [character(len=32) :: 'X', 'Y', 'Z', 'Time'], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Richardson number', & + 'Ri', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_anzt = variable_metadata( & + name = 'ANZT', & + dim_names = [character(len=32) :: 'X', 'Y', 'Z', 'Time'], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'ANZT Vertical mixing parameter', & + 'ANZT', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_anzu = variable_metadata( & + name = 'ANZU', & + dim_names = [character(len=32) :: 'X', 'Y', 'Z', 'Time'], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'ANZU Vertical mixing parameter', & + 'ANZU', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_test1d = variable_metadata( & + name = 'TEST1D', & + dim_names = [character(len=32) :: 'X', '', '', ''], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Test 1D variable', & + '-', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_test2d = variable_metadata( & + name = 'TEST2D', & + dim_names = [character(len=32) :: 'X', 'Y', '', ''], & + char_name = [character(len=32) :: & + 'long_name', & + 'units', & + '', '', '', '', '', '', '', ''], & + char_value = [character(len=32) :: & + 'Test 2D variable', & + '-', & + '', '', '', '', '', '', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + 1.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_ri_grad_2d = variable_metadata( & + name = 'Ri_grad', & + dim_names = [character(len=32) :: 'Z', 'Time', '', '']) + + type(variable_metadata), public :: meta_kh_2d = variable_metadata( & + name = 'kh', & + dim_names = [character(len=32) :: 'Z', 'Time', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + -3.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + + type(variable_metadata), public :: meta_km_2d = variable_metadata( & + name = 'km', & + dim_names = [character(len=32) :: 'Z', 'Time', '', ''], & + real_name = [character(len=32) :: & + 'missing_value', & + 'scale_factor', & + '', '', '', '', '', '', '', ''], & + real_value = [& + -9999.9, & + -3.0, & + 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]) + +end module io_metadata \ No newline at end of file