Skip to content

test: correct_cumsum values for all demand outputs #312

Description

@dmuldrew

We currently have an integration test for the LDV Smart Charging function which has following assertion:

    correct_cumsum = np.array(
        [
            0.0,
            9796092.83844097,
            19198735.09458018,
            27636677.75177433,
            36032644.7281563,
            44112809.4024421,
            52256940.31259822,
            61077768.57472202,
        ]
    )

    np.testing.assert_allclose(demand.cumsum()[::1095], correct_cumsum)

which checks the cumulative sum of the demand values every 1095 hours within the year. Ideally these values would come from the Matlab code...

There are potentially 16 categories to test, for both immediate and smart charging cases:

  1. LDV, urban, for ranges of 100, 200, and 300 miles
  2. LDV, rural, for ranges of 100, 200, and 300 miles
  3. LDT, urban, for ranges of 100, 200, and 300 miles
  4. LDT, rural, for ranges of 100, 200, and 300 miles
  5. MDV, urban
  6. MDV, rural
  7. HDV, urban
  8. HDV, rural

Should we test for all 9 census divisions? That would mean an additional 8*12 = 96 tests, or 112 total. This seems excessive…

Really we just need to test the code for each type. Might be able to just do:

Immediate and smart charging:

  1. LDV, urban, pick one of the ranges
  2. LDV, rural, pick one of the ranges
  3. HDV, urban
  4. HDV, rural

Existing test parameters for immediate charging LDV:

    immediate_charging(
        census_region=1,
        model_year=2017,
        veh_range=100,
        kwhmi=0.242,
        power=6.6,
        location_strategy=2,
        veh_type="LDV",
        filepath=path_to_file,
    )

Existing test parameters for smart charging LDV:

    result = smart_charging.smart_charging(
        census_region=1,
        model_year=2017,
        veh_range=100,
        kwhmi=0.242,
        power=6.6,
        location_strategy=2,
        veh_type="LDV",
        filepath=path_to_file,
        daily_values=daily_values,
        load_demand=load_demand,
        trip_strategy=1,
    )

Example code for immediate case 3:

    result = immediate_charging_HDV.immediate_charging(
        model_year=2050,
        veh_range=200,
        power=80,
        location_strategy=1,
        veh_type="HDV",
        filepath=path_to_file,
        trip_strategy=1,
    )
    bev_vmt = load_urbanized_scaling_factor(
        model_year=2050,
        veh_type="HDV",
        veh_range=200,
        urbanized_area="Antioch",
        state="CA",
        filepath= path_to_file,
    )
    final_result = immediate_charging_HDV.adjust_bev(
        model_year=2050,
        veh_type="HDV",
        veh_range=200,
        model_year_profile=result,
        bev_vmt=bev_vmt,
        charging_efficiency=0.95,
    )
    correct_cumsum = np.array(
        [
            10.8255287099344,
            10458.16992,
            20964.88916,
            31443.09284,
            41900.81189,
            52407.05727,
            62866.27995,
            73352.53979,
        ],
    )

    np.testing.assert_allclose(final_result.cumsum()[::1095], correct_cumsum)

Example code for smart charging case 3:

    bev_vmt = data_helper.load_urbanized_scaling_factor(
        model_year=2050,
        veh_type="HDV",
        veh_range=200,
        urbanized_area="Antioch",
        state="CA",
        filepath=path_to_file,
    )
    result = smart_charging_HDV.smart_charging(
        model_year=2050,
        veh_range=200,
        power=80,
        location_strategy=1,
        veh_type="HDV",
        filepath=path_to_file,
        initial_load=load_demand,
        bev_vmt=bev_vmt,
        trip_strategy=1,
    )

    correct_cumsum = np.array(
        [
            1.22854177233283,
            4729.417063,
            9456.028814,
            14087.49171,
            18817.56654,
            23521.75604,
            28175.75066,
            32904.52077,
        ]
    )
   np.testing.assert_allclose(result.cumsum()[::1095], correct_cumsum)

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions