62 '$Id: ODAS_Predictor_Define.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 69 REAL(fp),
PARAMETER ::
zero = 0.0_fp
71 INTEGER,
PARAMETER ::
ml = 256
80 LOGICAL :: is_allocated = .false.
85 INTEGER :: n_layers = 0
86 INTEGER :: n_predictors = 0
87 INTEGER :: n_absorbers = 0
88 INTEGER :: n_orders = 0
90 REAL(fp) :: secant_sensor_zenith =
zero 92 REAL(fp),
ALLOCATABLE :: a(:,:)
93 REAL(fp),
ALLOCATABLE :: da(:,:)
94 REAL(fp),
ALLOCATABLE :: avea(:,:)
95 REAL(fp),
ALLOCATABLE :: ap(:,:,:)
96 REAL(fp),
ALLOCATABLE :: x(:,:)
150 status = self%Is_Allocated
179 self%Is_Allocated = .false.
247 n_Predictors , & ! Input
248 n_Absorbers , & ! Input
252 INTEGER,
INTENT(IN) :: n_layers
253 INTEGER,
INTENT(IN) :: n_predictors
254 INTEGER,
INTENT(IN) :: n_absorbers
255 INTEGER,
INTENT(IN) :: n_orders
257 INTEGER :: alloc_stat
260 IF ( n_layers < 1 .OR. &
261 n_predictors < 1 .OR. &
262 n_absorbers < 1 .OR. &
263 n_orders < 1 )
RETURN 267 ALLOCATE( self%A(0:n_layers,n_absorbers), &
268 self%dA(n_layers,n_absorbers), &
269 self%aveA(n_layers,n_absorbers), &
270 self%Ap(n_layers,n_orders,n_absorbers), &
271 self%X(n_layers,n_predictors), &
273 IF ( alloc_stat /= 0 )
RETURN 277 self%n_Layers = n_layers
278 self%n_Predictors = n_predictors
279 self%n_Absorbers = n_absorbers
280 self%n_Orders = n_orders
284 self%Is_Allocated = .true.
319 CHARACTER(*),
PARAMETER :: rfmt=
'es13.6' 321 WRITE(*,
'(1x,"ODAS_Predictor OBJECT")')
323 WRITE(*,
'(3x,"Release.Version :",1x,i0,".",i0)') self%Release, self%Version
325 WRITE(*,
'(3x,"n_Layers :",1x,i0)') self%n_Layers
326 WRITE(*,
'(3x,"n_Predictors :",1x,i0)') self%n_Predictors
327 WRITE(*,
'(3x,"n_Absorbers :",1x,i0)') self%n_Absorbers
328 WRITE(*,
'(3x,"n_Orders :",1x,i0)') self%n_Orders
330 WRITE(*,
'(3x,"ODAS scalar data :")')
331 WRITE(*,
'(5x,"Secant_Sensor_Zenith :",'//rfmt//
')') self%Secant_Sensor_Zenith
334 WRITE(*,
'(3x,"ODAS data arrays :")')
335 WRITE(*,
'(5x,"Integrated Absorber :")')
336 DO j = 1, self%n_Absorbers
337 WRITE(*,
'(7x,"Absorber#: ",i0)') j
338 WRITE(*,
'(5(1x,'//rfmt//
',:))') self%A(:,j)
340 WRITE(*,
'(5x,"Integrated Absorber Level Difference:")')
341 DO j = 1, self%n_Absorbers
342 WRITE(*,
'(7x,"Absorber#: ",i0)') j
343 WRITE(*,
'(5(1x,'//rfmt//
',:))') self%dA(:,j)
345 WRITE(*,
'(5x,"Integrated Absorber Layer Average:")')
346 DO j = 1, self%n_Absorbers
347 WRITE(*,
'(7x,"Absorber#: ",i0)') j
348 WRITE(*,
'(5(1x,'//rfmt//
',:))') self%aveA(:,j)
350 WRITE(*,
'(5x,"Exponent Power of Absorber Level :")')
351 DO j = 1, self%n_Absorbers
352 DO i = 1, self%n_Orders
353 WRITE(*,
'(7x,"Absorber#: ",i0,"; Order#: ",i0)') j, i
354 WRITE(*,
'(5(1x,'//rfmt//
',:))') self%Ap(:,i,j)
358 DO i = 1, self%n_Predictors
359 WRITE(*,
'(7x,"Predictor#: ",i0)') i
360 WRITE(*,
'(5(1x,'//rfmt//
',:))') self%X(:,i)
391 self%Secant_Sensor_Zenith =
zero integer, parameter odas_predictor_release
elemental subroutine, public odas_predictor_zero(self)
real(fp), parameter, public zero
elemental subroutine, public odas_predictor_create(self, n_Layers, n_Predictors, n_Absorbers, n_Orders)
integer, parameter, public fp
character(*), parameter write_error_status
subroutine, public odas_predictor_inspect(self)
elemental subroutine, public odas_predictor_destroy(self)
character(*), parameter module_version_id
elemental logical function, public odas_predictor_associated(self)
integer, parameter odas_predictor_version