Skip to content

Commit d9e71f8

Browse files
committed
Add CTMembraneFiltration.jl application and improve color/tag management
- Add Membrane filtration application (MF) with energy optimization tags - Replace hardcoded colors with JavaScript automatic alternation - Rename tag variables from numbered (tags1, tags2, ...) to abbreviation-based (tags-cov, tags-dbg, ...) for easier maintenance when inserting new applications
1 parent dbacc24 commit d9e71f8

3 files changed

Lines changed: 34 additions & 26 deletions

File tree

_includes/app-card.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<a class="app-card" href="{{ include.url }}" style="--app-color: {{ include.color }};" data-tags="{{ include.tags }}">
1+
<a class="app-card" href="{{ include.url }}" style="--app-color: {{ include.color | default: '#CB3C33' }};" data-tags="{{ include.tags }}">
22
<div class="app-header">
33
<div class="app-avatar-text">{{ include.abbrev }}</div>
44
<span class="app-title">{{ include.title }}</span>

applications/index.md

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ custom_js:
1313

1414
<div class="contributors-section">
1515

16-
{% assign app_count = 8 %}
16+
{% assign app_count = 9 %}
1717

1818
<div class="apps-layout">
1919

@@ -117,95 +117,97 @@ custom_js:
117117

118118
<div class="app-grid" id="app-grid">
119119

120-
{% assign tags1 = "classical-mechanics,calculus-of-variations,lagrangian,direct-methods,indirect-methods" | split: "," %}
120+
{% assign tags-cov = "classical-mechanics,calculus-of-variations,lagrangian,direct-methods,indirect-methods" | split: "," %}
121121
{% include app-card.html
122122
url="https://control-toolbox.org/CalculusOfVariations.jl"
123-
color="#CB3C33"
124123
abbrev="CoV"
125124
title="Calculus of variations"
126125
summary="Classical variational problems reformulated as optimal control problems and solved via direct and indirect numerical methods."
127126
tags="classical-mechanics,calculus-of-variations,lagrangian,direct-methods,indirect-methods"
128-
tags_list=tags1
127+
tags_list=tags-cov
129128
%}
130129

131-
{% assign tags2 = "biology,resource-allocation,switching-time,bang-bang,indirect-methods" | split: "," %}
130+
{% assign tags-dbg = "biology,resource-allocation,switching-time,bang-bang,indirect-methods" | split: "," %}
132131
{% include app-card.html
133132
url="https://agustinyabo.github.io/DiauxicGrowth.jl"
134-
color="#389826"
135133
abbrev="DBG"
136134
title="Diauxic bacterial growth"
137135
summary="Optimal resource allocation for bacterial growth on multiple substrates, maximizing final cell population via optimal control of metabolic fluxes."
138136
tags="biology,resource-allocation,switching-time,bang-bang,indirect-methods"
139-
tags_list=tags2
137+
tags_list=tags-dbg
140138
%}
141139

142-
{% assign tags3 = "biology,piecewise-linear,nonsmooth,regularization,gene-networks" | split: "," %}
140+
{% assign tags-grn = "biology,piecewise-linear,nonsmooth,regularization,gene-networks" | split: "," %}
143141
{% include app-card.html
144142
url="https://agustinyabo.github.io/PWLdynamics.jl"
145-
color="#9558B2"
146143
abbrev="GRN"
147144
title="PWL models of gene regulatory networks"
148145
summary="State transitions in piecewise linear models of gene regulatory networks, with a nonsmooth L¹ cost and regularization strategies (Hill and exponential)."
149146
tags="biology,piecewise-linear,nonsmooth,regularization,gene-networks"
150-
tags_list=tags3
147+
tags_list=tags-grn
151148
%}
152149

153-
{% assign tags4 = "preconditioning,shooting,convergence,hamiltonian,geometric-control" | split: "," %}
150+
{% assign tags-gprec = "preconditioning,shooting,convergence,hamiltonian,geometric-control" | split: "," %}
154151
{% include app-card.html
155152
url="https://control-toolbox.org/GeometricPreconditioner.jl"
156-
color="#CB3C33"
157153
abbrev="GPrec"
158154
font_size="19"
159155
title="Geometric preconditioner"
160156
summary="Geometric preconditioning of shooting methods to accelerate convergence in indirect optimal control, exploiting the structure of the Hamiltonian flow."
161157
tags="preconditioning,shooting,convergence,hamiltonian,geometric-control"
162-
tags_list=tags4
158+
tags_list=tags-gprec
163159
%}
164160

