Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałLuiza Ryszka Został zmieniony 11 lat temu
1
Reguła pojedynczej nieregularności siatki: Element skończony może zostać złamany tylko raz bez konieczności złamania sąsiadującego dużego elementu. REGUŁY REGULARNOŚCI SIATKI
2
Optymalny stopień aproksymacji wielomianowej wybierany jest dla wnętrz elementów (w kierunku poziomym i pionowym) Stopnie aproksymacji na krawędziach wybrane są zgodnie z reguła minimum: Stopień aproksymacji wielomianowej na krawędziach elementów równy jest minimum odpowiednich stopni aproksymacji z wnętrz sąsiadujących elementów
3
H ADAPTACJA ELEMENTU: TWORZONE SĄ DRZEWA ADAPTACJA DLA KRAWĘDZI I WNĘTRZ ELEMENTÓW Podczas h adaptacji – łamania elementu – tworzone są drzewa adaptacji
4
Łamanie krawędzi (h adaptacja krawędzi) Łamanie wnętrza (h adaptacja wnętrza) H ADAPTACJA ELEMENTU: TWORZONE SĄ DRZEWA ADAPTACJA DLA KRAWĘDZI I WNĘTRZ ELEMENTÓW
5
type(element), allocatable :: ELEMS(:) type(vertex), allocatable :: NVERS(:) type(node), allocatable :: NODES(:) type element character(len=5) :: type integer :: nodes(9) integer :: orient integer :: neig(4) integer :: bcond integer :: geom_interf endtype element STRUKTURA DANYCH (KOD HP2D W FORTRANIE) type vertex integer :: bcond integer :: father integer :: geom_interf double precision, dimension(NDIMEN) :: coord double precision, dimension(MAXEQNS) :: zdofs endtype vertex type node character(len=4) :: type integer :: order integer :: bcond integer :: ref_kind integer, dimension(:), pointer :: sons integer :: isotropy_flag integer :: father integer :: geom_interf integer :: connect double precision, dimension(:,:), pointer :: coord double precision, dimension(:,:), pointer :: zdofs double precision, dimension(:,:), pointer :: zdofE endtype node
6
STRUKTURA DANYCH (KOD HP2D W FORTRANIE) type element Typ elementu type = quadr (prostokąt) lub trian (trójkąt) character(len=5) :: type 9 węzłów elementu – 4 wierzchołki (VERTS) 4 krawędzie (NODES) i środek (NODES) 4--7--3 | | integer :: nodes(9) 8 9 6 | | 1---5--2 Orientacja elementu (0 lub 1) – nie używana integer :: orient Indeksy z tablicy ELEMS 4 sąsiednich elementów integer :: neig(4) Zakodowane warunki brzegowe 1 Dirichlet, 2 Neumann, 3 Cauchy *--b--* | integer :: bcond a c | *--d--* integer :: geom_interf (używane do odwzorowania geometrii) endtype element
7
STRUKTURA DANYCH (KOD HP2D W FORTRANIE) type vertex Warunek brzegowy w wierzchołku (Jak w elemencie) integer :: bcond Jeśl father<0 to abs(father) = indeks elementu siatki początkowej (z ELEMS) posiadający ten wierzchołek father >0 indeks węzła ojca z tablicy NODES integer :: father integer :: geom_interf (używane do odwzorowania geometrii) współrzędne geometryczne wierzchołka (X,Y) lub (X,Y,Z) double precision, dimension(NDIMEN) :: coord stopnie swobody (współczynniki wielomianów pierwszego stopnia użyte do aproksymacji na wierzchołkach) (jest ich tyle ile mamy równań MAXEQNS) #if C_MODE (C_MODE=1 gdy nasz problem jest zespolony) complex*16, dimension(MAXEQNS) :: zdofs #else double precision, dimension(MAXEQNS) :: zdofs #endif endtype vertex
8
type node typ węzła : medg = krawędź, mdlq – środek character(len=4) :: type stopień aproksymacji w węźle (ilość wielomianów) integer :: order warunek brzegowy w węźle (jak w elemencie) integer :: bcond pola ref_kind or sons opisuje sposób złamania węzła ref_kind = 0 to węzeł nie jest złamany Jeśli type=medg (krawędź) to ref_kind = 1 oznacza złamaną krawędź, sons(1:3) to *--1--3--2--* KRAWEDZ, KRAWEDZ, WIERZCHOLEK Jeśli type=mdlq (środek, wnętrze) to ref_kind = 1 oznacza złamanie wnętrza w kierunku poziomym sons(1:3) to *--1--3--2--* WNETRZE, WNETRZE, KRAWEDZ ref_kind = 10 oznacza złamanie wnętrza w kierunku pionowym sons(1:3) TO *--1--3--2--* WNETRZE, WNETRZE, KRAWEDZ ref_kind = 11 oznacza złamanie wnętrza w obu kierunkach, sons(1:9) integer :: ref_kind *-----* integer, dimension(:), pointer :: sons | 473 | 1,2,3,4 TO WNETRZA |-896-| 5,6,7,8 TO KRAWEDZIE | 152 | 9 TO WIERZCHOLEK *-----* …..
9
STRUKTURA DANYCH (KOD HP2D W FORTRANIE) c.d. type node (czy element posiada anioztropię – preferencje do łamania w jakimś kierunku) integer :: isotropy_flag Jeśl father<0 to abs(father) = indeks elementu siatki początkowej (z ELEMS) posiadający ten węzeł father >0 indeks węzła ojca z tablicy NODES integer :: father integer :: geom_interf (używane do odwzorowania geometrii) integer :: connect (nie używane) to nie są współrzędne geometryczne środka krawędzi, to jest używane gdy krawędź jest krzywoliniowa – to są geometryczne stopnie swobody – współczynniki wielomianów na krawędzi używanych do opisania jej geometrii) double precision, dimension(:,:), pointer :: coord stopnie swobody – współczynniki wielomianów użyte do aproksymacji na węźle jest ich tyle ile mamy równań oraz jaki mamy stopień aproksymacji #if C_MODE (C_MODE=1 gdy nasz problem jest zespolony) complex*16, dimension(:,:), pointer :: zdofs #else double precision, dimension(:,:), pointer :: zdofs #endif endtype node
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.