📄 pan2d_lin.f90
字号:
!------------------------------------------------------------------------------!! MODULE : PAN2D_LIN Auteur : J. Gressier! Date : Fevrier 2004! Fonction Modif : (cf historique)! Bibliotheque de procedures et fonctions pour le calcul! de distribution LINEAIRE de singularite sur PANNEAU 2D!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!module PAN2D_LINuse TYPHMAKE ! declaration des precisionsuse GEO2D ! module de gestion de vecteurs 2Duse GEO3Duse VORTEX2D! -- DECLARATIONS -----------------------------------------------------------! -- types de singularites sur les panneaux --integer, parameter :: sng_vortexlin = 10 ! repartition lineaire de vorticite! -- types --type pan2dlin type(v2d) :: center, normal real(krp) :: intensityendtype! -- INTERFACES -------------------------------------------------------------interface vel_induced! module procedure vel_induc_p2d_linendinterface! -- Fonctions et Operateurs ------------------------------------------------! -- IMPLEMENTATION ---------------------------------------------------------contains!------------------------------------------------------------------------------!! Fonction : vel_induc_pvortlin2d! !! DEV !! vecteur 3D a modeliser en 2D + test CPU!------------------------------------------------------------------------------!type(v3d) function vel_induc_pvortlin2d(x, x1, x2, g1, g2)implicit nonetype(v3d) :: x ! position de l'evaluationtype(v3d) :: x1, x2 ! positions des sommets du panneau et normalereal(krp) :: g1, g2 ! intensite de vortex aux extremites du panneau! internestype(v3d) :: r1, r2, dxtype(v2d) :: dp, vireal(krp) :: dth, af, d1, d2, dl, dgdl, lndr, up, vp ! preparation du calcul r1 = x - x1 r2 = x - x2 dx = x2 - x1 dth = atan2(r2%y*r1%x-r2%x*r1%y, r1%x*r2%x+r1%y*r2%y) af = atan2(dx%y, dx%x) d1 = abs(r1) d2 = abs(r2) dl = xcomp(rot(v2d(dx%x, dx%y), -af)) !print*,'test dl:',dl, abs(dx) !dl = abs(dx) dp = rot(v2d(r1%x, r1%y), -af) dgdl = (g2 - g1) / dl lndr = log(d2/d1) !print*,'vel_induc:',real((/g1,dgdl,dp%x,dth/),4) ! vitesse induite dans le repere de la face (panneau) vi%x = -i2pi*(dp%y*dgdl*lndr + (g1 + dgdl*dp%x)*dth) vi%y = -i2pi*((g1+dgdl*dp%x)*lndr + g2-g1 - dp%y*dgdl*dth) ! rotation du vecteur vitesse induit dans le plan d'origine vel_induc_pvortlin2d = v3d_of(rot(vi, af))endfunction vel_induc_pvortlin2d!------------------------------------------------------------------------------!! Procedure : coef_induc_pvortlin2d! Calcul des coefficients d'effets des singularites sur la vitesse normale V.n! !! DEV !! vecteur 3D a modeliser en 2D + test CPU!------------------------------------------------------------------------------!subroutine coef_induc_pvortlin2d(x, n, x1, x2, c1, c2)implicit nonetype(v3d) :: x, n ! position de l'evaluation et normaletype(v3d) :: x1, x2 ! positions des sommets du panneau et normalereal(krp) :: c1, c2 ! coefficients d'effets des singularites! internestype(v3d) :: r1, r2, dxtype(v2d) :: dp, vireal(krp) :: dth, af, d1, d2, dl, dgdl, lndr, up, vp ! preparation du calcul r1 = x - x1 r2 = x - x2 dx = x2 - x1 dth = atan2(r2%y*r1%x-r2%x*r1%y, r1%x*r2%x+r1%y*r2%y) af = atan2(dx%y, dx%x) d1 = abs(r1) d2 = abs(r2) dl = xcomp(rot(v2d(dx%x, dx%y), -af)) !dl = abs(dx) dp = rot(v2d(r1%x, r1%y), -af) lndr = log(d2/d1) ! vitesse induite dans le repere de la face (panneau) par g1 unitaire vi%x = -i2pi*(-dp%y/dl*lndr + (1._krp - dp%x/dl)*dth) vi%y = -i2pi*((1._krp - dp%x/dl)*lndr -1._krp + dp%y/dl*dth) ! coefficient c1 : vitesse normale induite par g1 unitaire c1 = v3d_of(rot(vi, af)).scal.n ! vitesse induite dans le repere de la face (panneau) par g2 unitaire vi%x = -i2pi*(dp%y/dl*lndr + dp%x/dl*dth) vi%y = -i2pi*(dp%x/dl*lndr + 1._krp - dp%y/dl*dth) ! coefficient c2 : vitesse normale induite par g2 unitaire c2 = v3d_of(rot(vi, af)).scal.nendsubroutine coef_induc_pvortlin2dendmodule PAN2D_LIN!------------------------------------------------------------------------------!! Historique des modifications!! fev 2004 : creation du module (vel + coef induits par panneau vortex lineaire)! avr 2004 : correction et validation des procedures!------------------------------------------------------------------------------!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -