fillmat_sing_effects.f90

来自「国外大名顶顶的“台风”并行计算流体力学CFD软件的早期版本的源代码」· F90 代码 · 共 89 行

F90
89
字号
!------------------------------------------------------------------------------!! Procedure : fillmat_sing_effects        Auteur : J. Gressier!                                         Date   : Mars 2004! Fonction                                Modif  : (cf historique)!   Remplissage de la matrice des coefficients d'effets des singularites!! Defauts/Limitations/Divers :!!------------------------------------------------------------------------------!subroutine fillmat_sing_effects(mat, size, ideb, grid, defsolver)use TYPHMAKEuse OUTPUTuse VARCOMuse MGRIDuse MENU_SOLVERuse PAN2D_LINimplicit none! -- Declaration des entrees --integer                         :: size, idebtype(st_grid)                   :: gridtype(mnu_solver)                :: defsolver! -- Declaration des sorties --real(krp), dimension(size,size) :: mat! -- Declaration des variables internes --integer                :: ib, if, nf, ifg, iv1, iv2, irhstype(st_grid), pointer :: pgridtype(st_face)          :: face, panereal(krp)              :: c1, c2type(v3d)              :: x1, x2! -- Debut de la procedure --! si remplissage par ligne   : effet de toutes les singularites en un point fixe! si remplissage par colonne : effet d'une seule singularite en chaque pt (centre)! (test d'efficacite CPU max ?)!print*,'mat fillmat', real(mat,4)! -- remplissage par ligne --do ifg = 1, grid%umesh%nface    ! boucle sur les faces de la grille locale  ! ecriture de la condition limite V.n = 0  face = grid%umesh%mesh%iface(ifg, 1, 1)  irhs = 1  !print*,'fillmat0:',face%centre, face%normale  do ib = 1, defsolver%nboco  ! boucle sur boco / rech. de cond. singularites    if (defsolver%boco(ib)%typ_calc == bc_calc_singpanel) then          !print*,'boco',ib, ifg, ideb, irhs      pgrid => defsolver%boco(ib)%boco_vortex%pgrid      !! DEV : memorisation de l'indice dans la structure boco_vortex      nf = pgrid%umesh%nface      do if = 1, nf   ! boucle sur tous les panneaux singularites        !pane = pgrid%umesh%mesh%iface(if, 1, 1)        iv1  = pgrid%umesh%facevtex%fils(if,1)        iv2  = pgrid%umesh%facevtex%fils(if,2)        x1   = pgrid%umesh%mesh%vertex(iv1, 1, 1)        x2   = pgrid%umesh%mesh%vertex(iv2, 1, 1)        call coef_induc_pvortlin2d(face%centre-.00001_krp*face%normale, face%normale, x1, x2, c1, c2)        !print*,'fillmat1:',iv1, iv2, real( (/c1, c2/), 4)        !print*,'fillmat2:',real( (/x1%x, x1%y, x2%x, x2%y /), 4)        mat(ideb+ifg-1, irhs-1+iv1) = mat(ideb+ifg-1, irhs-1+iv1) + c1        mat(ideb+ifg-1, irhs-1+iv2) = mat(ideb+ifg-1, irhs-1+iv2) + c2      enddo       irhs = irhs + nf+1    endif  enddoenddo!-----------------------------endsubroutine fillmat_sing_effects!------------------------------------------------------------------------------!! Historique des modifications!! mars 2004 : creation de la procedure!------------------------------------------------------------------------------!

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?