⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pan2d_lin.f90

📁 国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码
💻 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 + -