LifeV
fsi/testsuite/fsi_segregated/ud_functions.cpp
Go to the documentation of this file.
1 //@HEADER
2 /*
3 *******************************************************************************
4 
5  Copyright (C) 2004, 2005, 2007 EPFL, Politecnico di Milano, INRIA
6  Copyright (C) 2010 EPFL, Politecnico di Milano, Emory University
7 
8  This file is part of LifeV.
9 
10  LifeV is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  LifeV is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with LifeV. If not, see <http://www.gnu.org/licenses/>.
22 
23 *******************************************************************************
24 */
25 //@HEADER
26 
27 /*!
28  @file
29  @brief
30 
31  @author Gilles Fourestey <gilles.fourestey@epfl.ch>
32  @date 00-00-0000
33  */
34 
35 #include "ud_functions.hpp"
36 #define PI 3.141592653589793
37 
38 namespace LifeV
39 {
40 Real f (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
41 {
42  return 0.;
43 }
44 
45 Real u1 (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
46 {
47  return 0.0;
48 }
49 
50 Real fZero (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
51 {
52  return 0.0;
53 }
54 
55 // Initial velocity
56 Real u0 (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
57 {
58  return 0.0;
59 }
60 
61 Real p0 (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
62 {
63  return 0.0;
64 }
65 
66 
67 Real u2 (const Real& t, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& i)
68 {
69  switch (i)
70  {
71  case 0:
72  return 0.0;
73  break;
74  case 1:
75  return 0.0;
76  break;
77  case 2:
78  if ( t <= 0.003 )
79  {
80  return 1.3332e4;
81  }
82  else
83  {
84  return 0.0;
85  }
86  break;
87 
88  }
89  return 0;
90 }
91 
92 Real u2vel (const Real& t, const Real& x, const Real& y, const Real& /*z*/, const ID& i)
93 {
94 
95  switch (i)
96  {
97  case 0:
98  return 0.0;
99  break;
100  case 1:
101  if (t < 0.003)
102  {
103  return 120.0 * ( (0.25 - x * x - y * y) / 0.25 ) * sin (3.14159265 * t / 0.003);
104  }
105  else
106  {
107  return 0.0;
108  }
109  break;
110  case 2:
111  return 0.0;
112  break;
113  }
114  return 0;
115 }
116 
117 
118 Real pressure (const Real& t, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& i)
119 {
120  if ( t <= 0.003 )
121  {
122  return -1.3332e4;
123  }
124  else
125  {
126  return 0.0;
127  }
128 
129 }
130 // Initial displacement and velocity
131 Real d0 (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& i)
132 {
133  switch (i)
134  {
135  case 0:
136  return 0.;
137  break;
138  case 1:
139  return 0.;
140  break;
141  case 2:
142  return 0.;
143  break;
144  default:
145  ERROR_MSG ("This entrie is not allowed: ud_functions.hpp");
146  break;
147  }
148 
149  return 0.;
150 }
151 
152 Real w0 (const Real& /*t*/, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& i)
153 {
154 
155  switch (i)
156  {
157  case 0:
158  return 0.0;
159  break;
160  case 1:
161  return 0.0;
162  break;
163  case 2:
164  return 0.0;
165  break;
166  default:
167  ERROR_MSG ("This entrie is not allowed: ud_functions.hpp");
168  break;
169  }
170 
171  return 0.;
172 }
173 
174 Real PhysFlux (const Real& t, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& /*i*/)
175 {
176  //double coef = 0.001;
177  double plusmoins = -1.;
178 
179  if (t < 0.01)
180  {
181  return -1000.*t;
182  }
183  if (t <= 0.02)
184  {
185  return -10.;
186  }
187  if (t <= 0.03)
188  {
189  return 1000.*t - 30.;
190  }
191  return 0;
192 
193  int numData = 100;
194  double flux[101] = { 0.,
195  0.55312181720914,
196  0.55299302643153,
197  0.55302818124406,
198  0.55317321131557,
199  0.55353364652152,
200  0.55374878962962,
201  0.55406829977313,
202  0.55585881887584,
203  0.55879983633299,
204  0.56387572718194,
205  0.57079488161935,
206  0.58817359652018,
207  0.61511673048210,
208  0.65025652077432,
209  0.79143597227331,
210  1.06959564837144,
211  1.33301653745648,
212  1.55916094914244,
213  1.69807981838757,
214  1.73941326221337,
215  1.69691789994768,
216  1.61546505715344,
217  1.51298277554169,
218  1.35636910481872,
219  1.18958468647846,
220  1.02381943290960,
221  0.89472539111700,
222  0.79994401665900,
223  0.74338513206540,
224  0.72984443940672,
225  0.74311502021666,
226  0.77155202899612,
227  0.80920592343822,
228  0.84528951107944,
229  0.87014986946118,
230  0.89016029509068,
231  0.89999452080415,
232  0.89511807514404,
233  0.87823357219620,
234  0.85663326250089,
235  0.82858260857792,
236  0.79671836139948,
237  0.75291106131325,
238  0.70711033067577,
239  0.65740190152584,
240  0.61066125251620,
241  0.56488426267136,
242  0.51713402331108,
243  0.46453623816504,
244  0.41513731950517,
245  0.47836113912116,
246  0.56452765299777,
247  0.62096051336166,
248  0.66202024502726,
249  0.69173157064612,
250  0.71835003021294,
251  0.74183126309604,
252  0.75295645424862,
253  0.75292455314576,
254  0.74514787317446,
255  0.72467414023271,
256  0.70473486985061,
257  0.68057326827129,
258  0.66194232245132,
259  0.64681425465222,
260  0.63714376881254,
261  0.62991615896879,
262  0.62662699778909,
263  0.62724985397200,
264  0.62674770176751,
265  0.62666043242736,
266  0.62617509524360,
267  0.62556258658310,
268  0.62581913341632,
269  0.62604032520998,
270  0.62582937168093,
271  0.62404471163034,
272  0.61923663804136,
273  0.61378537728592,
274  0.60976137345625,
275  0.60596975158344,
276  0.60144172708524,
277  0.59702451106965,
278  0.59319136754468,
279  0.58982107329344,
280  0.58718879911670,
281  0.58474181066352,
282  0.58208280034445,
283  0.57913818429409,
284  0.57588144074776,
285  0.57289019558638,
286  0.57076133371909,
287  0.56912637026578,
288  0.56776096894206,
289  0.56622327633393,
290  0.56376396210446,
291  0.56132345661888,
292  0.55914786876437,
293  0.55714215894326,
294  0.55457447187998
295  };
296 
297 
298  double timescale = 1. / numData;
299  int ipos = t / timescale;
300 
301  double t2 = timescale * (ipos + 1);
302 
303  double a = (flux[ipos + 1] - flux[ipos]) / timescale;
304  double b = flux[ipos + 1] - a * t2;
305 
306  //double slope = ipos - t;
307 
308  std::cout << "t = " << t << " f = " << t* a + b << " " << ipos << " " << a << " " << b << std::endl;
309 
310 
311  return plusmoins * (t * a + b);
312 }
313 
314 Real aortaPhysPress (const Real& t, const Real& /*x*/, const Real& /*y*/, const Real& /*z*/, const ID& i)
315 {
316  double coef = .1;
317  switch (i)
318  {
319  case 0:
320  return 0.0;
321  break;
322  case 1:
323  return 0.0;
324  break;
325  case 2:
326  if (t <= 0.00)
327  {
328  return 110170 * coef;
329  }
330  if (t <= 0.01)
331  {
332  return 109540 * coef;
333  }
334  if (t <= 0.02)
335  {
336  return 108930 * coef;
337  }
338  if (t <= 0.03)
339  {
340  return 108320 * coef;
341  }
342  if (t <= 0.04)
343  {
344  return 107710 * coef;
345  }
346  if (t <= 0.05)
347  {
348  return 107120 * coef;
349  }
350  if (t <= 0.06)
351  {
352  return 106530 * coef;
353  }
354  if (t <= 0.07)
355  {
356  return 111130 * coef;
357  }
358  if (t <= 0.08)
359  {
360  return 115440 * coef;
361  }
362  if (t <= 0.09)
363  {
364  return 118690 * coef;
365  }
366  if (t <= 0.10)
367  {
368  return 121460 * coef;
369  }
370  if (t <= 0.11)
371  {
372  return 123940 * coef;
373  }
374  if (t <= 0.12)
375  {
376  return 126350 * coef;
377  }
378  if (t <= 0.13)
379  {
380  return 128890 * coef;
381  }
382  if (t <= 0.14)
383  {
384  return 131510 * coef;
385  }
386  if (t <= 0.15)
387  {
388  return 133980 * coef;
389  }
390  if (t <= 0.16)
391  {
392  return 136200 * coef;
393  }
394  if (t <= 0.17)
395  {
396  return 138330 * coef;
397  }
398  if (t <= 0.18)
399  {
400  return 140350 * coef;
401  }
402  if (t <= 0.19)
403  {
404  return 142290 * coef;
405  }
406  if (t <= 0.20)
407  {
408  return 144360 * coef;
409  }
410  if (t <= 0.21)
411  {
412  return 146130 * coef;
413  }
414  if (t <= 0.22)
415  {
416  return 147530 * coef;
417  }
418  if (t <= 0.23)
419  {
420  return 148780 * coef;
421  }
422  if (t <= 0.24)
423  {
424  return 149740 * coef;
425  }
426  if (t <= 0.25)
427  {
428  return 150320 * coef;
429  }
430  if (t <= 0.26)
431  {
432  return 150470 * coef;
433  }
434  if (t <= 0.27)
435  {
436  return 150250 * coef;
437  }
438  if (t <= 0.28)
439  {
440  return 149750 * coef;
441  }
442  if (t <= 0.29)
443  {
444  return 148990 * coef;
445  }
446  if (t <= 0.30)
447  {
448  return 148220 * coef;
449  }
450  if (t <= 0.31)
451  {
452  return 147210 * coef;
453  }
454  if (t <= 0.32)
455  {
456  return 145940 * coef;
457  }
458  if (t <= 0.33)
459  {
460  return 144960 * coef;
461  }
462  if (t <= 0.34)
463  {
464  return 143750 * coef;
465  }
466  if (t <= 0.35)
467  {
468  return 141980 * coef;
469  }
470  if (t <= 0.36)
471  {
472  return 139900 * coef;
473  }
474  if (t <= 0.37)
475  {
476  return 137260 * coef;
477  }
478  if (t <= 0.38)
479  {
480  return 133970 * coef;
481  }
482  if (t <= 0.39)
483  {
484  return 131670 * coef;
485  }
486  if (t <= 0.40)
487  {
488  return 131320 * coef;
489  }
490  if (t <= 0.41)
491  {
492  return 133150 * coef;
493  }
494  if (t <= 0.42)
495  {
496  return 132710 * coef;
497  }
498  if (t <= 0.43)
499  {
500  return 131570 * coef;
501  }
502  if (t <= 0.44)
503  {
504  return 130280 * coef;
505  }
506  if (t <= 0.45)
507  {
508  return 129750 * coef;
509  }
510  if (t <= 0.46)
511  {
512  return 129330 * coef;
513  }
514  if (t <= 0.47)
515  {
516  return 128910 * coef;
517  }
518  if (t <= 0.48)
519  {
520  return 128360 * coef;
521  }
522  if (t <= 0.49)
523  {
524  return 127680 * coef;
525  }
526  if (t <= 0.50)
527  {
528  return 127000 * coef;
529  }
530  if (t <= 0.51)
531  {
532  return 126410 * coef;
533  }
534  if (t <= 0.52)
535  {
536  return 125920 * coef;
537  }
538  if (t <= 0.53)
539  {
540  return 125480 * coef;
541  }
542  if (t <= 0.54)
543  {
544  return 125040 * coef;
545  }
546  if (t <= 0.55)
547  {
548  return 124560 * coef;
549  }
550  if (t <= 0.56)
551  {
552  return 124050 * coef;
553  }
554  if (t <= 0.57)
555  {
556  return 123530 * coef;
557  }
558  if (t <= 0.58)
559  {
560  return 123000 * coef;
561  }
562  if (t <= 0.59)
563  {
564  return 122440 * coef;
565  }
566  if (t <= 0.60)
567  {
568  return 121840 * coef;
569  }
570  if (t <= 0.61)
571  {
572  return 121220 * coef;
573  }
574  if (t <= 0.62)
575  {
576  return 120580 * coef;
577  }
578  if (t <= 0.63)
579  {
580  return 119950 * coef;
581  }
582  if (t <= 0.64)
583  {
584  return 119330 * coef;
585  }
586  if (t <= 0.65)
587  {
588  return 118710 * coef;
589  }
590  if (t <= 0.66)
591  {
592  return 118100 * coef;
593  }
594  if (t <= 0.67)
595  {
596  return 117470 * coef;
597  }
598  if (t <= 0.68)
599  {
600  return 116840 * coef;
601  }
602  if (t <= 0.69)
603  {
604  return 116200 * coef;
605  }
606  if (t <= 0.70)
607  {
608  return 115560 * coef;
609  }
610  if (t <= 0.71)
611  {
612  return 114920 * coef;
613  }
614  if (t <= 0.72)
615  {
616  return 114280 * coef;
617  }
618  if (t <= 0.73)
619  {
620  return 113650 * coef;
621  }
622  if (t <= 0.74)
623  {
624  return 113020 * coef;
625  }
626  if (t <= 0.75)
627  {
628  return 112400 * coef;
629  }
630  if (t <= 0.76)
631  {
632  return 111790 * coef;
633  }
634  if (t <= 0.77)
635  {
636  return 111200 * coef;
637  }
638  if (t <= 0.78)
639  {
640  return 110620 * coef;
641  }
642  if (t <= 0.79)
643  {
644  return 110060 * coef;
645  }
646  break;
647  }
648 
649  return 0.;
650 }
651 
652 
653 }
Real fZero(const Real &, const Real &, const Real &, const Real &, const ID &)
Real d0(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
Real p0(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
void updateInverseJacobian(const UInt &iQuadPt)
Real w0(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
#define ERROR_MSG(A)
Definition: LifeAssert.hpp:69
uint32_type ID
IDs.
Definition: LifeV.hpp:194
Real f(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
double Real
Generic real data.
Definition: LifeV.hpp:175
Real u1(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
Real u0(const Real &t, const Real &x, const Real &y, const Real &z, const ID &i)
Real u2(const Real &t, const Real &, const Real &, const Real &, const ID &i)
Definition: cylinder.cpp:81