Technical documentation: complete methodology of the solar simulator
Calculation formulas, constants, sources and known limitations of the calcul-solaire.fr simulator. This document details each step of the calculation, from the raw weather data to the financial indicators displayed, with the assumptions used and the reasons for them.
1. Overview of the simulator
1.1 Purpose and scope
The calcul-solaire.fr simulator allows a household (or a professional installer) to estimate the solar generation, the achievable savings and the payback period of a photovoltaic installation on a property in metropolitan France.
The tool covers:
- Self-consumption with sale of the surplus to the grid
- Pure self-consumption (no export)
- The plug-and-play kit (very low power, < 3 kWp, no export)
- Full export of the generation (≥ 9 kWp, EDF OA feed-in tariff contract)
- Physical storage with a home battery (5 to 15 kWh)
- Virtual storage on the grid (virtual battery)
1.2 Technical architecture
The simulator is a web application developed in Python (Django framework). The simulation calculations, which can take some time (analysis of 8,760 hourly data points per simulation), run asynchronously in the background: the user sees a progress page while the calculation engine works, without blocking the browser.
1.3 Simulation pipeline in 7 steps
1. Retrieval of PVGIS weather data (8,760 h) [20 %] 2. Generation calculation for 1 kWp [40 %] → geometric transposition + temperature + shading + inverter efficiency 3. Generation of hourly consumption profiles [60 %] → breakdown by category + personalised profile 4. Multi-size optimisation [80 %] → sweep of configurations according to the goal 4b. Financial simulation of the selected configuration [85 %] 5. Pre-calculation of home battery scenarios (5 capacities) [90 %] 6. Saving the results [95 %] 7. Notification (where applicable) [100 %]
1.4 The two access routes
Free simulation (private individuals): the user fills in a public form. The simulation runs in standard mode: PVGIS weather data, declared shading. Everything is free: the full simulation and the detailed report (interactive recalculation, complete battery scenarios, 25-year projection).
Professional offer (installers): an installer can submit simulations for their customers through a dedicated area. The simulation then runs in advanced mode: precise hourly shading from satellite imagery, the real characteristics of the equipment chosen from a catalogue, a customised report branded for the installer. See section 12.
1.5 Input data and output data
Input: the physical and financial parameters of the installation (location, area, orientation, consumption, goal).
Output: all the calculated results: generation, savings, self-consumption, ROI, home battery scenarios, hourly/monthly/seasonal profiles.
2. User input data
2.1 Installation parameters
| Parameter | Use |
|---|---|
| Address / Latitude / Longitude | PVGIS weather query, Google Solar satellite imagery, geocoding |
| Available roof area (m²) | Sets the maximum size tested by the optimiser |
| Orientation (N, NE, E, SE, S, SW, W, NW) | Determines the irradiation actually captured |
| Tilt (°) | Determines the irradiation actually captured |
| Roof type (tiles, slate, zinc, sheet metal, concrete) | Extra installation cost, no effect on generation |
| Inverter type (string, micro, optimisers) | Performance Ratio + behaviour under shading |
| Mounting type | Efficiency correction linked to ventilation |
| Shading factor (0–30 %) | Loss applied to the direct component of the irradiation |
| Declared annual consumption (kWh) | Fallback source if no consumption calculator is used |
| Module power (Wp) | Sets the optimiser step (e.g. 400 Wp → 0.4 kWp step) |
| Selected panel (catalogue) | Real thermal characteristics and packing density |
| Selected inverter (catalogue) | Real European efficiency |
| Custom quote (€) | Replaces the automatic cost estimate |
The coordinates can be entered manually (interactive map) or derived from the address. Google Solar satellite imagery automatically enriches the orientation and tilt detected on the roof when this data is available.
2.2 Self-consumption modes
| Mode | Description | Fed into the grid | Self-consumption bonus (prime à l'autoconsommation) | Export tariff |
|---|---|---|---|---|
| Self-consumption with surplus | Standard self-consumption with sale of the surplus | Yes | Yes (if the tariff in the ministerial order (arrêté) is > 0) | Yes |
| Pure self-consumption | All generation consumed on site, surplus not monetised | No | No | No |
| Plug-and-play kit | Small balcony/terrace installation (≤ 3 kWp) | No | No | No |
| Full export | Full export of the generation (≥ 9 kWp) | 100 % | No | EDF OA tariff |
2.3 Sizing goal
| Goal | Logic |
|---|---|
| Financial return | Minimise the payback period (ROI) |
| Self-sufficiency | Maximise coverage of needs (self-sufficiency rate) |
| Balance | Compromise between financial return and coverage of needs |
| Sale | Maximise the net gain over 20 years (EDF OA contract, ≥ 9 kWp) |
2.4 Constraints in detailed mode
In detailed analysis mode, the user can set limits on the selected solution: maximum payback period (years), minimum savings (€/year), minimum coverage (%). If no configuration satisfies all the constraints, the best unconstrained configuration is selected, and the incompatibility is flagged to the user.
2.5 Priority of consumption sources
- Consumption calculator (quick or expert): if the user has used it, its total value is used.
- Manual entry: if entered directly by the user on the form.
- Typical value for the selected profile: used only as a last resort.
Whatever the source, the generated hourly profile (8,760 values) is then rescaled so that its sum matches the selected annual consumption exactly.
3. Weather data: PVGIS
3.1 What is PVGIS?
PVGIS (Photovoltaic Geographical Information System) is a free database developed by the Joint Research Centre (JRC) of the European Commission. It provides solar irradiation data for Europe, Africa, Asia and the Americas. The simulator uses version 5.3.
3.2 Typical meteorological year (TMY)
The simulator retrieves a typical meteorological year (Typical Meteorological Year): for each hour of the year, PVGIS calculates representative values derived from the statistical analysis of several years of satellite observations. The response contains 8,760 hourly records.
3.3 Data retrieved
| Data | Unit | Description |
|---|---|---|
| GHI (global horizontal irradiance) | W/m² | Total solar irradiation received on a horizontal surface |
| DNI (direct normal irradiance) | W/m² | Direct component of the radiation |
| DHI (diffuse horizontal irradiance) | W/m² | Diffuse component (cloudy sky, reflections) |
| Air temperature | °C | Used for the temperature correction (§5.3) |
| Wind speed | m/s | Contextual data |
The three components GHI / DNI / DHI are essential for calculating the irradiation actually received by the panels according to their orientation and tilt (§5.1).
3.4 Time alignment
The raw weather data use an arbitrary reference year; they are automatically shifted to the current year so that the seasonal profiles and the hourly shading line up correctly.
3.5 Caching and error handling
The weather data for a given location are cached for 24 hours. If the weather source is unavailable, the simulation fails cleanly rather than producing a result based on incomplete data.
3.6 Distant shading (terrain)
Distant shading (terrain, mountains) is already taken into account in the generation, because the PVGIS data natively include a terrain horizon model applied directly to the irradiance returned. Verified empirically (comparison with and without the horizon model enabled):
| Site | Annual GHI | Annual DNI (direct) | DHI (diffuse) |
|---|---|---|---|
| Chamonix (deep valley) | −6.5% | −24.0% | 0.0% |
| Bordeaux (plain, reference site) | −0.1% | −0.8% | 0.0% |
It is the direct component that is reduced when the sun passes behind the terrain (strong in the mountains, negligible on the plain); the diffuse component is not reduced (a PVGIS modelling choice). This distant shading is therefore already reflected in the final calculation, so no double counting is applied.
The simulator also displays, for information only, a horizon curve of the site in the report (best-effort, with no impact on the generation calculation).
4. Enrichment from satellite imagery (Google Solar)
Google Solar is a service that analyses satellite images to extract information about roofs and their solar potential. The simulator uses it at two distinct levels.
4.1 Automatic roof detection (on the form)
When: when the address is entered in the form, provided the service is available.
What it does: the service identifies the roof segments of the building and selects the best segment (best solar exposure). It extracts from it:
- The real azimuth of the roof face
- The real pitch of the face
- An estimated shading factor, derived from the median sunshine of the segment
These data pre-fill the orientation/tilt/shading fields of the form. The user can correct them manually.
4.2 Hourly shading mask (during the simulation, detailed offer only)
When: during the calculation, only for simulations in detailed or professional mode.
What it does: for each month of the year, the service provides an hourly matrix (24 hours) giving the fraction of the days of the month on which each point of the roof receives direct sunlight at the hour in question.
The simulator averages the sunshine over the actual installation area (the declared roof outline, or a small area at the centre by default) rather than relying on a single point, which reduces the noise caused by local obstacles (chimney, roof window). The result is a 12 months × 24 hours matrix of sunshine fractions, applied hour by hour to the annual generation.
Acknowledged limitation: this spatial average is an energy approximation (direct irradiance available on the panel array); it does not model the fine electrical imbalance between panel “strings” under partial shading with a central inverter.
Validity threshold: if the data are not available for most of the year, the mask is judged unreliable and the simulation falls back to the shading declared on the form.
4.3 Service availability
If satellite imagery is not available for a location, or is temporarily unavailable, the simulation continues normally without this enrichment; it is never a blocking factor.
4.4 Summary: who benefits from what
| Feature | Free simulation | Detailed / professional offer |
|---|---|---|
| Automatic detection of orientation/tilt | ✓ on the form | ✓ on the form |
| Estimated shading (overall factor) | ✓ on the form | ✓ on the form |
| Precise hourly shading mask (12×24) | ✗ | ✓ during the calculation |
5. Solar generation calculation
The generation is calculated hour by hour over the 8,760 hours of the year, then summed to obtain the annual generation. The calculation first produces the generation for 1 kWp installed, which is then multiplied by the selected size.
5.1 Geometric transposition (plane of the panels)
Why: the raw weather data represent the irradiance on a horizontal surface. The generation of a tilted, oriented panel, for example due south at 30°, differs from the horizontal irradiance. This calculation determines the irradiance actually received in the plane of the panels, given their orientation and tilt.
How: the calculation uses the Hay-Davies sky model (a standard academic reference in photovoltaic engineering), which breaks the diffuse radiation down into a circumsolar component (close to the sun) and an isotropic component (the rest of the sky). The three weather components (GHI, DNI, DHI) are used directly, with no additional empirical decomposition.
Result: for each hour, three quantities are obtained: the total irradiance in the plane of the panels (used for the generation calculation), the direct component (the only one that shading can reduce), and the diffuse component (which reaches the panel even when the direct component is blocked).
Ground albedo: default value of 0.20 (grass / urban environment), a standard in the literature.
Fallback: if this calculation fails in exceptional cases (missing data), the calculation falls back to the raw horizontal irradiance; the simulation is never blocked.
5.2 Base Performance Ratio (PR)
The Performance Ratio is an overall coefficient that represents the real efficiency of the installation relative to its theoretical potential. It aggregates the losses from wiring, mismatch between panels, dust, and so on.
| Inverter type | Base PR |
|---|---|
| String (central) | 0.85 |
| Microinverters | 0.84 |
| Inverters with optimisers | 0.86 |
| Mounting type | PR correction |
|---|---|
| On-roof mounting (on tiles) | 0.00 (reference) |
| Ballasted trays (flat roof) | 0.00 |
| Building integration | −0.03 (less ventilated) |
| Fixed ground mount | +0.01 (excellent ventilation) |
| Canopy | +0.01 (excellent ventilation) |
The final PR is limited to between 0.70 and 0.95.
5.3 Temperature correction: cell temperature
Why: the efficiency of a photovoltaic panel falls as its temperature rises. This loss depends not on the air temperature but on the temperature of the cell’s silicon, which is significantly higher in direct sunshine. Using the air temperature alone would produce an optimistic bias in a temperate climate.
Model used (NOCT model, the manufacturers’ standard):
T_cell = T_air + (NOCT − 20) / 800 × Panel_plane_irradiance
Where NOCT is the nominal operating cell temperature (taken from the datasheet of the selected panel, or 45 °C by default).
Temperature derating:
factor = 1 + (γ / 100) × (T_cell − 25)
Default values (if no specific panel is selected): γ = −0.35%/°C, NOCT = 45 °C. The hourly factor is limited to between 0.70 and 1.10.
5.4 Shading correction
Hourly mode (detailed / professional offer): the hourly sunshine matrix (§4.2) modulates the generation hour by hour. Only the direct component is reduced:
shading_ratio_h = (diffuse_irradiance + direct_irradiance × mask_h) / total_irradiance
Declarative mode (all users): if no precise hourly mask is available, an overall shading factor (0–30%) is applied to the direct component only:
loss = shading_factor × reduction_coefficient ratio = 1 − loss × (direct_irradiance / total_irradiance)
| Inverter type | Reduction coefficient |
|---|---|
| String | 1.0 (full loss) |
| Microinverters | 0.5 (loss divided by 2) |
| DC optimisers | 0.5 (loss divided by 2) |
Source: NREL, “DC Optimizer Field Performance” (2019).
5.5 Real inverter efficiency correction
The reference weather data implicitly assume an inverter efficiency of 96%. If a specific inverter model is selected (professional catalogue) and its real European efficiency differs from 96%, a proportional correction factor is applied.
5.6 Summary formula for the generation per 1 kWp
generation_1kWp (kWh/h) = (panel_plane_irradiance / 1000) × PR × thermal_factor × shading_factor × inverter_factor annual_generation = sum(generation_1kWp over 8,760 h) × P [kWh/year]
5.7 Packing density and maximum permissible power
max_power = roof_area_m² / area_per_kWp
- If a specific panel model is selected: the real density from its datasheet.
- Otherwise, a flat allowance by panel type: standard monocrystalline 6.5 m²/kWp, TOPCon/HJT 5.5 m²/kWp, bifacial 6.0 m²/kWp.
The maximum power is rounded down to the nearest 0.5 kWp, capped at 500 kWp, and cannot be lower than the power entered by the user.
5.8 Multi-face roofs (multi-orientation)
An installation can cover several roof faces with different orientations and tilts (typically East/West, or South + East). Each face carries a share of the power (up to 4 faces, the shares adding up to 100%).
The generation per 1 kWp is the weighted average of the generation of each face, each face being calculated with its own orientation, its own temperature correction and its own shading. The Performance Ratio, the shading mask (tied to the location) and the inverter efficiency correction remain common to all faces.
An East/West roof thus has a flattened generation curve (generation spread over morning + evening), which typically improves self-consumption compared with a single face oriented due south.
6. Hourly consumption profile
To calculate self-consumption (the fraction of the solar generation consumed directly), an hourly consumption profile aligned hour by hour with the generation is needed. This profile is calculated in two stages: breakdown of the annual consumption by category, then generation of an hourly profile based on occupancy habits.
6.1 Source of the annual consumption
The arbitration between sources is described in §2.5. The final value selected serves as the rescaling target: the generated hourly profile is adjusted proportionally so that its sum equals the target annual consumption exactly.
6.2 Breakdown by category (ADEME 2022 ratios)
Fixed-consumption categories (subtracted first): electric vehicle 2,500 kWh/year fixed (15,000 km/year at 17 kWh/100 km); swimming pool 2,000 kWh/year fixed (pump 8 h/day × 5 months).
Electric heating or heat pump (calculated from the energy performance certificate (DPE) class and the floor area): the DPE class gives the total regulatory consumption of the 5 uses. The heating share represents 63% of this total for an electrically heated home (source ADEME/CEREN). Heating is capped at 70% of the remaining consumption.
This fixed 63% share applies only to profiles without a detailed consumption calculator. If you used the calculator (as in almost all simulations), your heating is obtained differently, by difference. See the next section.
| DPE class | Total kWh primary energy/m²/year | Estimated heating share (kWh final energy/m²/year) |
|---|---|---|
| A | 50 | ≈ 14 |
| B | 90 | ≈ 25 |
| C | 145 | ≈ 40 |
| D | 215 | ≈ 59 |
| E | 290 | ≈ 80 |
| F | 375 | ≈ 103 |
| G | 500 | ≈ 137 |
Electric domestic hot water: 900 kWh × number of occupants, divided by 2.5 for a heat pump water heater. Capped at 50% of the remaining consumption.
| Category | Ratio |
|---|---|
| Cooking | 25 % |
| Household appliances (washing, etc.) | 25 % |
| Refrigeration | 10 % |
| Lighting | 20 % |
| Multimedia | 20 % |
If the user has used a detailed consumption calculator, the real breakdown that results is used directly, without going through these statistical ratios.
6.2bis Your heating, when it is worked out by the calculator
Your DPE label covers five regulatory uses: heating, hot water, cooling, lighting and auxiliaries (VMC mechanical ventilation, pumps). It is therefore not the consumption of your home: household appliances, cooking and multimedia are not included.
Rather than assuming what fraction of this envelope goes to heating, the simulator deduces it: it subtracts the four other uses, which it already calculates separately from your declared equipment. What remains is your heating.
DPE envelope − hot water − lighting − ventilation − cooling = heating
A constant fraction would be physically wrong: heating depends on insulation, whereas hot water depends mainly on the number of occupants. The share obtained therefore varies with your class: roughly 20% of the envelope for an A-rated home, 73% for a G-rated home.
What your label already contains
A DPE label is a consumption per m², measured on your home, at its location. It therefore already includes the local climate, your ventilation and your insulation. Applying them a second time would count them twice: the simulator does not do this. Two homes genuinely rated D consume the same number of kWh/m² in Lille as in Nice: if the one in Lille achieves it, it is because it is better insulated, and its label already says so.
On the other hand, what depends on your use rather than on the building always applies: set-point temperature, regulation, intensity of use. Since the DPE is calculated on a conventional scenario (19 °C, standardised occupancy), your difference from that scenario is never counted twice.
From conventional to real
The DPE does not claim to predict real consumption, and the gap is systematic: in very poorly insulated homes, occupants do not heat everything to 19 °C: they close off rooms and lower the set-point. In high-performance homes, the opposite happens (rebound effect). A correction is applied, from +30% for an A-rated home to −35% for a G-rated home. These are orders of magnitude drawn from the literature, which we will recalibrate on field data.
Your DPE label, known or not
If you know the exact figure on your DPE, enter it: the letter alone is a range. Class C covers 110 to 180 kWh/m²/year, that is ±25% around the average value applied by default.
If you do not know it, it is estimated from the year of construction and the type of home. With the same insulation for the period, a detached house with four exposed walls loses about twice as much heat per m² as a mid-floor flat: the type of home shifts the estimate by one class.
6.3 Generation of the personalised hourly profile (8,760 hours)
Two versions are produced in parallel: the current profile (spontaneous use) and the optimised profile (programmable appliances shifted to the solar generation peak, 10:00–13:00).
| Profile | Description | Presence during the day (weekdays) |
|---|---|---|
| Working, away during the day | Working people leaving for the office | No |
| Partial remote working | Remote working 2 days, office the rest | Partial |
| Full-time remote working | Always at home | Yes |
| Retired | At home during the day, free rhythm | Yes |
| Family | Adults at the office, strong presence evenings/weekends | No (evenings/weekends) |
Seasonal modulation: heating is amplified in winter and almost zero in summer. Lighting follows the hours of darkness.
Optimisation: programmable appliances (washing machine, dishwasher, tumble dryer, electric hot water, electric vehicle on solar charging) are shifted to 10:00–13:00. Refrigeration, heating and cooking cannot be moved.
6.4 Expert mode (precise schedules)
If the user has declared precise schedules for their appliances (power, months of operation, switch-on hours), the hourly profile is rebuilt directly from these real data. For the optimised profile, the time slot of household appliances, hot water and the electric vehicle is replaced by the solar window.
6.5 Swimming pool and electric vehicle
Swimming pool: the annual consumption is distributed over the operating period according to a defined time slot (starting at 09:00 in the current profile, 10:00 in the optimised profile).
Electric vehicle: three charging modes: off-peak hours (00:00–05:00 + 22:00–23:00), solar (10:00–15:00), or mixed.
6.6 Your monthly readings: measuring your heating instead of estimating it
If you enter your monthly consumption in kWh, the simulator can measure your heating share instead of deducing it from your DPE. This is the reference method in energy efficiency.
Your consumption breaks down into two parts of a different nature: a baseload that does not depend on the weather (hot water, refrigeration, cooking, lighting, multimedia), and a temperature-sensitive part, your heating, proportional to the cold outside. By comparing your readings with the real degree-days of your location, a regression separates the two. Two months are enough: one in winter, one in summer.
In kWh read, not in euros. If you pay by monthly instalments, the amount debited each month is smoothed over the year and says nothing about your consumption. Your real kWh appear in your customer account, under consumption tracking. The simulator detects identical readings and then refuses to draw a conclusion, rather than announce a wrong heating share.
The calculation is also abandoned if the readings do not allow a conclusion: fewer than two months, two months from the same season, or values that fit no consistent model. It is better to announce nothing than to announce a wrong heating share.
6.7 Your peak / off-peak hours: measuring your consumption pattern
If you are on a peak / off-peak (HP/HC) tariff, the two lines on your bill show how much of your energy is used at night. This is the only measure of your consumption pattern available without a smart meter, and the pattern determines how much of your solar generation you will use on site.
The simulator uses it to identify which appliances run at night, starting with the most likely ones: the hot water tank on a contactor (the usual reason for a peak / off-peak tariff), then electric vehicle charging, then the washing machine on delayed start. Each appliance's energy is preserved: only its timing changes.
Two useful results: a diagnosis (“your night-time consumption is mainly explained by the hot water tank” points to exactly the appliance to shift to the solar hours); and a consistency alert: if your declared appliances do not explain the night-time share recorded, either an appliance is missing from your declaration, or the off-peak window in your contract is not the standard 22:00–06:00 one.
What remains estimated. These readings say nothing about the distribution within the day (morning, midday or evening). Yet that is what decides whether consumption coincides with your generation. This share therefore remains estimated from your occupancy profile, and the optimisation gains shown are orders of magnitude.
7. Power optimiser
7.1 General principle
The optimiser tests every possible configuration within the permitted power range, with a step equal to the power of one module (e.g. 400 Wp = 0.4 kWp). For each configuration it calculates the economic indicators from the same hourly profiles, then selects the best one according to the chosen goal.
7.2 Calculation per configuration
production_horaire = production_1kWp × P autoconso_kWh = sum(min(production_horaire[h], consommation_horaire[h])) for h over 8,760 h injection_kWh = production_annuelle − autoconso_kWh economie_annuelle = autoconso_kWh × tarif_achat + injection_kWh × tarif_injection coût_brut = coût_par_kWp(P) × P prime = prime_autoconsommation(P) (0 since June 2026) coût_net = coût_brut − prime ROI_simple = coût_net / economie_annuelle (years)
7.3 Selection logic according to the goal
Financial return: selects the power with the shortest payback period. No artificial threshold is applied: the cost model (fixed costs + a declining price per kWp, see §8.2) naturally penalises very small systems.
Self-sufficiency: maximises the self-sufficiency rate, provided the configuration remains reasonably profitable.
Balance: a weighted compromise between financial return and coverage of needs, with a soft penalty to avoid recommending an oversized system with little return.
Resale (full export): maximises the net benefit over 20 years. The minimum power is forced to 9 kWp, the regulatory threshold of the EDF OA feed-in tariff contract.
7.4 Constraints in detailed mode
In detailed mode, optional filters can be applied after the calculation: maximum payback period, minimum savings, minimum coverage. If no configuration passes the filters, the best unconstrained configuration is kept and a warning is shown.
7.5 Optimiser result
The optimiser returns the optimal power along with the full table of all configurations tested. If the user has chosen a custom power, that value replaces the automatic recommendation.
8. Financial simulation
8.1 Valuation modes
Self-consumption with surplus:
economie_annuelle = autoconso_kWh × tarif_achat + injection_kWh × tarif_injection
Pure self-consumption / plug & play kit:
economie_annuelle = autoconso_kWh × tarif_achat (injection = 0, tarif_injection = 0, prime = 0)
Full export:
revenu_annuel = production_annuelle × tarif_vente_totale (100% exported, electricity bill unchanged, no bonus)
Peak / off-peak hours option : solar generation takes place exclusively during the day, hence entirely in peak hours. For users on a peak / off-peak contract, the purchase price used in all calculations is the customised peak-hours rate (default: 0.2142 €/kWh, regulated tariff as at 1 August 2026).
8.2 Estimated installation cost
The cost is modelled as the sum of two components, expressed excluding VAT and converted to figures including VAT at the end of the calculation:
coût_total_TTC = (frais_fixes_HT + coût_variable_HT + surcoûts_HT/kWp × P) × (1 + TVA) + surcoût_batterie_TTC
| System size | VAT | Legal basis |
|---|---|---|
| ≤ 9 kWp | 5.5% | Ministerial order (arrêté) of October 2025: residential self-consumption |
| > 9 kWp | 20 % | Standard rate |
Fixed costs excl. VAT: 2,200 €, independent of power. They cover: the installer's travel and mobilisation, safety scaffolding, technical visit, ten-year (décennale) site liability insurance, CONSUEL inspection (the French electrical compliance certification; ≈ 150-200 €), Enedis grid connection agreement (Enedis, the grid operator; ≈ 300-500 €), administrative procedures.
| Tier | Price excl. VAT/Wp | Cumulative example (excl. VAT) |
|---|---|---|
| 0 – 3 kWp | 1.45 | 3 kWp → 6,550 € excl. VAT (6,910 € incl. VAT) |
| 3 – 6 kWp | 1.35 on additional Wp | 6 kWp → 10,600 € excl. VAT (11,183 € incl. VAT) |
| 6 – 9 kWp | 1.20 on additional Wp | 9 kWp → 14,200 € excl. VAT (14,981 € incl. VAT) |
| 9 – 36 kWp | 1.05 on additional Wp | 12 kWp → 17,350 € excl. VAT (20,820 € incl. VAT) |
| > 36 kWp | 0.90 on additional Wp | — |
The degressive pricing reflects economies of scale on panels (bulk purchasing) and optimised installation time. Calibration source: field data from professional installers, corroborated by French market ranges for 2025-2026.
| Factor | Surcharge excl. VAT/kWp |
|---|---|
| String inverter | 0 (reference) |
| Inverter with optimisers | +100 |
| Microinverters | +200 |
| Tile roof | 0 (reference) |
| Slate roof | +80 |
| Zinc roof | +60 |
| Metal sheet roof | −80 |
| Concrete roof | +150 |
Battery surcharge: +800 €/kWp incl. VAT. Exception: plug & play kit mode applies a flat fee of 500 €/kWp incl. VAT, with no fixed costs or surcharges. If the user has entered a custom quote, it entirely replaces the automatic estimate.
8.3 Regulated tariffs (CRE arrêtés)
The regulated tariffs (surplus, full export, and the self-consumption bonus, or prime à l'autoconsommation) are updated about 4 times a year in line with the orders (arrêtés) of the Commission de Régulation de l'Énergie (CRE, the French energy regulator), and are never hard-coded in the simulator.
| Power tier | Surplus tariff (June 2026) |
|---|---|
| ≤ 3 kWp | 0.0110 €/kWh |
| ≤ 9 kWp | 0.0110 €/kWh |
| ≤ 36 kWp | 0.0110 €/kWh |
| ≤ 100 kWp | 0.0110 €/kWh |
Full export rate : < 9 kWp → 0 (support abolished since March 2025); ≥ 9 kWp → according to the tier in force. Self-consumption bonus : abolished since the order (arrêté) of 1 June 2026 (0 €/kWp). Grid purchase tariff : 0.2001 €/kWh incl. VAT for 3 and 6 kVA, 0.1985 €/kWh incl. VAT from 9 to 36 kVA, regulated Base tariff as at 1 August 2026.
8.4 Multi-year projection
The financial projection is calculated year by year over 25 years (or 20 years for full export, the duration of the EDF OA contract):
For each year n (1 to N):
facteur_production = (1 − dégradation_annuelle)^(n−1) ← panel degradation
facteur_tarif_élec = (1 + 0.03)^(n−1) ← electricity price increase (self-consumption)
facteur_tarif_rachat = (1 + 0.02)^(n−1) ← indexation of the export / sale tariff
If self-consumption:
cash_flow_n = autoconso_kWh × tarif_achat × facteur_production × facteur_tarif_élec
+ injection_kWh × tarif_injection × facteur_production × facteur_tarif_rachat
− TURPE (26.40 €/year)
If full export:
cash_flow_n = production_kWh × tarif_vente × facteur_production × facteur_tarif_rachat
− TURPE (26.40 €/year)Net benefit = sum of annual cash flows − net cost. Each cash flow is net of the TURPE grid access charge for self-producers (26.40 €/year, the only recurring cost). This calculation is done after the year-by-year loop, so as to correctly reflect inflation, degradation and TURPE.
8.5 Financial indicators
| Indicator | Formula |
|---|---|
| Simple payback period | net cost / year 1 annual savings (years) |
| Net gain 25 years | sum of annual cash flows − net cost (€) |
| NPV | cash flows discounted at the chosen discount rate |
| IRR | equivalent annualised rate of return |
| LCOE | (gross cost − bonus) / generation over 25 years (€/kWh generated) |
8.6 CO2 avoided
CO2_évité = production_annuelle_kWh × 0.0520 [kgCO2e/year]
The 52.0 gCO2e/kWh factor corresponds to the average emission factor of the French electricity mix. It is applied to total generation, not just to self-consumption, because all the energy generated is clean energy that displaces the national mix.
8.7 TURPE for residential self-producers
TURPE = 26.40 € excl. VAT/year
Source: regulated tariff of the CRE / Enedis. Shown in the detailed projections but not included in the cash flows of the main projection (marginal impact).
9. Battery scenarios
9.1 Principle and timing of calculation
Battery scenarios are systematically pre-calculated at the end of each simulation, before the results are saved.
9.2 Five standard capacities
| Capacity (kWh) | Indicative price incl. VAT |
|---|---|
| 5.0 | 4,500 € |
| 7.5 | 5,880 € |
| 10.0 | 7,500 € |
| 12.5 | 9,000 € |
| 15.0 | 11,250 € |
9.3 Real hour-by-hour simulation
For each capacity, a detailed simulation runs over the 8,760 hours of the year (not an approximate statistical formula). Initial state: charge level = 50% of usable capacity.
| Parameter | Value |
|---|---|
| Usable capacity (max depth of discharge 90%) | capacity × 0.9 |
| Maximum charge / discharge power | capacity × 0.5 kW |
| Round-trip efficiency | 95 % |
| Minimum charge level | 10% of usable capacity |
Surplus case (generation > consumption): direct self-consumption is counted immediately; the excess charges the battery (95% efficiency); whatever cannot be stored is exported to the grid.
Deficit case (consumption > generation): direct self-consumption is counted; the battery discharges to cover the shortfall; whatever cannot be covered is imported from the grid.
9.4 Indicators produced per scenario
| Indicator | Description |
|---|---|
| Self-consumption rate with battery | % |
| Self-consumption gain | Compared with the no-battery scenario (% points) |
| Net additional annual savings | € |
| Battery cost incl. VAT | € |
| Estimated annual cycles | number |
| Simple payback period (no degradation) | battery cost / additional annual savings |
| Cumulative savings over 25 years | with capacity degradation (€) |
| Estimated replacement year | capped at 25 years |
| Actual payback period over 25 years | accounting for replacement (years) |
9.5 25-year projection with battery capacity degradation
For each year n (1 to 25): facteur_n = max(plancher_dégradation, 1.0 − dégradation_annuelle × n) contribution_n = économie_supplémentaire_annuelle × facteur_n économie_25ans_batterie = sum of the contributions
Degradation: 2%/year → 70% floor reached in year 15 (years 16–25: constant factor of 0.70). Analytical cumulative factor ≈ 19.6× (versus 25× with no degradation, i.e. −22%). The replacement year is derived from the manufacturer's cycle warranty, capped at 25 years; if a replacement is needed earlier, the total cost doubles.
9.6 Real model (professional offer)
If a specific battery model is chosen from a professional catalogue, its actual characteristics replace the generic parameters, and a single scenario is calculated (instead of the 5 standard ones).
9.7 Source of truth for results
The battery scenarios calculated in this way are the only source of truth shown to the user: the values are never recalculated on the fly from a simplified estimation formula.
10. Virtual battery
10.1 Principle
A virtual battery is a service offered by specialist third-party operators that lets you store surplus solar electricity virtually on the grid and recover it later. No additional physical equipment is needed: the smart meter measures the exports, which are credited to a redeemable kWh account. Applicable only to self-consumption with surplus.
10.2 Calculating savings and payback period
Typical pricing structure: activation 299 € incl. VAT (one-off), subscription 1.20 €/kWp/month incl. VAT, return fees (grid re-routing costs + applicable taxes).
The virtual battery values the exported surplus at the return price rather than at the regulated buy-back tariff (0.011 €/kWh), which is a better valuation as long as the extra subscription cost is covered.
valeur_surplus = surplus_annuel_kWh × (tarif_achat − frais_restitution) économies_nettes = valeur_surplus − abonnement_annuel ROI = (coût_activation + sum of the subscriptions) / économies_nettes (years)
The projection factors in a rise in the purchase tariff of +3%/year.
11. Results and indicators displayed
11.1 Main indicators
| Indicator | Calculation |
|---|---|
| Annual generation (kWh/year) | Sum of hourly generation |
| Self-consumption rate (%) | Self-consumption / annual generation × 100 |
| Self-sufficiency rate (%) | Self-consumption / annual consumption × 100 |
| CO2 avoided (kgCO2e/year) | Generation × 0.052 |
11.2 Charts
Four types of chart: average daily profile, monthly balance, seasonal profiles (winter / spring / summer / autumn), and a power comparator (an interactive table of all the configurations tested).
11.3 Low financial return warning
A warning is shown when the calculated 25-year net benefit is negative, typically for a household that is away during the day with large surpluses that are poorly valued.
11.4 Power comparator
All the configurations tested by the optimiser are displayed as an interactive table, making it possible to compare different power levels without running a full simulation again.
12. Professional offer: specifics
A dedicated offer for professional installers lets them run simulations for their clients through an online workspace. Main differences from the consumer journey:
- Precise hourly shading always enabled (satellite mask instead of a declared global factor)
- Real equipment catalogue: specific panel, inverter and battery with the exact datasheet characteristics
- Custom pricing: the professional's own purchase prices
- Custom report in the installer's branding
- Instant interactive recalculation without running a full simulation again
The technical architecture and security aspects of this offer are not detailed in this public document.
Appendix A: Reference constants and assumptions
| Constant | Value | Description |
|---|---|---|
| Grid purchase tariff (Base option) | 0.2001 €/kWh incl. VAT (3 and 6 kVA), 0.1985 €/kWh incl. VAT (9 kVA and above) | Regulated tariff as at 1 August 2026 (CRE), depending on meter power |
| Default peak-hours tariff | 0.2142 €/kWh incl. VAT | Regulated tariff as at 1 August 2026 (CRE) |
| Electricity price increase | 3%/year | Self-consumption inflation |
| Buy-back tariff indexation | 2%/year | Export / sale |
| Panel degradation | 0.5%/year | Generation loss (default) |
| String inverter PR | 0.85 | Performance Ratio |
| Microinverter PR | 0.84 | Performance Ratio |
| PR for inverters with optimisers | 0.86 | Performance Ratio |
| Default temperature coefficient (γ) | −0.35%/°C | Fallback when no specific panel is selected |
| Default NOCT | 45 °C | Fallback when no specific panel is selected |
| Default ground albedo | 0.20 | Grass / urban |
| CO2 factor | 52.0 gCO2e/kWh | French electricity mix |
| Self-producer TURPE grid access charge | 26.40 € excl. VAT/year | Low voltage ≤ 36 kVA |
| Annual battery degradation | 2%/year | Lithium-ion |
| Battery degradation floor | 70 % | Reached in year 15 |
| Battery efficiency (round trip) | 95 % | Default value |
| Battery max depth of discharge | 90 % | Default value |
| Installation fixed costs | 2,200 € excl. VAT | Non-negotiable costs |
| Reduced VAT | 5.5% | ≤ 9 kWp, residential |
| Standard VAT | 20.0% | > 9 kWp |
Appendix B: Sources and references
| Source | Use |
|---|---|
| PVGIS 5.3, Joint Research Centre, European Commission | Hourly weather data (irradiance, temperature) |
| Google Solar | Roof orientation / tilt detection, hourly shading mask |
| pvlib (open-source scientific library) | Geometric calculation, solar position, Hay-Davies model |
| ADEME, Key building figures 2022 (Chiffres clés du bâtiment 2022) | Breakdown ratios of consumption by use |
| CRE / tariff orders (arrêtés) | Surplus, full export and self-consumption bonus tariffs |
| Enedis / CRE | TURPE for residential self-producers |
| NREL, DC Optimizer Field Performance (2019) | Shading reduction with optimisers / microinverters |
| French-market virtual battery operators | Reference pricing structure |
| Field data from professional installers (2026) | Cost model calibration |
Appendix C: Known limitations and areas for improvement
Current limitations
- Generation accuracy: the gap between simulated generation and the PVGIS reference measurements is about +5 to +8% on average. The weather data themselves carry an uncertainty of about ±5%.
- Estimated consumption: the quick calculator produces a statistical estimate. Actual consumption may vary by ±20% depending on individual habits.
- Declared shading: in the free simulation, shading is a global factor (no detailed modelling of partial shading between strings of panels).
- Future tariffs: the 25-year projection assumes a steady rise of 3%/year in electricity prices, a reasonable assumption as a trend but uncertain over the long term.
- Full export ≤ 9 kWp: the EDF OA feed-in tariff has been abolished for installations ≤ 9 kWp since March 2025; the simulator reflects this situation correctly.
Identified areas for improvement
- Systematic validation of simulated generation against measured real-world generation data
- Extension of the tariff catalogue to other electricity suppliers
- Taking collective self-consumption into account for co-owned buildings
- More refined modelling of the non-linear degradation of panels early in life
Recently delivered improvements (June 2026)
- Multi-face roofs: 1 to 3 roof faces with different orientations / tilts, detected automatically (see §5.8)
- Hourly shading averaged over the actual installation area (see §4.2)
- Peak / off-peak hours option (see §8.1, §8.3)
- Battery capacity degradation over 25 years with replacement built into the total cost (see §9.5)
See this methodology in action
Run a free simulation and get your personalised results in 2 minutes.
Simulate for free