40 pure function rev(ang)
45 real(
double),
intent(in) :: ang
63 real,
intent(in) :: ang
83 real(
double),
intent(in) :: ang
86 rev360 = ang - dble(floor(ang/360.d0)) * 360.d0
106 real(
double),
intent(in) :: ang
126 real,
intent(in) :: ang
152 real(
double),
intent(in) :: ang,cen
177 real(
double),
intent(in) :: tm
180 rv = tm - floor(tm/24.d0) * 24
195 real(
double),
intent(in) :: tm
198 rv12 = tm - floor(tm/24.d0) * 24
214 real(
double),
intent(in) :: ang
217 rv180 = ang - floor(ang/360.d0) * 360
239 pure function asep(l1,l2, b1,b2)
243 real(
double),
intent(in) :: l1,l2, b1,b2
247 asep = acos(min(max( sin(b1)*sin(b2) + cos(b1)*cos(b2)*cos(dl), -1.d0),1.d0))
249 if(
asep.lt.3.d-3)
then
250 bb =
rev2((b1+b2)/2.d0)
252 asep = sqrt((dl*cos(bb))**2 + db**2)
269 pure function calpa(lon1,lon2,lat1,lat2)
271 real(double),
intent(in) :: lon1,lon2,lat1,lat2
272 real(double) ::
calpa,dlon
275 calpa = atan2( sin(dlon), cos(lat1)*tan(lat2) - sin(lat1)*cos(dlon) )
269 pure function calpa(lon1,lon2,lat1,lat2)
…
294 real(
double),
intent(in) :: pa
295 character ::
pastr_en*(2),pas(9)*(2)
297 pas = (/
'N ',
'NE',
'E ',
'SE',
'S ',
'SW',
'W ',
'NW',
'N '/)
315 real(
double),
intent(in) :: pa
316 character ::
pastr_nl*(11),pas(9)*(11)
318 pas = (/
'noorden ',
'noordoosten',
'oosten ',
'zuidoosten ',
'zuiden ',
'zuidwesten ',
'westen ',
'noordwesten', &
337 real(
double),
intent(in) :: pa
340 pas = (/
'N ',
'NO',
'O ',
'ZO',
'Z ',
'ZW',
'W ',
'NW',
'N '/)
362 real(
double),
intent(in) :: wd
363 character ::
wdstr_en*(14),wds(0:15)*(14)
365 wds = [
character(len=14) ::
'north',
'northnortheast',
'northeast',
'eastnortheast',
'east',
'eastsoutheast',
'southeast', &
366 'southsoutheast',
'south',
'southsouthwest',
'southwest',
'westsouthwest',
'west',
'westnorthwest',
'northwest',
'northnorthwest']
385 real(
double),
intent(in) :: wd
388 wds = (/
'N ',
'NNE',
'NE ',
'ENE',
'E ',
'ESE',
'SE ',
'SSE',
'S ',
'SSW',
'SW ',
'WSW',
'W ',
'WNW',
'NW ',
'NNW'/)
406 real(
double),
intent(in) :: wd
409 wds = (/
'N ',
'NNO',
'NO ',
'ONO',
'O ',
'OZO',
'ZO ',
'ZZO',
'Z ',
'ZZW',
'ZW ',
'WZW',
'W ',
'WNW',
'NW ',
'NNW'/)
427 real(
double),
intent(in) :: wd
428 character ::
wdstr_nl*(14),wds(0:15)*(14)
431 'noord ',
'noordnoordoost',
'noordoost ',
'oostnoordoost ', &
432 'oost ',
'oostzuidoost ',
'zuidoost ',
'zuidzuidoost ', &
433 'zuid ',
'zuidzuidwest ',
'zuidwest ',
'westzuidwest ', &
434 'west ',
'westnoordwest ',
'noordwest ',
'noordnoordwest'/)
453 real(
double),
intent(in) :: wd
475 real(
double),
intent(in) :: wd
478 wds = (/
'noord ',
'noordoost',
'oost ',
'zuidoost ',
'zuid ',
'zuidwest ',
'west ',
'noordwest',
'noord '/)
Procedures to handle angles.
pure character function, dimension(3) wdstr_ens(wd)
Converts a wind direction/azimuth to one of 16 three-letter English wind-direction abbreviations (NNE...
pure character function, dimension(14) wdstr_en(wd)
Converts a wind direction/azimuth to one of 16 English wind directions (northnortheast,...
pure real function rrev(ang)
Returns angle in radians between 0 and 2pi – single precision.
pure real(double) function revc(ang, cen)
Returns angle in radians between cen-pi and cen+pi.
pure character function, dimension(2) wdstr_nls2(wd)
Converts a wind direction/azimuth to one of 8 two-letter Dutch secondary wind-direction abbreviations...
pure real(double) function rv(tm)
Returns time in hours between 0 and 24.
pure real(double) function calpa(lon1, lon2, lat1, lat2)
Calculates the position angle of object 2 with respect to object 1, COUNTERCLOCKWISE from the north.
pure real(double) function rev2(ang)
Returns angle in radians between -pi and pi.
pure real(double) function rv180(ang)
Returns angle in degrees between -180 and 180.
pure real function rrev2(ang)
Returns angle in radians between -pi and pi – single precision.
pure character function, dimension(2) pastr_en(pa)
Converts a position angle to one of eight English two-letter abbreviations (NE, SW)
pure character function, dimension(3) wdstr_nls(wd)
Converts a wind direction/azimuth to one of 16 three-letter Dutch wind-direction abbreviations (NNO,...
pure real(double) function rev360(ang)
Returns angle in degrees between 0 and 360.
pure character function, dimension(9) wdstr_nl8(wd)
Converts a wind direction/azimuth to one of 8 full Dutch secondary wind-direction (noordoost,...
pure real(double) function asep(l1, l2, b1, b2)
Calculate the angular separation between two objects with given longitudes and latitudes.
pure real(double) function rev(ang)
Returns angle in radians between 0 and 2pi.
pure character function, dimension(2) pastr_nls(pa)
Converts a position angle to one of eight Dutch abbreviations (NO,ZW)
pure character function, dimension(11) pastr_nl(pa)
Converts a position angle to one of eight full Dutch strings (noordoosten, noorden)
pure real(double) function rv12(tm)
Returns time in hours between -12 and 12.
pure character function, dimension(14) wdstr_nl(wd)
Converts a wind direction/azimuth to one of 16 full Dutch wind-direction strings (noordnoordoost,...
Provides all constants in the library, and routines to define them.
real(double), parameter, public pi2
2*pi
real(double), parameter, public pi
pi
real, parameter, public rpi2
2*pi
real(double), parameter, public r2d
Radians to degrees.
real, parameter, public rpi
pi
Provides kinds and related constants/routines.
integer, parameter double
Double-precision float. Precision = 15, range = 307.