Autor
|
Thema: IF-Else in die BC? (1854 mal gelesen)
|
alex3262 Mitglied Student
Beiträge: 12 Registriert: 15.01.2013
|
erstellt am: 31. Jan. 2013 15:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, kann man in den Randbedingungen eine IF-Else Funktion einbauen? Also z.B. bei U als Randbedingung: if (a<b) { …} else { …} Kann mir jemand eine Quelle empfehlen oder hat Erfahrungen damit? Lieben Gruß, Alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 31. Jan. 2013 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für alex3262
Hi, ja das geht!
Code:
fractionExpression "(U > 0) ? 0 : 1";
Die Randbedingung nennt sich groovyBC und muss zusätzlich zur Toolbox kompiliert werden! Such einfach nach groovyBC Grüße Tobi ------------------ Grüße Tobias H. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alex3262 Mitglied Student
Beiträge: 12 Registriert: 15.01.2013
|
erstellt am: 01. Feb. 2013 10:05 <-- editieren / zitieren --> Unities abgeben:
Hallo, vielen Dank für die schnelle Antwort. Ich hab mich nun durch OpenFoam Wiki und CFD-Online.com gearbeitet. Leider verstehe ich noch nicht die Funktionsweise. Kann mir jemand das Beispiel von OpenFoam Wiki erklären? outlet { type groovyBC; valueExpression "vector(0,0,0)"; gradientExpression "vector(0,0,0)"; fractionExpression "(phi > 0) ? 0 : 1"; value uniform (0 0 0); } Ich habe bereits Erfahrungen mit GroovyBC gesammelt.
Lieben Gruß, Alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 01. Feb. 2013 10:20 <-- editieren / zitieren --> Unities abgeben: Nur für alex3262
Beispiel: du hast nen Inlet - nehmen wir an 10 cm hoch. Davon willst du aber nur von der Mittellinie ein cm oben und unten irgendwas machen --> sieht so aus: {code] ----- | | | | | | | | | ----- inlet [/code] ----- | | | |----> value = 1 |----> value = 1 | | | ----- inlet [/code] Code:
inlet { type groovyBC; value $internalField; valueExpression "pos().y>0.099 ? (pos().y < 0.101 ? 1 : 0) : 0"; valiables ""; }
Das heißt von der y-position 0.099 - 0.101 setzte den Wert auf 1 ansonsten auf 0. ------------------ Grüße Tobias H. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alex3262 Mitglied Student
Beiträge: 12 Registriert: 15.01.2013
|
erstellt am: 01. Feb. 2013 10:48 <-- editieren / zitieren --> Unities abgeben:
|
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 01. Feb. 2013 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für alex3262
|
alex3262 Mitglied Student
Beiträge: 12 Registriert: 15.01.2013
|
erstellt am: 01. Feb. 2013 11:01 <-- editieren / zitieren --> Unities abgeben:
Ich versuche gerade für meine Bachelorarbeit einen Wirbel zu erstellen. Code: INLET { type groovyBC; variables ( "c=vector(0,0,0.5);" "zp=pos().z-c.z;" "yp=pos().y-c.y;" "r=sqrt(pow(zp,2)+pow(yp,2));" "n=838;" "U_ax=1.222;" "theta=asin(yp/r);" "thetaa=acos(zp/r);" "omeg=2*pi*n;" "U_tz=omeg*r*sin(theta);" "U_ty=omeg*r*cos(thetaa);" ); valueExpression "r<0.3 ? (vector ( U_ax,- U_ty, U_tz )) : (vector ( U_ax,0, 0 ))";
Der Wirbel im Inlet ist nun fertig.Mein Problem zurzeit ist es, wie bleibt der Wirbel bestehen? Leider löst der Wirbel sich zu schnell auf. [Diese Nachricht wurde von alex3262 am 01. Feb. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
Beiträge: 2463 Registriert: 27.08.2010 OpenFOAM-dev (Foundation) OpenFOAM-xxxx (ESI)
|
erstellt am: 01. Feb. 2013 11:09 <-- editieren / zitieren --> Unities abgeben: Nur für alex3262
|
alex3262 Mitglied Student
Beiträge: 12 Registriert: 15.01.2013
|
erstellt am: 01. Feb. 2013 11:16 <-- editieren / zitieren --> Unities abgeben:
|