SPEED
GET_DIME_ABC.f90 File Reference

Go to the source code of this file.

Functions/Subroutines

subroutine get_dime_abc (nm, sd, tag_mat, cs_nnz_loc, cs_loc, nn_loc, local_n_num, nel_abc, i4count)
 Computes local number of quads where ABC conditions are imposed.
 

Function/Subroutine Documentation

◆ get_dime_abc()

subroutine get_dime_abc (   nm,
dimension(nm)  sd,
dimension(nm)  tag_mat,
  cs_nnz_loc,
dimension(nm)  cs_loc,
  nn_loc,
dimension(nm)  local_n_num,
  nel_abc,
dimension(nm)  i4count 
)

Computes local number of quads where ABC conditions are imposed.

Author
Ilario Mazzieri
Date
September, 2013
Version
1.0
Parameters
[in]nmnumber of materials
[in]sdploynomial degree vector
[in]tag_matlabels for material vector
[in]cs_nnz_loclength of cs_loc
[in]cs_loclocalconnectivity vector
[in]nn_locnumber of local nodes
[in]local_n_numlocal node numeration vector
[in]i4counti4count(i) equal to 1 means that the i-th local node belongs
[out]nel_abllocal number of abc surface

Definition at line 34 of file GET_DIME_ABC.f90.

50
51 do im = 1,nm
52
53 nn = sd(im) +1
54
55 do ie = 1,ned
56
57 if (cs_loc(cs_loc(ie -1) + 0) .eq. tag_mat(im)) then
58
59 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
60 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
61 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
62 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
63
64 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
65 nel_abc = nel_abc +1
66 endif
67
68 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
69 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
70 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
71 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
72
73 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
74 nel_abc = nel_abc +1
75 endif
76
77 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(1 -1) +1)
78 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
79 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
80 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
81
82 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
83 nel_abc = nel_abc +1
84 endif
85
86 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(1 -1) +(nn -1) +1)
87 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
88 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
89 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
90
91 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
92 nel_abc = nel_abc +1
93 endif
94
95 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(1 -1) +1)
96 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(1 -1) +nn*(nn -1) +(nn -1) +1)
97 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
98 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
99
100 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
101 nel_abc = nel_abc +1
102 endif
103
104 ne1 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(1 -1) +1)
105 ne2 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(1 -1) +(nn -1) +1)
106 ne3 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(nn -1) +1)
107 ne4 = cs_loc(cs_loc(ie -1) +nn*nn*(nn -1) +nn*(nn -1) +(1 -1) +1)
108
109 if ((i4count(ne1).ne.0) .and. (i4count(ne2).ne.0) .and. (i4count(ne3).ne.0) .and. (i4count(ne4).ne.0)) then
110 nel_abc = nel_abc +1
111 endif
112
113 endif
114 enddo
115 enddo
116
117 return
118