165-
{% assign tags5 = "constrained,regularization,shooting,indirect-methods,zermelo" | split: "," %}
161+
{% assign tags-lctrl = "constrained,regularization,shooting,indirect-methods,zermelo" | split: "," %}
166162
{% include app-card.html
167163
url="https://control-toolbox.org/LossControl.jl"
168-
color="#389826"
169164
abbrev="LCtrl"
170165
font_size="19"
171166
title="Loss control regions in optimal control problems"
172167
summary="Optimal control problems with loss control regions where the control is frozen, solved by combining direct regularization and indirect shooting methods."
173168
tags="constrained,regularization,shooting,indirect-methods,zermelo"
174-
tags_list=tags5
169+
tags_list=tags-lctrl
175170
%}
176171

177-
{% assign tags6 = "medical-imaging,time-optimal,physics,geometric-control,bloch-equation" | split: "," %}
172+
{% assign tags-mf = "energy-optimization,production-regeneration,bang-bang,singular-control,turnpike" | split: "," %}
173+
{% include app-card.html
174+
url="https://remydutto.github.io/CTMembraneFiltration.jl"
175+
abbrev="MF"
176+
title="Membrane filtration"
177+
summary="Energy-optimal control of membrane filtration processes with production-regeneration cycles, minimizing power consumption while achieving targeted permeate volume via bang-bang and singular control strategies."
178+
tags="energy-optimization,production-regeneration,bang-bang,singular-control,turnpike"
179+
tags_list=tags-mf
180+
%}
181+
182+
{% assign tags-mri = "medical-imaging,time-optimal,physics,geometric-control,bloch-equation" | split: "," %}
178183
{% include app-card.html
179184
url="https://control-toolbox.org/MagneticResonanceImaging.jl"
180-
color="#9558B2"
181185
abbrev="MRI"
182186
title="Optimal control in Magnetic Resonance Imaging"
183187
summary="Time-minimal control of nuclear spin ensembles via RF pulses, with applications to contrast optimization in MRI using geometric optimal control."
184188
tags="medical-imaging,time-optimal,physics,geometric-control,bloch-equation"
185-
tags_list=tags6
189+
tags_list=tags-mri
186190
%}
187191

188-
{% assign tags7 = "aerospace,time-optimal,shooting,direct-methods,orbital-mechanics" | split: "," %}
192+
{% assign tags-kepler = "aerospace,time-optimal,shooting,direct-methods,orbital-mechanics" | split: "," %}
189193
{% include app-card.html
190194
url="https://control-toolbox.org/Kepler.jl"
191-
color="#CB3C33"
192195
abbrev="Kepler"
193196
font_size="19"
194197
title="Minimum time orbit transfer"
195198
summary="Minimum-time orbit transfer of a spacecraft under Kepler dynamics with thrust constraints, solved by direct and indirect methods."
196199
tags="aerospace,time-optimal,shooting,direct-methods,orbital-mechanics"
197-
tags_list=tags7
200+
tags_list=tags-kepler
198201
%}
199202

200-
{% assign tags8 = "epidemiology,constrained,social-distancing,public-health,ode" | split: "," %}
203+
{% assign tags-sir = "epidemiology,constrained,social-distancing,public-health,ode" | split: "," %}
201204
{% include app-card.html
202205
url="https://anasxbouali.github.io/SIRcontrol.jl"
203-
color="#389826"
204206
abbrev="SIR"
205207
title="On the problem of minimizing the epidemic final size for SIR model via social distancing"
206208
summary="Minimizing epidemic final size in the SIR model via L¹-constrained social distancing interventions, with optimal control over a single or two time intervals."
207209
tags="epidemiology,constrained,social-distancing,public-health,ode"
208-
tags_list=tags8
210+
tags_list=tags-sir
209211
%}
210212

211213
</div>

assets/js/applications.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,4 +276,10 @@
276276

277277
// Load saved filters on page load
278278
loadFilters();
279+
280+
// Automatic color alternation
281+
var colors = ['#CB3C33', '#389826', '#9558B2'];
282+
cards.forEach(function(card, index) {
283+
card.style.setProperty('--app-color', colors[index % colors.length]);
284+
});
279285
})();

0 commit comments

Comments
 (0)