-
Notifications
You must be signed in to change notification settings - Fork 2
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
Extending plugin to tandem solar cells #31
base: main
Are you sure you want to change the base?
Conversation
Reviewer's Guide by SourceryThis PR extends the existing plugin to support tandem solar cells by introducing new schema definitions and parsers. The implementation follows a modular approach, defining separate schema packages for different components of tandem solar cells (layers, measurements, references) and a parser to handle Excel-based data input. The schema is designed to capture detailed information about tandem solar cell architectures, including layer stacks, material compositions, and synthesis processes. Class diagram for Tandem Solar Cell SchemaclassDiagram
class PerovskiteTandemSolarCell {
+General general
+Reference reference
+Layer[] layer_stack
}
class General {
+String architecture
+int number_of_terminals
+int number_of_junctions
+int number_of_cells
+String[] photoabsorber
+float[] photoabsorber_bandgaps
+float area
+float area_measured
+bool flexibility
+bool semitransparent
+bool contains_textured_layers
+bool contains_antireflectie_coating
+SubCell[] subcell
}
class Reference {
+int ID_temp
+int ID
+String free_text_comment
+String name_of_person_entering_the_data
+bool data_entered_by_author
}
class Layer {
+String name
+String functionality
+float thickness
+float area
+float surface_roughness
+String origin
+String supplier
+String supplier_brand
+Cleaning cleaning
+Synthesis synthesis
+Storage storage
+Substance[] additives
}
class SubCell {
+float area
+bool module
+bool commercial_unit
+String supplier
}
class Synthesis {
+SynthesisStep[] steps
}
class Cleaning {
+CleaningStep[] steps
}
class Storage {
+String atmosphere
+float humidity_relative
+float time_until_next_step
}
class Substance {
+String name
+String supplier
+String purity
+String concentration
+float volume
+float age
+float temperature
}
PerovskiteTandemSolarCell --> General
PerovskiteTandemSolarCell --> Reference
PerovskiteTandemSolarCell --> Layer
General --> SubCell
Layer --> Cleaning
Layer --> Synthesis
Layer --> Storage
Layer --> Substance
Class diagram for Tandem ParserclassDiagram
class TandemParser {
+parse(String mainfile, EntryArchive archive, BoundLogger logger, dict child_archives)
}
class EntryArchive {
+data
}
TandemParser --> EntryArchive
TandemParser : +parse()
TandemParser : -cleanup_dataframe()
TandemParser : -split_data()
TandemParser : -convert_value()
TandemParser : -partial_get()
TandemParser : -exact_get()
TandemParser : -extract_cleaning()
TandemParser : -extract_additives()
TandemParser : -extract_solvents()
TandemParser : -extract_reactants()
TandemParser : -extract_quenching_solvents()
TandemParser : -extract_perovskite_composition()
TandemParser : -extract_chalcopyrite_composition()
TandemParser : -extract_alkali_doping()
TandemParser : -extract_annealing()
TandemParser : -extract_storage()
TandemParser : -extract_reference()
TandemParser : -extract_general()
TandemParser : -extract_layer_stack()
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…arsing degC Quantities
- fix label for ThermalAnnealing - discard nan-containing annealing processes - fix overwriting SynthesisSteps - fix several defaultDisplayUnits
a2adb4e
to
a011afe
Compare
), | ||
description='The type of silicon used in the layer', | ||
) | ||
doping_sequence = Quantity( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch. These both looks like bugs in the parser.
- Empty Layers
- Merge Silicon into single Layer
Substrate, | ||
) | ||
|
||
from .ref import Reference |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Are you using relative imports for any specific reason here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No. I wasn't aware of the difference that makes.
So you would always go for absolute imports even within the same package?
) | ||
|
||
|
||
class PerovskiteComposition(ArchiveSection): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess this can be replaced with the new PerovskiteComposition Section. We will need to make sure that bthe normalizer work also in the case one more than one perovksite is present in the tandem device.
PR to track work on issue #8 - extending plugin to tandem solar cells.
Tasks:
Ref.
section)PublicationReference
not working?Tandem.
section)each with properties and synthesis information (c.f.
NAlayer
and)target
Quantity to reference the state/part which is being measuredsrc/perovskite_solar_cell_database