Skip to content

DOLPHYN Flow Chart (WIP)

Ruaridh Macdonald edited this page Aug 9, 2023 · 1 revision

DOLPHYN Flow Chart

flowchart TB
    subgraph Input Files
        subgraph settings[Settings]
            setup_genx[/genx_settings/]
            setup_hsc[/hsc_settings/]
            setup_global[/global_settings/]
            setup_solver[/solver_settings/]
        end
        subgraph genx[GenX Data]
            genx_gendata[/Generators_data.csv/]
            genx_genvar[/Generators_variability.csv/]
            genx_fuels[/Fuels_data.csv/]
            genx_load[/Load_data.csv/]
            genx_net[/Network.csv/]
            genx_co2[/CO2_cap.csv/]
            genx_csr[/Capacity_reserve_margin.csv/]
            genx_esr[/Energy_share_requirement.csv/]
            genx_mcr[/Minimum_capacity_requirement.csv/]
            genx_res[/Reserves.csv/]
        end
        subgraph hsc[HSC Data]
            hsc_gen[/HSC_generation.csv/]
            hsc_genvar[/HSC_generators_variability.csv/]
            hsc_g2p[/HSC_G2P.csv/]
            hsc_load[/HSC_load_data.csv/]
            hsc_g2pvar[/HSC_g2p_variability.csv/]
            hsc_co2[/HSC_CO2_cap.csv/]
            hsc_pipe[/HSC_pipelines.csv/]
            hsc_truck[/HSC_trucks.csv/]
            hsc_dist[/HSC_zone_distances_miles.csv/]
        end
    end
    subgraph main[Main]
        START --> load_settings --> run_TDR{TDR == 1} -->|Yes| cluster_inputs --> configure_solver
        run_TDR -->|No| configure_solver
        configure_solver --> load_inputs --> run_modelh2_1{ModelH2 == 1} -->|Yes| load_h2_inputs
        load_h2_inputs --> generate_model --> solve_model
        run_modelh2_1 -->|No| generate_model
        solve_model --> write_outputs --> run_modelh2_2{ModelH2 == 1} -->|Yes| write_HSC_outputs --> END
        run_modelh2_2 -->|No| END
        optimizer -.-> generate_model
    end
    subgraph results[Results]
        results_genx[/Results/]
        results_hsc[/Results_HSC/]
        results_TDR[/TDR_Results/]
    end
    settings -.-> load_settings -.-> setup[(setup)]
    settings -.-> cluster_inputs

    configure_solver -.-> optimizer[Optimizer]

    genx -.-> load_inputs
    setup -.-> load_inputs
    hsc -.-> load_h2_inputs

    load_inputs -.-> inputs[(inputs)]
    load_h2_inputs -.-> inputs[(inputs)]

    inputs[(inputs)] -.-> generate_model
    
    generate_model -.-> model[(model)]
    
    model -.-> solve_model
    solve_model -.-> model

    model -.-> write_outputs
    setup -.-> write_outputs
    inputs -.-> write_outputs

    model -.-> write_HSC_outputs
    setup -.-> write_HSC_outputs
    inputs -.-> write_HSC_outputs

    write_outputs -.-> results
    write_HSC_outputs -.-> results
Loading

load_settings

flowchart TB
    subgraph load_settings_fun[load_settings]
    direction TB
        get_setting_paths --> create_setup[Create setup dict] --> load_genx_settings
        load_genx_settings --> load_hsc_settings --> load_global_settings
        load_global_settings --> load_solver_settings --> merge_settings -->
        return_setup[Return setup]
    end
    setup_genx[/genx_settings/] -.-> load_genx_settings
    setup_hsc[/hsc_settings/] -.-> load_hsc_settings
    setup_global[/global_settings/] -.-> load_global_settings
    setup_solver[/solver_settings/] -.-> load_solver_settings
    return_setup -.-> setup[(setup)]
Loading

load_inputs

flowchart TB
    subgraph load_data_fun[load_data]
    direction TB
        create_inputs[Create inputs dict] --> load_load_data --> load_fuels_data --> load_generators_data --> load_generators_variability
        load_generators_variability --> load_csr_check{CSR on?}

        load_csr_check --> |Yes| load_cap_reserve_margin --> load_res_check
        load_csr_check --> |No| load_cap_reserve_margin_trans --> load_res_check

        load_res_check{Reserves == 1} --> |Yes| load_reserves_data --> load_mincap_check
        load_res_check --> |No| load_mincap_check

        load_mincap_check{MinCapReq == 1} --> |Yes| load_minimum_capacity_requirement --> load_esr_check
        load_mincap_check --> |No| load_esr_check

        load_esr_check{EnergyShareRequirement == 1} --> |Yes| load_energy_share_requirement --> load_co2_check
        load_esr_check --> |No| load_co2_check

        load_co2_check{CO2Cap > 0?} --> |Yes| load_co2_cap --> load_period_check
        load_co2_check --> |No| load_period_check

        load_period_check{Period mapping?} --> |Yes| load_period_map --> return
        load_period_check --> |No| return[Return inputs]
    end
    setup[(setup)] -.-> load_load_data
    GenX_data[/GenX_data/] -.-> load_load_data
    return -.-> inputs[(inputs)]
    %%load_load_data -.->|T, SEG, omega, \nREP_PERIOD, H, Weights, \nhours_per_subperiod ,INTERIOR_SUBPERIODS, Voll, \npD, pC_D_Curtail, pMac_D_Curtail| inputs
Loading