version 3.10-dev
dumuxmessage.hh
Go to the documentation of this file.
1// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2// vi: set et ts=4 sw=4 sts=4:
3//
4// SPDX-FileCopyrightInfo: Copyright © DuMux Project contributors, see AUTHORS.md in root folder
5// SPDX-License-Identifier: GPL-3.0-or-later
6//
12#ifndef DUMUX_MESSAGE_HH
13#define DUMUX_MESSAGE_HH
14
15#include <iomanip>
16#include <iostream>
17#include <ctime>
18
19#include <dumux/io/format.hh>
20
21namespace Dumux {
22
28{
30 static const int nMessages_ = 34;
31
32public:
33
38 static void print(bool firstCall = false)
39 {
40 // initialize in case someone forgets to set first call
41 static int dice = 8;
42
43 if(firstCall)
44 {
45 // roll the dice to decide which start message will be displayed
46 std::srand(std::time(0));
47 dice = std::rand() % (nMessages_ + 1);
48 }
49
50 std::cout << std::endl;
51
52 switch (dice)
53 {
54 case 0:
55 if(firstCall)
56 std::cout << "Welcome aboard DuMuX airlines. Please fasten your seatbelts! "
57 << "Emergency exits are near the time integration." << std::endl;
58 else
59 std::cout << "We hope that you enjoyed simulating with us " << std::endl
60 << "and that you will choose us next time, too." << std::endl;
61 break;
62 case 1:
63 if(firstCall)
64 std::cout << "Let's get the cow off the ice." << std::endl;
65 else
66 std::cout << "DuMuX got the cow off the ice." << std::endl;
67 break;
68 case 2:
69 if(firstCall)
70 std::cout << "Science, my lad, is made up of mistakes, but they are "
71 << "mistakes which it is useful to make, because they lead little "
72 << "by little to the truth." << std::endl
73 << " - Jules Verne, A journey to the center of the earth" << std::endl;
74 else
75 std::cout << "[We see that] science is eminently perfectible, and that each theory has "
76 << "constantly to give way to a fresh one." << std::endl
77 << " - Jules Verne, Journey to the Center of the Earth" << std::endl;
78
79 break;
80 case 3:
81 if(firstCall)
82 std::cout << "Wherever he saw a hole he always wanted to know the depth of it. "
83 << "To him this was important." << std::endl
84 << " - Jules Verne, A journey to the center of the earth" << std::endl;
85 else
86 std::cout << "We may brave human laws, but we cannot resist natural ones." << std::endl
87 << " - Jules Verne, 20,000 Leagues Under the Sea" << std::endl;
88 break;
89 case 4:
90 if(firstCall)
91 std::cout << "Silence - to delight Bernd." << std::endl;
92 else
93 std::cout << std::endl << std::endl;
94 break;
95 case 5:
96 std::cout << "Don't panic... !" << std::endl;
97 break;
98 case 6:
99 if(firstCall)
100 std::cout << "You idiot! You signed the order to destroy Earth!" << std::endl
101 << " - Douglas Adams, HGttG" << std::endl;
102 else
103 std::cout << "Marvin: I've been talking to the main computer." << std::endl
104 << "Arthur: And?" << std::endl
105 << "Marvin: It hates me." << std::endl
106 << " - Douglas Adams, HGttG" << std::endl;
107 break;
108 case 7:
109 if(firstCall)
110 std::cout << "In the beginning the Universe was created. This has made a lot of "
111 << "people very angry and has been widely regarded as a bad move.!" << std::endl
112 << " - Douglas Adams, HGttG " << std::endl;
113 else
114 std::cout << "Forty-two. I checked it very thoroughly, and that quite definitely is the answer. I think "
115 << "the problem, to be quite honest with you, is that you\'ve never actually known what the question is." << std::endl
116 << " - Douglas Adams, HGttG " << std::endl;
117 break;
118 case 8:
119 std::cout << " ## @@@@ @ @ @ @" << std::endl;
120 std::cout << " ### # @ @ @@ @@ @ " << std::endl;
121 std::cout << " ## # @ @ @ @ @ @ @ @ @ @ @" << std::endl;
122 std::cout << " ## # @ @ @ @ @ @ @ @ " << std::endl;
123 std::cout << " # # @@@@ @@@ @ @ @@@ " << std::endl;
124 std::cout << " # # " << std::endl;
125 std::cout << " # # " << std::endl;
126 std::cout << " # ## %%% " << std::setw(8) << std::right << DUMUX_VERSION << std::endl;
127 std::cout << " # ### % % %% %% " << std::endl;
128 std::cout << "#### #%%% %% %%%%% %%%%%%%%%%%%%%%%%" << std::endl;
129 break;
130 case 9:
131 std::cout << "### # # # # " << std::endl;
132 std::cout << "# # # # ## ## # # # " << std::endl;
133 std::cout << "# # # # # # # # # # # " << std::endl;
134 std::cout << "### ## # # ## " << std::endl;
135 std::cout << " " << std::endl;
136 std::cout << "Dune for Multi-{ Phase, " << std::endl;
137 std::cout << " Component, " << std::endl;
138 std::cout << " Scale, " << std::endl;
139 std::cout << " Physics, " << std::endl;
140 std::cout << " ...} flow and transport in porous media" << std::endl;
141 break;
142 case 10:
143 if(firstCall)
144 std::cout << "Elliot Carver: Mr. Jones, are we ready to release our new software?" << std::endl
145 << "Jones: Yes, sir. As requested, it's full of bugs, which means people will be forced to upgrade for years." << std::endl
146 << " - James Bond, Tomorrow Never Dies" << std::endl;
147 else
148 {
149 std::cout << "Elliot Carver: Outstanding." << std::endl
150 << " - James Bond, Tomorrow Never Dies" << std::endl;
151 }
152 break;
153 case 11:
154 if(firstCall)
155 std::cout << "Chuck Norris has successfully compiled DuMuX." << std::endl;
156 else
157 std::cout << "Chuck Norris has compiled DuMuX even two times in a row!" << std::endl;
158 break;
159 case 12:
160 if (firstCall)
161 {
162 std::cout << " ┌──────────────────┐" << std::endl;
163 std::cout << Fmt::format(" │{:^20}│", Fmt::format("DuMuX {} \u2661", DUMUX_VERSION)) << std::endl;
164 std::cout << " └──────────────────┘" << std::endl;
165 }
166 else
167 std::cout << "\n" << std::endl;
168 break;
169 case 13:
170 if(firstCall)
171 {
172 std::cout << "Everything starts somewhere, though many physicists disagree." << std::endl
173 << " - Terry Pratchett " << std::endl;
174 }
175 else
176 {
177 std::cout << "Opera happens because a large number of things amazingly fail to go wrong." << std::endl
178 << " - Terry Pratchett " << std::endl;
179 }
180 break;
181 case 14:
182 std::cout << "To infinity and beyond." << std::endl
183 << " - Buzz Lightyear, Toy Story" << std::endl;
184 break;
185 case 15:
186 if(firstCall)
187 {
188 std::cout << "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off." << std::endl
189 << " - Bjarne Stroustrup " << std::endl;
190 }
191 else
192 {
193 std::cout << "There's an old story about the person who wished his computer were as easy to use as his telephone." << std::endl
194 << "That wish has come true, since I no longer know how to use my telephone." << std::endl
195 << " - Bjarne Stroustrup " << std::endl;
196 }
197 break;
198 case 16:
199 if(firstCall)
200 {
201 std::cout << "Now, all we need is a little Energon and a lot of luck!" << std::endl
202 << " - Optimus Prime, The Transformers: The Movie " << std::endl;
203 }
204 else
205 {
206 std::cout << "Sometimes even the wisest of men and machines can be in error." << std::endl
207 << " - Optimus Prime, The Transformers: The Movie " << std::endl;
208 }
209 break;
210 case 17:
211 if(firstCall)
212 {
213 std::cout << "Let's go. In and out, 20 minutes adventure." << std::endl
214 << " - Rick Sanchez, Rick & Morty " << std::endl;
215 }
216 else
217 {
218 std::cout << "Losers look stuff up while the rest of us are carpin' all them diems." << std::endl
219 << " - Summer Smith, Rick & Morty" << std::endl;
220 }
221 break;
222 case 18:
223 if(firstCall)
224 {
225 std::cout << "It's the job that's never started as takes longest to finish." << std::endl
226 << " - Sam Gamgee, LotR " << std::endl;
227 }
228 else
229 {
230 std::cout << "He that breaks a thing to find out what it is, has left the path of wisdom." << std::endl
231 << " - Gandalf, LotR " << std::endl;
232 }
233 break;
234 case 19:
235 if(firstCall)
236 {
237 std::cout << "The Ring has awoken, it's heard its master's call." << std::endl
238 << " - Gandalf, LotR " << std::endl;
239 }
240 else
241 {
242 std::cout << "It's a dangerous business, Frodo, going out your door. " << std::endl
243 << "You step onto the road, and if you don't keep your feet, there's no knowing where you might be swept off to." << std::endl
244 << " - Frodo Baggins, LotR " << std::endl;
245 }
246 break;
247 case 20:
248 if(firstCall)
249 {
250 std::cout << "Who knows? Have patience. Go where you must go, and hope!" << std::endl
251 << " - Gandalf, LotR " << std::endl;
252 }
253 else
254 {
255 std::cout << "Don't adventures ever have an end? I suppose not. Someone else always has to carry on the story." << std::endl
256 << " - Bilbo Baggins, LotR " << std::endl;
257 }
258 break;
259 case 21:
260 if(firstCall)
261 {
262 std::cout << "As long as I'm better than everyone else I suppose it doesn't matter." << std::endl
263 << " - Jamie Lannister, GoT" << std::endl;
264 }
265 else
266 {
267 std::cout << "My watch has ended." << std::endl
268 << " - Jon Snow, GoT" << std::endl;
269 }
270 break;
271 case 22:
272 if(firstCall)
273 {
274 std::cout << "You'll find I'm full of surprises." << std::endl
275 << " - Luke Skywalker, Star Wars: The Empire Strikes Back " << std::endl;
276 }
277 else
278 {
279 std::cout << "I find your lack of faith disturbing." << std::endl
280 << " - Darth Vader, Star Wars: A New Hope " << std::endl;
281 }
282 break;
283 case 23:
284 if(firstCall)
285 {
286 std::cout << "Here goes nothing." << std::endl
287 << " - Lando Calrissian, Star Wars: Return of the Jedi" << std::endl;
288 }
289 else
290 {
291 std::cout << "Chewie, we're home." << std::endl
292 << " - Han Solo, Star Wars: The Force Awakens" << std::endl;
293 }
294 break;
295 case 24:
296 if(firstCall)
297 {
298 std::cout << "The Force is strong with this one." << std::endl
299 << " - Darth Vader, Star Wars: A New Hope " << std::endl;
300 }
301 else
302 {
303 std::cout << "In my experience, there's no such thing as luck." << std::endl
304 << " - Obi-Wan Kenobi, Star Wars: A New Hope " << std::endl;
305 }
306 break;
307 case 25:
308 if(firstCall)
309 {
310 std::cout << "The city's central computer told you? R2D2, you know better than to trust a strange computer!" << std::endl
311 << " - C3PO, Star Wars: The Empire Strikes Back " << std::endl;
312 }
313 else
314 {
315 std::cout << "He's quite clever, you know...for a human being." << std::endl
316 << " - C3PO, Star Wars: The Empire Strikes Back " << std::endl;
317 }
318 break;
319 case 26:
320 if(firstCall)
321 {
322 std::cout << "I know some things. I can, you know, do math and stuff." << std::endl
323 << " - Harry Potter " << std::endl;
324 }
325 else
326 {
327 std::cout << "Harry then did something that was both very brave and very stupid." << std::endl
328 << " - Harry Potter and the Sorcerer's Stone " << std::endl;
329 }
330 break;
331 case 27:
332 if(firstCall)
333 {
334 std::cout << "I'll be in my bedroom, making no noise and pretending I'm not there." << std::endl
335 << " - Harry Potter " << std::endl;
336 }
337 else
338 {
339 std::cout << "Honestly, if you were any slower, you'd be going backward." << std::endl
340 << " - Draco Malfoy " << std::endl;
341 }
342 break;
343 case 28:
344 std::cout << "I can do this all day." << std::endl
345 << " - Captain America " << std::endl;
346 break;
347 case 29:
348 if(firstCall)
349 {
350 std::cout << "Your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should." << std::endl
351 << " - Ian Malcolm, Jurassic Park " << std::endl;
352 }
353 else
354 {
355 std::cout << "Boy, do I hate being right all the time." << std::endl
356 << " - Ian Malcolm, Jurassic Park " << std::endl;
357 }
358 break;
359 case 30:
360 if(firstCall)
361 {
362 std::cout << "It's a UNIX System! I know this! "
363 << " - Lex Murphy, Jurassic Park " << std::endl;
364 }
365 else
366 {
367 std::cout << "When you gotta go, you gotta go." << std::endl
368 << " - Ian Malcolm, Jurassic Park " << std::endl;
369 }
370 break;
371 case 31:
372 if(firstCall)
373 {
374 std::cout << "Whatever happens, that's the plan. "
375 << " - Kayla Watts, Jurassic World Dominion " << std::endl;
376 }
377 else
378 {
379 std::cout << "Can we start over?" << std::endl
380 << " - Claire Dearing, Jurassic World Dominion " << std::endl;
381 }
382 break;
383 case 32:
384 if(firstCall)
385 {
386 std::cout << "The code is more what you'd call 'guidelines' than actual rules. "
387 << " - Hector Barbossa, Pirates of the Caribbean " << std::endl;
388 }
389 else
390 {
391 std::cout << "Did everyone see that? Because I will not be doing it again." << std::endl
392 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
393 }
394 break;
395 case 33:
396 if(firstCall)
397 {
398 std::cout << "If you were waiting for the opportune moment, that was it. "
399 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
400 }
401 else
402 {
403 std::cout << "I love those moments. I like to wave at them as they pass by." << std::endl
404 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
405 }
406 break;
407 case 34:
408 std::cout << "And that was without even a single drop of rum." << std::endl
409 << " - Jack Sparrow, Pirates of the Caribbean " << std::endl;
410 break;
411
412 // Note: If you add a case, you have to increase the number of messages (nMessages_ variable).
413
414 default: // silence to delight Bernd
415 return;
416 }
417 std::cout << std::endl;
418 }
419};
420
421} // end namespace Dumux
422
423#endif
DuMux start and end message.
Definition: dumuxmessage.hh:28
static void print(bool firstCall=false)
Selects random messages to write out at the start and end of a simulation run.
Definition: dumuxmessage.hh:38
Formatting based on the fmt-library which implements std::format of C++20.
Definition: adapt.hh:17