-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Using ModelChain with Plane of Array (POA) as weather input #536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
I agree, this enhancement would be valuable. There isn't an elegant way to supply A question for @srlightfoote : in your use case, does |
Not sure I’m qualified to answer the question other than to say that the use case would be for a Pyranometer (secondary standard or other) at a typical operational solar plant installed at the POA of the modules, either at a fixed tilt, or mounted on a tracker array. |
OK, if it's a pyranometer then we should anticipate the POA irradiance is broadband without either spectral adjustment or reflection losses. I just wanted to confirm this use case is of interest before we consider the |
@mikofski I don't think that starting with POA, translating to GHI, then transposing back to POA to provide input to a power simulation is wise. I doubt that the POA-GHI-POA circle closes to the same values. I think that we can enhance the |
@cwhanse I agree wholeheartedly with your assessment that an expansion of the Thanks all for your interest in this update. Let me know if I can be of further help. I'm afraid my python skills are probably insufficient at this point to contribute to the package, but hopefully in the future I'll be able to lend a hand. |
@cwhanse, @wholmgren, @srlightfoote, I'm sorry, I was confused, you are correct, POA if measured and matching spectral and IAM of panels, then should be used directly. I was thinking about shading, then you might need the components individually for shade and unshaded areas, but correct also that roundabout process will introduce uncertainties. Although, if POA measurements are not matched spectrally or have different IAM, then I don't see what other choice you would have than go the roundabout way, right? |
I'm not too excited about making If we did both of the above, the
In #239 we decided to make a new method, |
@cwhanse As far as use-cases go, it would be handy to be able to specify either pyranometer or reference cell as the sensor type when supplying measured POA data (SAM has this toggle). Though if the scope is limited to only allowing one of them, I would agree that assuming pyranometer is preferable. Additionally, for what it's worth about POA-GHI-POA: SAM will decompose measured POA into constituent direct/diffuse components for shading calculation purposes, and in my experience the recombined POA is pretty close to the original (within a W/m2 or two). But I have no hard data to show for this. |
Sorry, I did not see this until just now. Is there any way that we can abstract these three lines in ModelChain.run_model: self.aoi_model()
self.spectral_model()
self.effective_irradiance_model() into a single @srlightfoote PVfit can use measurements of an IEC 61853-1 calibrated reference PV device (say, a matched reference module at the same orientation as the array) and directly produce an "effective irradiance ratio" F := Isc/Isc0 and a cell temperature, T, which is then passed to a single-diode performance model that is parameterized directly in terms of F (as opposed to G with various corrections). I can even envision a F-measurement scheme that computes F using a module's T-dependent irradiance-mode spectral response, a conventional module temperature model, and some sort of global tilted spectrometer. Thus, in #478, I was trying to accommodate these possibilities, while "falling back" to a variant of the SAPM to compute F and T from "conventional" MET-station-based weather data when a reference PV device is not available. |
@markcampanelli are you suggesting to replace the three separate calculations with a single call to a new method? What would the new method do that the current methods don't? |
@cwhanse Yes. Actually, for the main use case I have at hand, the new single method will do less than those three methods put together. With a "matched" reference PV device and an "F-formulation" of a single-diode model, there is no need for the AOI or Spectral Correction computations to determine F. In the simplest case, the weather data are merely a time series of F's and T's, which are directly input to the single-diode model. (An example use case here would be for a capacity acceptance test where one compares measured array power to the model prediction over a period of time, where a reference device monitors F and T directly. See the discussion at pvcaptest/pvcaptest#33.) However, most folks don't seem to work with such reference devices, so after inspecting the Granted, I don't understand all the |
It seems that we're discussing some additional switches that make the model configuration depend on the input time series data. This is very much counter to the intent of One solution could be refactoring |
@wholmgren I'm game for having Along these lines, should This also circles back to the discussion of a "plugin/entrypoint" architecture for the "computational graph" that defines the model chain, and I think it's a real question as to whether this project has the intent and resources to design, enforce, and support such flexible higher-level interfaces. |
I really love the concept of the ModelChain in pvlib. However, I would like to be able to use the ModelChain to model DC and AC output of a given system (more than one module and inverter) using Plane of Array irradiance as the weather input, rather than inputting the GHI, DNI and DHI components (which I don't have measurements of) and then specifying a transposition model as part of the ModelChain. Could this functionality of being able to specify:
mc=pvlib.modelchain.ModelChain(transposition_model='None')
and then inputing
poa_global
data as an input toweather
data frame inmc.run_model
?The text was updated successfully, but these errors were encountered: