ADDENDUM:
 
 
Handbook of Quality Control Procedures and Methods
for Surface Meteorology Data
 
 
 
Shawn R. Smith and David M. Legler
 
 
 
 
 
Data Assembly Center for Surface Meteorology
Center for Ocean Atmospheric Prediction Studies
Florida State University
Tallahassee, FL 32306-2840
 
 
WORLD OCEANS CIRCULATION EXPERIMENT
Report No. 141/96
 
COAPS Technical Report
No. 96-1a
 
 
 
 
15 December 1997

Introduction

The purpose of this addendum is to outline changes and additions made in the quality control procedures at the WOCE Surface Meteorology Data Center (WOCE-MET) in the years following the publication of the "Handbook of Quality Control Procedures and Methods for Surface Meteorology Data". Two new flags have been created and we have made a minor change to the netCDF format to facilitate the use of plotting utilities. Furthermore, serious errors were discovered in our procedures for validating earth-relative winds on moving vessels. Corrections to the wind procedures are outlined in this addendum and we ask that all users disregard Section 3.6 in the 1996 Handbook. Each section of this addendum refers to a section of the 1996 Handbook. All changes and reasons for the change will be discussed.

 Section 2.0 - Version 1.1.0 netCDF files

WOCE-MET made modifications to the dimensions in the netCDF format prior to the release of our 1998 CD-rom. The earlier public netCDF versions indexed each variable by the record number (Appendix B - 1996 Handbook). After 01 January 1998, all public netCDF file will have variables indexed by time. A sample of the new format is presented in Appendix D. By changing the array index, we have made our netCDF files more compatible with commonly used graphics and netCDF display software (e.g., ncview, ferret, etc).

An additional change was made to the attributes for missing and special values (Appendix D). For all netCDF files, WOCE-MET moved the missing_value and special value global attributes to variable attributes. The new variable attributes have the same variable type as the variable to which they reference. For example, air temperature (T) is stored as a floating point value with a missing value = -9999.0. The missing value for the weather code (WX) is -9999, since WX is stored as a short integer. This change in the attributes allows missing values to be displayed correctly using pre-existing netCDF viewing software. All other components of the public netCDF format remain unchanged.

We also made an addition to our public (.nc and .asc) files. As of 15 August 1997, our public format files will contain the platform wind direction and platform wind speed variables. These are wind measurements made relative to the vessel and they are critical for accurate true wind computation. In addition, for those interested in studying the distortion of wind flow over a vessel, or who wish to identify ship acceleration errors in the wind data, the platform wind values are essential (Smith et al. 1998). For files released prior to 15 August 1997, we can provide the platform wind data upon request (for vessels providing these values to WOCE-MET). We did not add the platform wind data to the older public files because extensive quality control was not applied to the platform wind data for ships processed prior to 15 August 1997. For meteorological data released after 15 August 1997 (e.g. the R/V Meteor data), both automated and visual quality control was applied to platform-relative winds.

 Section 2.3 - Flags added during data conversion to netCDF

Two new flags, O and R, have been assigned since the original Handbook was printed. These flags are added to meteorological data files during the conversion from the original data format to the WOCE-MET internal netCDF format. Both flags represent values that are of good quality. If O or R flagged values are found to be in error by visual inspection, an appropriate flag is assigned to the value by the data quality evaluator.

The O flag is used to identify values that have different original units than the value given in the "convers units" variable attribute. Typically, we receive data with only one original unit; however, in some cases, two unit systems are used by the provider. For example, the R/V Johan Hjort reported some of the wind speed data with units of knots and the remainder with the Beaufort Force scale. When the data were converted to the WOCE-MET standard units (m s-1) the convers units attribute was assigned the code for original units in knots. As this does not apply to all the wind speed data, the O flag was assigned to the values provided as Beaufort Force. The O flag is case specific and can be applied to any meteorological parameter provided to the data center with more than one original unit. A discussion of the usage of the O flag for a specific cruise will appear in the quality control report.

The R flag simply notes that the value provided to the data center was interpolated by the data provider. No interpolation is done by WOCE-MET, we simply apply the R flag to highlight interpolated values. If the method of interpolation is known, that information is provided in the quality control report.

 Section 3.6 - Earth-relative wind recomputation test

Investigating the quality of ship wind data has provided WOCE-MET personnel with and understanding of the pitfalls of wind measurements made on moving vessels. In the process, we discovered significant errors in the computations presented in the 1996 Handbook. After extensive reanalysis of WOCE earth-relative winds (Smith et al. 1998), we made corrections to our earth-relative wind validation codes and the new procedures are outlined below. The error in our old code had little impact on our quality controlled data files, because the earth-relative wind recomputation test is seldom applied. The test is a good idea in theory, but data providers rarely measure or record all the necessary parameters for this test to be completed. To date, only four vessels have provided all the parameters necessary to compute earth-relative winds. For the few vessels where this test was applied under the old system, corrections have been made to the flags.

The WOCE DAC has determined that six parameters are necessary to accurately calculate earth-relative winds from a vessel. These parameters include the platform-relative wind direction and speed, the course and speed of the vessel over the ground, the heading of the vessel, and the zero reference for the wind direction measured by the anemometer. If provided, these six variables will allow WOCE-MET to recompute earth-relative winds.

Both the course and heading must be used to compute accurate earth-relative winds, although estimates can be made when either the course or heading are missing (Smith et al. 1998). Differences between the course and heading are largest at low forward ship speeds as the currents and wind push the vessel sideways through the water. Even at ship speeds greater than 2.5 ms-1, the heading and course are rarely identical.

Knowing the zero reference for the anemometer is also essential, though this information is rarely reported. Typically the zero line is the bow of the vessel. However, some vessels orient their wind measurements with the stern being zero. Thus, all vessels should report the zero reference line for the winds measured on their vessel. It is worth noting that this may or may not be the direction of the zero line on the anemometer itself (Leslie Hartten, personal communication, 1996).

For some vessels, no earth-relative winds were provided; however, the six necessary variable were known. In these cases, WOCE-MET computed earth-relative winds using the same equations as the validation routine. This computation was completed for the automated data from the R/V Thompson and some cruises of the R/V Knorr. When the winds are computed by WOCE-MET, the "inst" variable attribute in the public files will be filled with "calculated at DAC".

Calculating the true wind from a moving vessel requires the observed wind to be adjusted for the mean motion of the ship. For example, consider a person facing forward on the bow of a stationary ship on a calm day. If the ship begins moving, the person will feel a fresh wind on his face. This motion-induced wind vector (M) must be removed from the apparent wind vector (A) to compute a earth relative wind (T)

T = A - M.                                      (7)

The apparent wind is created by adding the heading to the platform-relative wind direction, thus orienting the wind measured on the vessel to true north. If the zero line reference is not the bow of the vessel, the angle from the zero line to the bow must be added to the apparent wind direction. The motion-induced wind has the same magnitude as the course vector (C) with the opposite sign

M = -C.                                          (8)

Therefore a true wind results from adding the course vector to the apparent wind vector

T = A - (-C) = A + C .                    (9)

In the example above, the breeze felt by the man on the bow would be canceled by adding the forward motion of the vessel. A calm true wind speed would be calculated. Mathematical details for this calculation can be found in Smith et al. (1998). Preprints are available on request to wocemet@coaps.fsu.edu.

For WOCE quality control, the earth-relative winds are calculated and compared to wind values received by the DAC. If the directions differ by more than 10 degrees, the earth-relative wind direction reported by the vessel is flagged with an E. For wind speed, an E flag is applied when differences of more than 5 m s-1 occur. The choice of differences to flag may result in more directions than speeds being flagged due to the higher variability in the direction data. Note that the E flags are only designed to note suspect values. Further investigation into E flagged winds is normally necessary before the winds are utilized.

 Section 6.0 - Recommendations for flag use

Data flagged with O and R are of good quality and can be used in most applications. For some applications, interpolated data may not be desired and R flagged data can be omitted at the users discretion.

 Section 7.0 - References (new)

Smith, S.R., M.A. Bourassa, and R.J. Sharp, 1998: Establishing more truth in true winds. J. Atmos. Oceanic Technol., submitted.
Appendix D

