21 OPERATOR(.equalto.), &
36 PUBLIC ::
OPERATOR(==)
50 INTERFACE OPERATOR(==)
52 END INTERFACE OPERATOR(==)
60 '$Id: NLTE_Predictor_Define.f90 60152 2015-08-13 19:19:13Z paul.vandelst@noaa.gov $' 62 REAL(fp),
PARAMETER ::
zero = 0.0_fp
63 REAL(fp),
PARAMETER ::
one = 1.0_fp
65 INTEGER,
PARAMETER ::
ml = 512
67 INTEGER,
PARAMETER ::
sl = 20
78 LOGICAL :: is_allocated = .true.
87 LOGICAL :: is_active = .false.
89 LOGICAL :: compute_tm = .true.
137 nlte_predictor%Is_Active = .false.
138 nlte_predictor%Compute_Tm = .true.
166 WRITE(*,
'(1x,"NLTE_Predictor OBJECT")')
168 WRITE(*,
'(3x,"Release.Version :",1x,i0,".",i0)') nlte_predictor%Release, nlte_predictor%Version
170 WRITE(*,
'(3x,"n_Layers :",1x,i0)') nlte_predictor%n_Layers
171 WRITE(*,
'(3x,"n_Predictors :",1x,i0)') nlte_predictor%n_Predictors
173 WRITE(*,
'(3x,"Is_Active :",1x,l1)') nlte_predictor%Is_Active
174 WRITE(*,
'(3x,"Compute_Tm :",1x,l1)') nlte_predictor%Compute_Tm
176 WRITE(*,
'(3x,"k1 :",4(1x,i0,:,","))') nlte_predictor%k1
177 WRITE(*,
'(3x,"k2 :",4(1x,i0,:,","))') nlte_predictor%k2
178 WRITE(*,
'(3x,"isen :",1x,i0)') nlte_predictor%isen
179 WRITE(*,
'(3x,"isol :",1x,i0)') nlte_predictor%isol
180 WRITE(*,
'(3x,"Tm :")')
181 WRITE(*,
'(5(1x,es13.6,:))') nlte_predictor%Tm
182 WRITE(*,
'(3x,"Predictor :")')
183 WRITE(*,
'(5(1x,es13.6,:))') nlte_predictor%Predictor
184 WRITE(*,
'(3x,"w :")')
185 WRITE(*,
'(5(1x,es13.6,:))') nlte_predictor%w
225 CHARACTER(*),
PARAMETER :: routine_name =
'NLTE_Predictor_ValidRelease' 236 WRITE( msg,
'("An NLTE_Predictor data update is needed. ", & 237 &"NLTE_Predictor release is ",i0,". Valid release is ",i0,"." )' ) &
247 WRITE( msg,
'("An NLTE_Predictor software update is needed. ", & 248 &"NLTE_Predictor release is ",i0,". Valid release is ",i0,"." )' ) &
291 CHARACTER(*),
INTENT(OUT) :: info
293 INTEGER,
PARAMETER :: carriage_return = 13
294 INTEGER,
PARAMETER :: linefeed = 10
296 CHARACTER(2000) :: long_string
299 WRITE( long_string, &
300 '(a,1x,"NLTE_Predictor RELEASE.VERSION: ",i2,".",i2.2,a,3x, & 302 &"N_PREDICTORS=",i0 )' ) &
303 achar(carriage_return)//achar(linefeed), &
304 nlte_predictor%Release, nlte_predictor%Version, &
305 achar(carriage_return)//achar(linefeed), &
306 nlte_predictor%n_Layers , &
307 nlte_predictor%n_Predictors
311 info = long_string(1:
min(len(info), len_trim(long_string)))
340 CHARACTER(*),
INTENT(OUT) :: id
384 result( is_comparable )
386 INTEGER,
OPTIONAL,
INTENT(IN) :: n_sigfig
387 LOGICAL :: is_comparable
392 is_comparable = .false.
393 IF (
PRESENT(n_sigfig) )
THEN 401 IF ( (x%Release /= y%Release) .OR. &
402 (x%Version /= y%Version) )
RETURN 404 IF ( (x%n_Layers /= y%n_Layers ) .OR. &
405 (x%n_Predictors /= y%n_Predictors ) )
RETURN 407 IF ( (x%Is_Active .NEQV. y%Is_Active ) .OR. &
408 (x%Compute_Tm .NEQV. y%Compute_Tm) .OR. &
409 (x%isen /= y%isen ) .OR. &
410 (x%isol /= y%isol ) )
RETURN 412 IF ( any(x%k1 /= y%k1) .AND. any(x%k2 /= y%k2) )
RETURN 419 is_comparable = .true.
455 is_active = nlte_predictor%Is_Active
509 IF ( (x%Release /= y%Release) .OR. &
510 (x%Version /= y%Version) )
RETURN 512 IF ( (x%n_Layers /= y%n_Layers ) .OR. &
513 (x%n_Predictors /= y%n_Predictors ) )
RETURN 515 IF ( (x%Is_Active .NEQV. y%Is_Active ) .OR. &
516 (x%Compute_Tm .NEQV. y%Compute_Tm) .OR. &
517 (x%isen /= y%isen ) .OR. &
518 (x%isol /= y%isol ) )
RETURN 520 IF ( all(x%k1 == y%k1 ) .AND. &
521 all(x%k2 == y%k2 ) .AND. &
522 all(x%Tm .equalto. y%Tm ) .AND. &
523 all(x%Predictor .equalto. y%Predictor) .AND. &
524 all(x%w .equalto. y%w ) ) &
character(*), parameter module_version_id
elemental logical function, public nlte_predictor_compare(x, y, n_SigFig)
integer, parameter, public failure
elemental subroutine, public nlte_predictor_destroy(NLTE_Predictor)
real(fp), parameter, public zero
elemental logical function, public nlte_predictor_isactive(NLTE_Predictor)
integer, parameter, public fp
integer, parameter, public n_nlte_layers
logical function, public nlte_predictor_validrelease(NLTE_Predictor)
subroutine, public nlte_predictor_info(NLTE_Predictor, Info)
elemental logical function nlte_predictor_equal(x, y)
integer, parameter, public n_nlte_predictors
real(fp), parameter, public one
recursive subroutine, public display_message(Routine_Name, Message, Error_State, Message_Log)
integer, parameter, public default_n_sigfig
integer, parameter nlte_predictor_release
subroutine, public nlte_predictor_defineversion(Id)
integer, parameter nlte_predictor_version
subroutine, public nlte_predictor_inspect(NLTE_Predictor)
integer, parameter, public success
integer, parameter, public information