Skip to content
Snippets Groups Projects
Commit 6ab55717 authored by Rolfes's avatar Rolfes
Browse files

neues Layout

parent a2af33f9
Branches
No related tags found
No related merge requests found
%% Cell type:code id:28ffafab-45ee-4719-917f-0cb2bacb4915 tags: %% Cell type:code id:28ffafab-45ee-4719-917f-0cb2bacb4915 tags:
``` python ``` python
import markdown import markdown
import ipywidgets as widgets import ipywidgets as widgets
import nowo1_base as no_ba import nowo1_base as no_ba
import nowo1_sim_binary as no_bi import nowo1_sim_binary as no_bi
import nowo1_gui_base as no_gui import nowo1_gui_base as no_gui
import nowo1_log_base as no_log import nowo1_log_base as no_log
``` ```
%% Cell type:markdown id:valued-saskatchewan tags: %% Cell type:markdown id:valued-saskatchewan tags:
### Bilanzsystem -Kristallisation- ### Bilanzsystem -Kristallisation-
Hier stelle ich Informationen und ein kleines Berechnungstool zur Verfügung, um Standartaufgaben zur Kristallisation einfach zur Berechnen
%% Cell type:code id:a0497a7a-9f3a-4566-a880-48e123028b37 tags: %% Cell type:code id:a0497a7a-9f3a-4566-a880-48e123028b37 tags:
``` python ``` python
html_info_node_1 = ''' html_info_node_1 = '''
<p>Knoten_1: Solvat und Solvent -Eintritt-</p> <p>Knoten_1: Solvat und Solvent -Eintritt-</p>
<ul style = "margin : 0; padding = 0" > <ul style = "margin : 0; padding = 0" >
<li style = "margin : 0" >C: Eintritt (Feed) eines Kristallisators, bestehend aus Solvat (Salz) und Solvent (Lösungsmittel). Der Eintritt wird hier als <strong>konstant</strong> angesehen</li> <li style = "margin : 0" >C: Eintritt (Feed) eines Kristallisators, bestehend aus Solvat (Salz) und Solvent (Lösungsmittel). Der Eintritt wird hier als <b>konstant</b> angesehen</li>
<li style = "margin : 0" >A: Solvat gelöstes und / oder kristallines Solvat. Die Masse ist konstant, aber die Zusammensetzung zwischen kristallines und gelöstes Solvat kann sich ändern. Hängt von einer Temperaturänderung und / oder einer Mengenänderung des Solvents ab (Passieren der Löslichkeitsgrenze)</li> <li style = "margin : 0" >A: Solvat gelöstes und / oder kristallines Solvat. Die Masse ist konstant, aber die Zusammensetzung zwischen kristallines und gelöstes Solvat kann sich ändern. Hängt von einer Temperaturänderung und / oder einer Mengenänderung des Solvents ab (Passieren der Löslichkeitsgrenze)</li>
<li>B: Solventmasse reines Lösungsmittel. Wird hier als <strong>konstant</strong> angesehen.</li> <li>B: Solventmasse reines Lösungsmittel. Wird hier als <b>konstant</b> angesehen.</li>
</ul> </ul>
''' '''
html_info_node_2 = ''' html_info_node_2 = '''
<p><strong>Knoten_2: Solvat</strong></p> <p><b>Knoten_2: Solvat</b></p>
<ul style = "margin : 0; padding = 0" > <ul style = "margin : 0; padding = 0" >
<li>C: = Knoten_1.A</li> <li>C: = Knoten_1.A</li>
<li>A: Kristallines Solvat. Die Menge kann sich ändern. </li> <li>A: Kristallines Solvat. Die Menge kann sich ändern. </li>
<li>B: gelöstestes Solvat. Die Menge kann sich ändern.</li> <li>B: gelöstestes Solvat. Die Menge kann sich ändern.</li>
</ul> </ul>
''' '''
html_info_node_3 = ''' html_info_node_3 = '''
<p><strong>Knoten_3: Solvat und Solvent auf der Löslichkeitskurve</strong></p> <p><b>Knoten_3: Solvat und Solvent auf der Löslichkeitskurve</b></p>
<ul style = "margin : 0; padding = 0" > <ul style = "margin : 0; padding = 0" >
<li>C: Solvat- und Solventmasse geättigt (Punkt auf Löslichkeitskurve).</li> <li>C: Solvat- und Solventmasse geättigt (Punkt auf Löslichkeitskurve).</li>
<li>A: Solvent nach einer möglichen Massenänderung </li> <li>A: Solvent nach einer möglichen Massenänderung </li>
<li>B: = Knoten_2.B</li> <li>B: = Knoten_2.B</li>
</ul> </ul>
''' '''
html_info_node_4 = ''' html_info_node_4 = '''
<p><strong>Knoten_4: Solvent -Austritt-</strong></p> <p><b>Knoten_4: Solvent -Austritt-</b></p>
<ul style = "margin : 0; padding = 0" > <ul style = "margin : 0; padding = 0" >
<li>C: = Knoten_1.B</li> <li>C: = Knoten_1.B</li>
<li>A: Veränderte Solventmasse </li> <li>A: Veränderte Solventmasse </li>
<li>B: = Abgeführte Solventmasse (Dampf) </li> <li>B: = Abgeführte Solventmasse (Dampf) </li>
</ul> </ul>
''' '''
html_info_node_5 = ''' html_info_node_5 = '''
<p><strong>Knoten_5: Solvat und Solvent -Austritt-</strong></p> <p><b>Knoten_5: Solvat und Solvent -Austritt-</b></p>
<ul style = "margin : 0; padding = 0" > <ul style = "margin : 0; padding = 0" >
<li>C: Solvent und Solvat (gelöstes und kristallines)</li> <li>C: Solvent und Solvat (gelöstes und kristallines)</li>
<li>A: = Knoten_3.C </li> <li>A: = Knoten_3.C </li>
<li>B: = Knoten_2.A </li> <li>B: = Knoten_2.A </li>
</ul> </ul>
''' '''
infos_node_1 = widgets.HTML(html_info_node_1) infos_node_1 = widgets.HTML(html_info_node_1)
infos_node_2 = widgets.HTML(html_info_node_2) infos_node_2 = widgets.HTML(html_info_node_2)
infos_node_3 = widgets.HTML(html_info_node_3) infos_node_3 = widgets.HTML(html_info_node_3)
infos_node_4 = widgets.HTML(html_info_node_4) infos_node_4 = widgets.HTML(html_info_node_4)
infos_node_5 = widgets.HTML(html_info_node_5) infos_node_5 = widgets.HTML(html_info_node_5)
``` ```
%% Cell type:code id:01100bca-6ffb-4019-8225-f8e9848849a7 tags:
``` python
html_info_basenode = '''
<p><b>Voraussetzungen zur Berechnung einer binären Bilanz</b><p>
<ul style = "margin : 0; padding = 0" >
<li>Zwei Größen müssen vorgeben werden</li>
<li>von den zwei Größen muss eine extensiv sein </li>
<li>Volumenberechnung kann nur <br> bei gleichen Druck und Temperatur erfolgen</li>
</ul>
'''
info_basenode = widgets.HTML(html_info_basenode)
file = open("pics/Knotenmodell_Basis_Vers_1.svg", "rb")
basicnode_image = widgets.Image(
value = file.read(),
format='svg+xml',
width = '400px'
)
info_base = widgets.HBox([info_basenode, basicnode_image])
```
%% Cell type:code id:a38cffbc-42c9-4c39-823f-00f81c99fc8c tags: %% Cell type:code id:a38cffbc-42c9-4c39-823f-00f81c99fc8c tags:
``` python ``` python
tab_contents = ['Knoten 1', 'Knoten 2', 'Knoten 3', 'Knoten 4', 'Knoten 5'] tab_contents = ['Allgemein', 'Knoten 1', 'Knoten 2', 'Knoten 3', 'Knoten 4', 'Knoten 5']
tab = widgets.Tab(children =[infos_node_1, infos_node_2, infos_node_3, infos_node_4, infos_node_5]) info_tab = widgets.Tab(children =[info_base, infos_node_1, infos_node_2, infos_node_3, infos_node_4, infos_node_5])
i = 0 i = 0
for name in tab_contents: for name in tab_contents:
tab.set_title(i, name) info_tab.set_title(i, name)
i += 1 i += 1
``` ```
%% Cell type:code id:305dd061-c441-491c-8b92-8a5c54d739ad tags: %% Cell type:code id:305dd061-c441-491c-8b92-8a5c54d739ad tags:
``` python ``` python
html_aufgabe_totesmeer = markdown.markdown(r''' html_aufgabe_totesmeer = markdown.markdown(r'''
Im Meerwasser des Toten Meer gibt es Mineralien in hochkonzentrierter Form, durchschnittlich ca. <b>28% (Massenbeladung)</b> Salz. Im Meerwasser des Toten Meer gibt es Mineralien in hochkonzentrierter Form, durchschnittlich ca. <b>28% (Massenbeladung)</b> Salz.
Das Salz setzt sich zusammen aus Das Salz setzt sich zusammen aus
Magnesiumchlorid, Calciumchlorid, Natriumchlorid, Kaliumchlorid und Spurenelemente, bezogen auf die wasserfreien Salze. Magnesiumchlorid, Calciumchlorid, Natriumchlorid, Kaliumchlorid und Spurenelemente, bezogen auf die wasserfreien Salze.
Totes Meer Salz, wird durch die ständige Verdunstung des Wassers, das Wasser hat eine min. Temperatur von <b>20°C</b>, in sogenannten Salzgärten gewonnen. Totes Meer Salz, wird durch die ständige Verdunstung des Wassers, das Wasser hat eine min. Temperatur von <b>20°C</b>, in sogenannten Salzgärten gewonnen.
Die Salzgärten sind großflächig, künstlich angelegte Sammel Becken, indem das Wasser verdunstet und reines Salz zurück bleibt. Die Salzgärten sind großflächig, künstlich angelegte Sammel Becken, indem das Wasser verdunstet und reines Salz zurück bleibt.
#### Aufgabe: #### Aufgabe:
Wieviel Wasser des toten Meeres, bezogen auf $\pmb{10.0\ \text{kg} \cdot \text{s}^{-1}}$ <b>Meerwasser </b>, muss man verdampfen, um <b>20% (Massenanteil)</b> des gelösten Salzes als kristallines Salz zu gewinnen? Wieviel Wasser des toten Meeres, bezogen auf $\pmb{10.0\ \text{kg} \cdot \text{s}^{-1}}$ <b>Meerwasser </b>, muss man verdampfen, um <b>20% (Massenanteil)</b> des gesamten Salzes als kristallines Salz zu gewinnen?
#### Vereinfachung: #### Vereinfachung:
* Das gesamte Salz wird als $NaCl$ angenommen * Das gesamte Salz wird als $NaCl$ angenommen
* Die Temperatur bleibt konstant * Die Temperatur bleibt konstant
* Die Löslichkeit (Beladung) von $NaCl$ bei 20°C beträgt $\pmb{0.36\ \text{kg/kg}}$ (aus Diagramm) * Die Löslichkeit (Beladung) von $NaCl$ bei 20°C beträgt $\pmb{0.36\ \text{kg/kg}}$ (aus Diagramm)
''') ''')
aufgabe_totesmeer = widgets.HTMLMath(html_aufgabe_totesmeer) aufgabe_totesmeer = widgets.HTMLMath(html_aufgabe_totesmeer)
``` ```
%% Cell type:code id:0b6c3312-1d1d-4b6c-8e8c-ea62057b8b3a tags: %% Cell type:code id:0b6c3312-1d1d-4b6c-8e8c-ea62057b8b3a tags:
``` python ``` python
accordion = widgets.Accordion(children=[aufgabe_totesmeer, tab info_accordion = widgets.Accordion(children=[aufgabe_totesmeer, info_tab
], selected_index=None) ], selected_index=None)
accordion.set_title(1, 'Informationen zu den Bilanzknoten') info_accordion.set_title(1, 'Informationen zu den Bilanzknoten')
accordion.set_title(0, 'Übungsaufgabe') info_accordion.set_title(0, 'Übungsaufgabe')
accordion info_accordion
``` ```
%% Output %% Output
%% Cell type:code id:a5792526-053c-448a-9e57-7dc25bd86a6f tags: %% Cell type:code id:a5792526-053c-448a-9e57-7dc25bd86a6f tags:
``` python ``` python
file = open("pics/Knotenmodell_Kristallisation_Vers_1.svg", "rb") file = open("pics/Knotenmodell_Kristallisation_Vers_1.svg", "rb")
image_2 = file.read() image_2 = file.read()
crystal_image = widgets.Image( crystal_image = widgets.Image(
value=image_2, value=image_2,
format='svg+xml', format='svg+xml',
width = '600px' width = '60%'
) )
#crystal_image.layout.object_fit = 'scale-down'
#crystal_image.layout.margin = 'image_margin'
``` ```
%% Cell type:code id:eec838fd-a5a9-49c8-a873-07c0e3653622 tags: %% Cell type:code id:eec838fd-a5a9-49c8-a873-07c0e3653622 tags:
``` python ``` python
bilanz_1 = no_bi.binary_node('bilanz_1', init_methode = 'gui') # Umgebungs bilanz_1 = no_bi.binary_node('bilanz_1', init_methode = 'gui') # Umgebungs
step = no_ba.step_single('step') step = no_ba.step_single('step')
gui_data = no_gui.gui_ipysheet('gui_data') gui_data = no_gui.gui_ipysheet('gui_data')
log = no_log.log_sheet('log') log = no_log.log_sheet('log')
``` ```
%% Cell type:code id:7209ba84-1e31-4d7e-b205-eb3b822fba13 tags: %% Cell type:code id:7209ba84-1e31-4d7e-b205-eb3b822fba13 tags:
``` python ``` python
# stepper for options initialisieren # stepper for options initialisieren
step.Init(work_objs=[bilanz_1.Calc_C]) step.Init(work_objs=[bilanz_1.Calc_C])
``` ```
%% Cell type:code id:78564e31-2e23-4fd0-879e-e5fec1cf5c8e tags: %% Cell type:code id:78564e31-2e23-4fd0-879e-e5fec1cf5c8e tags:
``` python ``` python
bilanz_1.Option(options = { bilanz_1.Option(options = {
'name' : {'alias' : 'Knoten_X', 'visible' : True}} ) 'name' : {'alias' : 'Knoten_X', 'visible' : True}} )
bilanz_1.Gate_A.general.Option(alias_name = 'size') bilanz_1.Gate_A.general.Option(alias_name = 'size')
bilanz_1.Gate_A.Option(alias_name = 'A') bilanz_1.Gate_A.Option(alias_name = 'A')
bilanz_1.Gate_B.general.Option(alias_name = 'size') bilanz_1.Gate_B.general.Option(alias_name = 'size')
bilanz_1.Gate_B.Option(alias_name = 'B') bilanz_1.Gate_B.Option(alias_name = 'B')
bilanz_1.Gate_C.general.Option(alias_name = 'size') bilanz_1.Gate_C.general.Option(alias_name = 'size')
bilanz_1.Gate_C.Option(alias_name = 'C') bilanz_1.Gate_C.Option(alias_name = 'C')
bilanz_1.A_ratio.Option(alias_name = 'Beladung A/B') bilanz_1.A_ratio.Option(alias_name = 'Beladung A/B')
bilanz_1.B_ratio.Option(alias_name = 'Beladung B/A') bilanz_1.B_ratio.Option(alias_name = 'Beladung B/A')
bilanz_1.A_portion.Option(alias_name = 'Anteil A/(A+B)') bilanz_1.A_portion.Option(alias_name = 'Anteil A/(A+B)')
bilanz_1.B_portion.Option(alias_name = 'Anteil B/(A+B)') bilanz_1.B_portion.Option(alias_name = 'Anteil B/(A+B)')
``` ```
%% Cell type:code id:5bc30890-5c60-4d96-8138-fe9b7c0682d1 tags: %% Cell type:code id:5bc30890-5c60-4d96-8138-fe9b7c0682d1 tags:
``` python ``` python
#Logger zum Schluss initialisieren #Logger zum Schluss initialisieren
log.Init(Values=[bilanz_1.log_all], Gui_For_Data = gui_data) log.Init(Values=[bilanz_1.log_all], Gui_For_Data = gui_data)
``` ```
%% Cell type:code id:d95ff8cb-65bd-4e21-a386-6f83531970df tags: %% Cell type:code id:d95ff8cb-65bd-4e21-a386-6f83531970df tags:
``` python ``` python
Col_1_2 = widgets.VBox([ gui_data.Box(), log.Box(), step.Box()]) Col_1_2 = widgets.VBox([ gui_data.Box(), log.Box(), step.Box()])
Row_1 = widgets.HBox([bilanz_1.Box(), Col_1_2, crystal_image]) Row_1 = widgets.HBox([bilanz_1.Box(), Col_1_2, crystal_image])
#Col_1 = widgets.VBox([Row_1, bilanz_1.Box()]) calc = widgets.VBox([Row_1])
#Row_1 = widgets.HBox([Col_1_2, gui_data.Box(), crystal_image])
#Row_2 = widgets.HBox([bilanz_1.Box()])
widgets.VBox([Row_1])
``` ```
%% Output %% Cell type:code id:48480dd5-d70b-44c6-9d04-c762d28d4125 tags:
%% Cell type:code id:10019288-0d5f-4517-8b11-047ab10e36a0 tags:
``` python ``` python
calc_accordionn = widgets.Accordion(children=[calc], selected_index=None)
calc_accordionn.set_title(0, 'Interaktive Berechnung')
calc_accordionn
``` ```
%% Output
......
...@@ -489,7 +489,9 @@ class nowo_base(): ...@@ -489,7 +489,9 @@ class nowo_base():
def _create_gui(self): def _create_gui(self):
self._GUI_is_create = True self._GUI_is_create = True
# Grundlegende Desings in den Boxen anlegen # Grundlegende Desings in den Boxen anlegen
style_box = widgets.Layout(margin = '10px') style_box = widgets.Layout(
margin = '10px',
border='solid 2px')
self.total_box.layout.margin = style_box.margin self.total_box.layout.margin = style_box.margin
if not self._gui_name_visible: return if not self._gui_name_visible: return
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment