Check the geophysical variable attributes for 2.0 templates.
        Attributes missing_value and coverage_content_type have been added in NCEI 2.0

        :param netCDF4.Dataset dataset: An open netCDF dataset

        float geophysical_variable_1(time) ;//................................ This is an example of how each and every geophysical variable in the file should be represented. Replace the name of the variable("geophysical_variable_1") with a suitable name. Replace "float" by data type which is appropriate for the variable.
            geophysical_variable_1:long_name = "" ; //................... RECOMMENDED - Provide a descriptive, long name for this variable.
            geophysical_variable_1:standard_name = "" ; //............... REQUIRED    - If using a CF standard name and a suitable name exists in the CF standard name table.
            geophysical_variable_1:ncei_name = "" ; //................... RECOMMENDED - From the NCEI variables vocabulary, if standard_name does not exist.
            geophysical_variable_1:units = "" ; //....................... REQUIRED    - Use UDUNITS compatible units.
            geophysical_variable_1:scale_factor = 0.0f ; //.............. REQUIRED if the data uses a scale_factor other than 1.The data type should be the data type of the variable.
            geophysical_variable_1:add_offset = 0.0f ; // ............... REQUIRED if the data uses an add_offset other than 0. The data type should be the data type of the variable.
            geophysical_variable_1:_FillValue = 0.0f ; //................ REQUIRED  if there could be undefined values in the data.
            geophysical_variable_1:missing_value = 0.0f ; //............. RECOMMENDED  if there could be missing values in the data. Not necessary if there is only one value which is the same as _FillValue.
            geophysical_variable_1:valid_min = 0.0f ; //................. RECOMMENDED - Replace with correct value.
            geophysical_variable_1:valid_max = 0.0f ; //................. RECOMMENDED - Replace with correct value.
            geophysical_variable_1:coordinates = "time lat lon z" ; //... REQUIRED    - Include the auxiliary coordinate variables and optionally coordinate variables in the list. The order itself does not matter. Also, note that whenever any auxiliary coordinate variable contains a missing value, all other coordinate, auxiliary coordinate and data values corresponding to that element should also contain missing values.
            geophysical_variable_1:coverage_content_type = "" ; //....... RECOMMENDED - An ISO 19115-1 code to indicate the source of the data (image, thematicClassification, physicalMeasurement, auxiliaryInformation, qualityInformation, referenceInformation, modelResult, or coordinate). (ACDD)
            geophysical_variable_1:grid_mapping = "crs" ; //............. RECOMMENDED - It is highly recommended that the data provider put the data in a well known geographic coordinate system and provide the details of the coordinate system.
            geophysical_variable_1:source = "" ; //...................... RECOMMENDED - The method of production of the original data
            geophysical_variable_1:references = "" ; //.................. RECOMMENDED - Published or web-based references that describe the data or methods used to produce it.
            geophysical_variable_1: cell_methods = "" ; // .............. RECOMMENDED - Use the coordinate variables to define the cell values (ex., "time: point lon: point lat: point z: point").
            geophysical_variable_1:ancillary_variables = "instrument_parameter_variable platform_variable boolean_flag_variable enumerated_flag_variable" ; //......... RECOMMENDED - Identify the variable name(s) of the flag(s) and other ancillary variables relevant to this variable.  Use a space-separated list.
            geophysical_variable_1:platform = "platform_variable" ; //... RECOMMENDED - Refers to name of variable containing information on the platform from which this variable was collected.
            geophysical_variable_1:instrument = "instrument_variable";//..RECOMMENDED - Refers to name of variable containing information on the instrument from which this variable was collected.
            geophysical_variable_1:comment = "" ; //..................... RECOMMENDED - Add useful, additional information here.

def check_geophysical(self, dataset):
        '''
        Check the geophysical variable attributes for 2.0 templates.
        Attributes missing_value and coverage_content_type have been added in NCEI 2.0

        :param netCDF4.Dataset dataset: An open netCDF dataset

        float geophysical_variable_1(time) ;//................................ This is an example of how each and every geophysical variable in the file should be represented. Replace the name of the variable("geophysical_variable_1") with a suitable name. Replace "float" by data type which is appropriate for the variable.
            geophysical_variable_1:long_name = "" ; //................... RECOMMENDED - Provide a descriptive, long name for this variable.
            geophysical_variable_1:standard_name = "" ; //............... REQUIRED    - If using a CF standard name and a suitable name exists in the CF standard name table.
            geophysical_variable_1:ncei_name = "" ; //................... RECOMMENDED - From the NCEI variables vocabulary, if standard_name does not exist.
            geophysical_variable_1:units = "" ; //....................... REQUIRED    - Use UDUNITS compatible units.
            geophysical_variable_1:scale_factor = 0.0f ; //.............. REQUIRED if the data uses a scale_factor other than 1.The data type should be the data type of the variable.
            geophysical_variable_1:add_offset = 0.0f ; // ............... REQUIRED if the data uses an add_offset other than 0. The data type should be the data type of the variable.
            geophysical_variable_1:_FillValue = 0.0f ; //................ REQUIRED  if there could be undefined values in the data.
            geophysical_variable_1:missing_value = 0.0f ; //............. RECOMMENDED  if there could be missing values in the data. Not necessary if there is only one value which is the same as _FillValue.
            geophysical_variable_1:valid_min = 0.0f ; //................. RECOMMENDED - Replace with correct value.
            geophysical_variable_1:valid_max = 0.0f ; //................. RECOMMENDED - Replace with correct value.
            geophysical_variable_1:coordinates = "time lat lon z" ; //... REQUIRED    - Include the auxiliary coordinate variables and optionally coordinate variables in the list. The order itself does not matter. Also, note that whenever any auxiliary coordinate variable contains a missing value, all other coordinate, auxiliary coordinate and data values corresponding to that element should also contain missing values.
            geophysical_variable_1:coverage_content_type = "" ; //....... RECOMMENDED - An ISO 19115-1 code to indicate the source of the data (image, thematicClassification, physicalMeasurement, auxiliaryInformation, qualityInformation, referenceInformation, modelResult, or coordinate). (ACDD)
            geophysical_variable_1:grid_mapping = "crs" ; //............. RECOMMENDED - It is highly recommended that the data provider put the data in a well known geographic coordinate system and provide the details of the coordinate system.
            geophysical_variable_1:source = "" ; //...................... RECOMMENDED - The method of production of the original data
            geophysical_variable_1:references = "" ; //.................. RECOMMENDED - Published or web-based references that describe the data or methods used to produce it.
            geophysical_variable_1: cell_methods = "" ; // .............. RECOMMENDED - Use the coordinate variables to define the cell values (ex., "time: point lon: point lat: point z: point").
            geophysical_variable_1:ancillary_variables = "instrument_parameter_variable platform_variable boolean_flag_variable enumerated_flag_variable" ; //......... RECOMMENDED - Identify the variable name(s) of the flag(s) and other ancillary variables relevant to this variable.  Use a space-separated list.
            geophysical_variable_1:platform = "platform_variable" ; //... RECOMMENDED - Refers to name of variable containing information on the platform from which this variable was collected.
            geophysical_variable_1:instrument = "instrument_variable";//..RECOMMENDED - Refers to name of variable containing information on the instrument from which this variable was collected.
            geophysical_variable_1:comment = "" ; //..................... RECOMMENDED - Add useful, additional information here.
        '''

        results = []
        for var in util.get_geophysical_variables(dataset):
            ncvar = dataset.variables[var]

            test_ctx = TestCtx(BaseCheck.HIGH, 'Required attributes for variable {}'.format(var))
            test_ctx.assert_true(getattr(ncvar, 'standard_name', '') != '', 'standard_name attribute must exist and not be empty')
            test_ctx.assert_true(getattr(ncvar, 'units', '') != '', 'units attribute must exist and not be empty')
            coordinates = getattr(ncvar, 'coordinates', '')
            test_ctx.assert_true(coordinates != '', 'coordinates must exist and not be empty')
            results.append(test_ctx.to_result())

            test_ctx = TestCtx(BaseCheck.MEDIUM, 'Recommended attributes for variable {}'.format(var))
            test_ctx.assert_true(getattr(ncvar, 'long_name', '') != '', 'long_name should exist and not be empty')
            if not hasattr(ncvar, 'standard_name'):
                test_ctx.assert_true(getattr(ncvar, 'ncei_name', '') != '', 'ncei_name should exist and not be empty')
            self._check_min_max_range(ncvar, test_ctx)

            coverage_content_type_options = ['image', 'thematicClassification', 'physicalMeasurement', 'auxiliaryInformation',
                                             'qualityInformation', 'referenceInformation', 'modelResult', 'coordinate']
            test_ctx.assert_true(getattr(ncvar, 'coverage_content_type', '') in coverage_content_type_options,
                                 ('coverage_content_type should exist and be one of the following:'
                                  'image, thematicClassification, physicalMeasurement, auxiliaryInformation, '
                                  'qualityInformation, referenceInformation, modelResult, or coordinate'))

            grid_mapping = getattr(ncvar, 'grid_mapping', '')
            test_ctx.assert_true(grid_mapping != '', 'grid_mapping should exist and not be empty')
            if grid_mapping:
                test_ctx.assert_true(grid_mapping in dataset.variables, 'grid_mapping attribute is a variable')
            test_ctx.assert_true(getattr(ncvar, 'source', '') != '', 'source should exist and not be empty')
            test_ctx.assert_true(getattr(ncvar, 'references', '') != '', 'references should exist and not be empty')
            test_ctx.assert_true(getattr(ncvar, 'cell_methods', '') != '', 'cell_methods should exist and not be empty')
            ancillary_variables = getattr(ncvar, 'ancillary_variables', '')
            if ancillary_variables:
                ancillary_variables = ancillary_variables.split(' ')
            all_variables = all([v in dataset.variables for v in ancillary_variables])
            if ancillary_variables:
                test_ctx.assert_true(all_variables, 'ancillary_variables point to variables')
            platform = getattr(ncvar, 'platform', '')
            if platform:
                test_ctx.assert_true(platform in dataset.variables, 'platform attribute points to variable')
            instrument = getattr(ncvar, 'instrument', '')
            if instrument:
                test_ctx.assert_true(instrument in dataset.variables, 'instrument attribute points to variable')

            if hasattr(ncvar, 'comment'):
                test_ctx.assert_true(getattr(dataset, 'comment', '') != '', 'comment attribute should not be empty if specified')
            results.append(test_ctx.to_result())

        return results