File Format
An ac file is an ASCII text file with an extension ".ac" and its lines are separated by CRLF. One ac file may include more than one channel records obtained in a strong motion instrument.
The first line contains following information.
- Columns 1 to 10 : Date (yyyy/mm/dd) of the record.
- Columns 12 to 19: Time (hh:nn:ss) when the first data was sampled. It may be the local time at the station.
- Columns 21 to 23: Number of channels included in the file.
- Columns 25 to 27: Sampling frequency in Herz (samples per second).
- Columns 29 to 33: Number of data of each channel. All channel have the same number of data.
- Columns 35 to end: Station information. Normal format is "
CODE: Description
".CODE
is the station code (a unique abbreviation in the BRI network), andDescription
is the description (usually name) of the station. Lengths ofCODE
andDescription
are not fixed.
The second line is a channel header for the first channel record.
- Columns 1 to 10: Left justified label of the channel. It usually consists of an azimuth (or a direction) and a location code delimited by a hyphen "-". The azimuth is a 3-digit number and a clockwise angle in degree from the north. This part can be a character string indicationg a direction. For example,
063-GL
indicates the N063°E (63 degrees from the north to the east) direction at GL (ground level) andUP-GL
indicates a upward component at GL. - Columns 11 to 20: Peak value of the channel.
- Columns 21 to 30: Occurrence step of the peak.
- Columns 31 to 40: Offset used in the primary data processing.
- Columns 41 to 50: Calibration coefficient used in the primary data processing.
The third and following lines make a data block. A width of an acceleration data is 10 columns and one line contains 8 values. The format of data corresponds to (8F10.3)
in FORTRAN.
A set of a channel header and a data block is repeated for every channel as shown in the following sample.
1993/01/15 20:06:08 3 100 15700 KSR: Kushiro Local Meteorological Observatory, JMA 063-GL -711.403 3675 0.013 3.00e-2 0.077 -0.043 0.017 0.017 0.017 -0.043 -0.013 0.017 -0.013 0.017 -0.013 -0.013 0.047 -0.013 0.017 -0.043 -0.043 -0.073 0.017 -0.013 0.047 -0.043 -0.013 -0.013 -0.043 -0.013 0.017 -0.013 0.017 -0.043 0.017 0.047 . . (snipped) . 1.007 0.707 0.797 1.097 0.677 -0.133 -0.403 -0.313 -0.733 -1.243 -0.943 -0.283 153-GL -637.240 3617 0.010 3.00e-2 0.020 0.020 -0.010 0.020 0.020 -0.040 -0.040 0.020 -0.010 -0.010 0.020 0.020 -0.010 -0.010 -0.010 -0.010 -0.040 -0.010 0.020 -0.010 -0.040 -0.010 -0.010 -0.040 -0.010 -0.010 -0.010 -0.010 -0.010 0.020 -0.010 -0.010 . . (snipped) . -1.210 -1.690 -2.230 -2.260 -1.900 -1.480 -1.090 -0.610 -0.400 -0.490 -0.370 0.110 UP-GL 363.391 3298 -0.030 3.00e-2 0.060 0.000 0.000 -0.030 0.030 0.000 -0.030 0.060 0.030 -0.030 -0.060 0.060 0.060 0.030 0.000 -0.030 -0.060 0.000 0.030 -0.030 -0.030 0.000 0.030 0.060 0.030 -0.030 -0.060 -0.060 0.030 0.030 0.000 -0.030 . . (snipped) . -0.600 -0.780 -0.420 0.450 0.960 0.600 -0.210 -0.840 -0.990 -0.810 -0.810 -0.600
Sample program
The following code is a sample program in Fortran 90 to read an ac file.
real(4), allocatable:: peak(:), acc(:,:) character(10), allocatable:: comp(:) integer(4):: nfrq, nstp, nch, ich, istp, i integer(4):: iostat real(4):: dt, offset, calib character(10):: date, time, code character(128):: site, fname ! fname='sample.ac' open (88, file=fname, iostat=iostat) ! read file header. read (88, '(a10,1x,a8,2i4,i6,a128)') date, time, nch, nfrq, nstp, site ! allocate arrays. allocate (comp(nch), peak(nch), acc(nstp,nch)) ! read header and acceleration of each channel. do ich=1, nch read (88, '(a10,f10.3)') comp(ich), peak(ich) read (88, '(8f10.3)') (acc(i,ich), i=1,nstp) end do ! close a file. close (88) ! get some parameters dt=1/real(nfrq) i=index(site, ':') if (i.gt.0) then code=site(1:i-1) site=site(i+1:) else code='' endif ! output parameters. print '(''Acceleration filename: '',a)', trim(fname) print '('' Sitecode: '',a)', trim(code) print '('' Sitename: '',a)', trim(site) print '(''Trigger time and date:'',a8,1x,a10)', time, date print '('' Number of channels:'',i6)', nch print '('' Sampling frequency:'',i6,''Hz'')', nfrq print '('' (Time interval:'',f6.3,''sec)'')', dt print '('' Number of steps:'',i6)', nstp do ich=1, nch print '(''ch:'',i2,'' ('',a,'') peak:'',f8.2)', & ich, trim(comp(ich)), peak(ich) end do ! release arrays. deallocate (peak, comp, acc) stop end
Notes
- The unit of acceleration records is cm/s2.
- Removal of DC and conversion to acceleration were only made on original data. The DC is offset by subtracting the mean value for a few seconds at the beginning.
- Time on a header line is the starting time corresponding to the first step data. The accuracy of the time is not warranted.