Sample listing of the contents of a version 1.1.0 public netCDF file created by the FSU DAC. This file is stored in a binary format but the listing presented here can be created using a netCDF utility called "ncdump" (refer to information provided by Unidata, Appendix A). As of 01 January 1998, this version of the netcdf files will replace all older versions on the WOCE-MET web pages and anonymous ftp server. Note that the variables are indexed by time and most variables have missing and special value attributes.

 
netcdf CCVG.931007011v110 {
dimensions:
              time = 43 ;
              f_string = 12 ;
              ctc_string = 9 ;

variables:
char ctc(time, ctc_string) ;
              ctc:long_name = "cruise track code" ;
              ctc:FORTRAN_format = "a9" ;
long time(time) ;
              time:long_name = "cruise track code" ;
              time:units = "minutes from 1-1-1980 00:00" ;
              time:type = 2 ;
              time:ave_period = 0 ;
              time:ave_center = 0 ;
              time:qcindex = 1 ;
              time:FORTRAN_format = "i12" ;
float lat(time) ;
              lat:long_name = "latitude" ;
              lat:units = "degrees" ;
              lat:convers_units = 0 ;
              lat:qcindex = 2 ;
              lat:FORTRAN_format = "f9.1" ;
float lon(time) ;
              lon:long_name = "longitude" ;
              lon:units = "degrees east" ;
              lon:convers_units = 0 ;
              lon:qcindex = 3 ;
              lon:FORTRAN_format = "f9.1" ;
float PL_CRS(time) ;
              PL_CRS:long_name = "platform course" ;
              PL_CRS:units = "degrees (clockwise from true north)" ;
              PL_CRS:convers_units = 5 ;
              PL_CRS:inst = "Magellan 5000D GPS" ;
              PL_CRS:qcindex = 4 ;
              PL_CRS:FORTRAN_format = "f9.0" ;
              PL_CRS:missing_value = -9999.f ;
              PL_CRS:special_value = -8888.f ;
float PL_SPD(time) ;
              PL_SPD:long_name = "platform speed" ;
              PL_SPD:units = "meters/second" ;
              PL_SPD:convers_units = 5 ;
              PL_SPD:inst = "Magellan 5000D GPS" ;
              PL_SPD:qcindex = 5 ;
              PL_SPD:FORTRAN_format = "f9.1" ;
              PL_SPD:missing_value = -9999.f ;
              PL_SPD:special_value = -8888.f ;
float DIR(time) ;
              DIR:long_name = "earth relative wind direction (meteorological)" ;
              DIR:units = "degrees true" ;
              DIR:convers_units = 0 ;
              DIR:ht = 15.24 ;
              DIR:inst = "calc from F420G Electric Speed Indicator (USA)" ;
              DIR:qcindex = 6 ;
              DIR:FORTRAN_format = "f9.0" ;
              DIR:missing_value = -9999.f ;
              DIR:special_value = -8888.f ;
float SPD(time) ;
              SPD:long_name = "earth relative wind speed" ;
              SPD:units = "meters/second" ;
              SPD:convers_units = 5 ;
              SPD:ht = 15.24 ;
              SPD:inst = "calc from F420G Electric Speed Indicator (USA)" ;
              SPD:qcindex = 7 ;
              SPD:FORTRAN_format = "f9.0" ;
              SPD:missing_value = -9999.f ;
              SPD:special_value = -8888.f ;
float P(time) ;
              P:long_name = "atmospheric pressure" ;
              P:units = "millibars" ;
              P:convers_units = 0 ;
              P:ht = -999.9 ;
              P:type = 2 ;
              P:inst = "Lufft model 8103 quartz barograph" ;
              P:qcindex = 8 ;
              P:FORTRAN_format = "f9.1" ;
              P:missing_value = -9999.f ;
              P:special_value = -8888.f ;
float T(time) ;
              T:long_name = "air temperature" ;
              T:units = "Celsius" ;
              T:convers_units = 0 ;
              T:ht = -999.9 ;
              T:inst = "Nurnberg thermometer" ;
              T:qcindex = 9 ;
              T:FORTRAN_format = "f9.1" ;
              T:missing_value = -9999.f ;
              T:special_value = -8888.f ;
float TS(time) ;
              TS:long_name = "sea temperature" ;
              TS:units = "Celsius" ;
              TS:convers_units = 0 ;
              TS:ht = -999.9 ;
              TS:type = 1 ;
              TS:inst = "themocouple" ;
              TS:qcindex = 10 ;
              TS:FORTRAN_format = "f9.1" ;
              TS:missing_value = -9999.f ;
              TS:special_value = -8888.f ;
float TD(time) ;
              TD:long_name = "dewpoint temperature" ;
              TD:units = "Celsius" ;
              TD:convers_units = 2 ;
              TD:ht = -999.9 ;
              TD:inst = "NOAA/NWS ship synoptic code table" ;
              TD:qcindex = 11 ;
              TD:FORTRAN_format = "f9.1" ;
              TD:missing_value = -9999.f ;
              TD:special_value = -8888.f ;
float TW(time) ;
              TW:long_name = "wet bulb temperature" ;
              TW:units = "Celsius" ;
              TW:convers_units = 0 ;
              TW:ht = -999.9 ;
              TW:inst = "Nurnberg thermometer" ;
              TW:qcindex = 12 ;
              TW:FORTRAN_format = "f9.1" ;
              TW:missing_value = -9999.f ;
              TW:special_value = -8888.f ;
short WX(time) ;
             WX:long_name = "present weather" ;
             WX:FORTRAN_format = "i6" ;
             WX:missing_value = -9999s ;
             WX:special_value = -8888s ;
short TCA(time) ;
             TCA:long_name = "total cloud amount" ;
             TCA:convers_units = 1 ;
             TCA:FORTRAN_format = "i6" ;
             TCA:missing_value = -9999s ;
             TCA:special_value = -8888s ;
short LMCA(time) ;
             LMCA:long_name = "low/middle cloud amount" ;
             LMCA:convers_units = 1 ;
             LMCA:FORTRAN_format = "i6" ;
             LMCA:missing_value = -9999s ;
             LMCA:special_value = -8888s ;
short ZCL(time) ;
             ZCL:long_name = "cloud base height" ;
             ZCL:FORTRAN_format = "i6" ;
             ZCL:missing_value = -9999s ;
             ZCL:special_value = -8888s ;
short LCT(time) ;
             LCT:long_name = "low cloud type" ;
             LCT:FORTRAN_format = "i6" ;
             LCT:missing_value = -9999s ;
             LCT:special_value = -8888s ;
short MCT(time) ;
            MCT:long_name = "middle cloud type" ;
            MCT:FORTRAN_format = "i6" ;
            MCT:missing_value = -9999s ;
            MCT:special_value = -8888s ;
short HCT(time) ;
            HCT:long_name = "high cloud type" ;
            HCT:FORTRAN_format = "i6" ;
            HCT:missing_value = -9999s ;
            HCT:special_value = -8888s ;
char flag(time, f_string) ;
           flag:long_name = "quality control flags" ;
           flag:FORTRAN_format = "a12" ;

 // global attributes:
           :title = "Vidal Gormaz: WOCE PR_14_/04" ;
           :site = "Vidal Gormaz" ;
           :elev = 0 ;
           :ID = "CCVG" ;
           :platform = "Standard instrument shelter on open bridge" ;
           :facility = "Chilean Navy" ;
           :fsu_version = "110" ;
           :startdate = " 7 OCT 1993" ;
           :enddate = "17 OCT 1993" ;
           :EXPOCODE = "20VGNUNEZ/2" ;
           :Release_Date = "15 DEC 1997" ;

 data:

 ctc =
"PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04", "PR_14_/04" ;

 time = 7240680, 7241040, 7241400, 7241760, 7242120, 7242480, 7242840, 7243200, 7243560, 7243920, 7244280, 7244640, 7245000, 7245360, 7245720, 7246080, 7246440, 7246800, 7247160, 7247520, 7247880, 7248240, 7248600, 7248960, 7249320, 7249680, 7250040, 7250400, 7250760, 7251120, 7251480, 7251840, 7252200, 7252560, 7252920, 7253280, 7253640, 7254000, 7254360, 7254720, 7255080, 7255440, 7255800 ;

 lat = -37.9 , -38 , -37.9 , -37.9 , -38 , -38 , -38 , -38 , -38 , -37.9 , -38 , -38.1 , -40 , -40.6 , -41.7 , -42.5 , -43.3 , -44.1 , -44.8 , -45.5 , -46.2 , -46.9 , -47.5 , -48 , -48 , -47.9 , -47.8 , -47.7 , -48 , -47.9 , -48 , -47.9 , -46.9 , -45.8 , -44.9 , -43.9 , -42.9 , 41.6 , -40.9 , -39.9 , -38.7 , -37.6 , -36.7 ;

 lon = 285.9 , 285.3 , 285.2 , 284.4 , 283.4 , 282.5 , 281.6 , 280.4 , 279.4 , 278.4 , 277.8 , 277.8 , 277.8 , 277.8 , 277.8 , 277.8 , 277.8 , 277.8 , 277.7 , 277.7 , 277.8 , 277.8 , 277.8 , 278.1 , 279.3 , 280.5 , 280.7 , 280.7 , 280.8 , 281.9 , 283 , 283.9 , 283.8 , 284 , 284.1 , 284.3 , 284.6 , 285 , 285.1 , 285.5 , 285.8 , 286.1 , 286.7 ;

 PL_HD = 229 , 270 , 269 , 238 , 270 , 269 , 260 , 271 , 269 , 270 , 270 , 180 , 180 , 180 , 185 , 182 , 180 , 180 , 190 , 190 , 210 , 235 , 145 , 95 , 35 , 60 , 340 , 335 , 330 , 90 , 0 , 345 , 8 , 3 , 12 , 15 , 12 , 20 , 12 , 16 , 12 , 15 , 50 ;

 PL_SPD = 0.8 , 5.1 , 5.7 , 1 , 5.7 , 5.7 , 5.7 , 5.7 , 5.7 , 5.7 , 0.5 , 5.7 , 5.7 , 5.7 , 5.7 , 6.2 , 6.2 , 5.1 , 5.1 , 4.6 , 5.1 , 4.1 , 4.6 , 6.2 , 6.2 , 5 , 1 , 1 , 0 , 5.1 , 1 , 3.8 , 5.1 , 5.1 , 5.1 , 5.7 , 5.7 , 5.9 , 6.2 , 6.2 , 5.7 , 5.7 , 5.7 ;

 DIR = 180 , 190 , 190 , 190 , 190 , 190 , 190 , 180 , 190 , 270 , 210 , 190 , 290 , 320 , 300 , 330 , 320 , 270 , 260 , 310 , 310 , 320 , 310 , 300 , 360 , 350 , 350 , 300 , 330 , 150 , 350 , 320 , 240 , 160 , 120 , 350 , 180 , 240 , 250 , 280 , 330 , 0 , 340 ;

 SPD = 7 , 10 , 7 , 10 , 8 , 7 , 5 , 6 , 3 , 5 , 2 , 3 , 4 , 7 , 8 , 12 , 12 , 8 , 12 , 9 , 9 , 11 , 10 , 10 , 11 , 12 , 20 , 15 , 6 , 11 , 14 , 18 , 7 , 7 , 3 , 6 , 7 , 9 , 7 , 9 , 10 , 9 , 9 ;

 P = 1015.8 , 1018 , 1019.8 , 1021 , 1020 , 1022.5 , 1022 , 1022 , 1022.5 , 1023 , 1023.5 , 1023 , 1024 , 1022 , 1020.5 , 1016.5 , 1014.2 , 1014.6 , 1015 , 1016 , 1015 , 1011.5 , 1007 , 1002 , 999 , 995 , 992.5 , 994.5 , 998 , 993 , 989 , 995 , 998.5 , 996.2 , 992.8 , 998.5 , 1000 , 1006.5 , 1011 , 1012 , 1013 , 1014.2 , 1016 ;

 T = 12.5 , 13 , 14 , 13.5 , 12 , 14 , 16.5 , 12.5 , 13 , 13 , 14.5 , 16.5 , 12 , 12 , 14 , 12 , 10.5 , 10 , 11.5 , 9 , 9 , 9 , 9 , 9 , 9 , 10.5 , 10.5 , 9.5 , 8.5 , 6 , 11 , 7.5 , 9 , 8.4 , 9.5 , 11 , 10.5 , 10.5 ,
11.5 , 12 , 11.5 , 10 , 13.5 ;

 TS = 13.3 , 13.3 , 13.3 , 13.3 , 13.3 , 14 , 12.8 , 13.3 , 13.4 , 13.9 , 14 , 14 , 13.3 , 12.2 , 11.7 , 11.7 , 10.6 , 10.6 , 10.6 , 9 , 9 , 8.9 , 9 , 8.9 , 8.9 , 9 , 8.9 , 8.9 , 7.8 , 7.6 , 9.4 , 10.6 , 9 , 10.6 , 10 , 9.8 , 11.7 , 10 , 12.8 , 12.8 , 12.8 , 12.8 , 12.2 ;

 TD = 10 , 11 , 12 , 9 , 8 , 9 , 9 , 7 , 7 , 10 , 10 , 10 , 10 , 9 , 13 , 10 , 10 , 8 , 9 , 8 , 7 , 8 , 5 , 5 , 8 , 9 , 9 , 6 , 7 , 0 , 9 , 7 , 5 , 1 , 4 , 9 , 7 , 9 , 10 , 7 , 11 , 2 , 12 ;

 TW = 11.5 , 12 , 13 , 11 , 10 , 11 , 12.5 , 10 , 10 , 11.5 , 12 , 13 , 11 , 10.5 , 13.5 , 11 , 10 , 9 , 9.5 , 7.5 , 8 , 7.5 , 7 , 7 , 8.5 , 10 , 10 , 8 , 7.5 , 6 , 11 , 7 , 7 , 6.5 , 7 , 10 , 9 , 10 , 11 , 9.5 , 11 , 9 , 13 ;

 WX = 3, 3, 2, 2, 2, 3, 2, 2, 3, 3, 3, 1, 1, 0, 3, 2, 80, 2, 3, 3, 1, 3, 3, 3, 3, 14, 14, -9999, 25, 25, 25, 1, 1, 3, 3, 3, 3, 25, 25, 3, 23, 3, 1 ;

 TCA = 1, 8, 8, 8, 4, 7, 8, 5, 3, 8, 6, 1, 1, 0, 5, 7, 6, 5, 8, 7, 0, 9, 8, 8, 9, 8, 8, 8, 8, 8, 8, 7, 2, 8, 7, 8, 8, 8, 5, 5, 5, 7, 7 ;

 LMCA = 0, 8, 8, 8, 4, 7, 8, 5, 3, 8, 6, 1, 1, 0, 5, 7, 6, 5, 8, 7, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 2, 8, 7, 8, 8, 8, 5, 5, 5, 7, 7 ;

 ZCL = 9, 1, 4, 5, 5, 5, 5, 5, 4, 4, 5, 4, 4, 9, 5, 6, 3, 4, 2, 2, 10, 2, 5, 4, 4, 4, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 3, 3, 5, 4, 4, 5 ;

 LCT = 0, 4, 3, 3, 1, 2, 1, 3, 4, 4, 2, 2, 2, 0, 3, 4, 4, 8, 1, 1, 0, 7, 4, 8, 10, 7, 8, 8, 8, 8, 8, 8, 6, 7, 4, 4, 4, 6, 6, 4, 4, 1, 1 ;

 MCT = 10, 10, 10, 10, 10, 0, 10, 10, 0, 8, 0, 0, 0, 0, 0, 0, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 3 ;

 HCT = 10, 10, 10, 10, 10, 0, 10, 10, 0, 0, 0, 0, 0, 0, 0, 6, 10, 10, 0, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 2 ;

 flag =
"ZZZZZEKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZKKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZKEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZKKZZZZZ",
"ZZZZZEKZZZDD",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZDD",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZKKZZZZZ",
"ZZZZZKEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEKZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ",
"ZZZZZEEZZZZZ" ;
}