|
93 | 93 |
|
94 | 94 | MODULE PROCEDURE obj_InitiateNodetoNodes
|
95 | 95 | CHARACTER(*), PARAMETER :: myName = "obj_InitiateNodetoNodes()"
|
96 |
| -INTEGER(I4B) :: iel, ii, jj, kk, ll, nodewise_size(obj%tNodes), tnode |
97 |
| -TYPE(CPUTime_) :: TypeCPUTime |
| 96 | +INTEGER(I4B) :: inode, nodewise_size, telem, iel, global_elem_num, & |
| 97 | + & local_elem_num, tnode, ii, global_node_num, local_node_num |
98 | 98 | INTEGER(I4B), PARAMETER :: chunk_size = 64
|
99 |
| -LOGICAL(LGT) :: found(obj%tNodes) |
| 99 | +LOGICAL(LGT) :: found(obj%tNodes), skip |
100 | 100 | INTEGER(I4B) :: temp(128 * 2)
|
| 101 | +TYPE(CPUTime_) :: TypeCPUTime |
101 | 102 |
|
102 | 103 | #ifdef DEBUG_VER
|
103 | 104 | CALL e%RaiseInformation(modName//'::'//myName//' - '// &
|
|
115 | 116 | IF (obj%showTime) CALL TypeCPUTime%SetStartTime()
|
116 | 117 |
|
117 | 118 | obj%isNodeToNodesInitiated = .TRUE.
|
118 |
| -found = .FALSE. |
119 |
| - |
120 |
| -DO iel = 1, obj%tElements |
121 |
| - tnode = SIZE(obj%elementData(iel)%globalNodes) |
122 | 119 |
|
123 |
| - !! globalNodes |
124 |
| - temp(1:tnode) = obj%elementData(iel)%globalNodes |
125 |
| - !! localNodes |
126 |
| - temp(tnode + 1:2 * tnode) = & |
127 |
| - & obj%local_nptrs(obj%elementData(iel)%globalNodes) |
| 120 | +DO inode = 1, obj%tNodes |
| 121 | + nodewise_size = 0 |
| 122 | + found = .FALSE. |
| 123 | + telem = SIZE(obj%nodeData(inode)%globalElements) |
128 | 124 |
|
129 |
| - DO ii = 1, tnode |
130 |
| - kk = temp(tnode + ii) |
131 |
| - DO jj = ii + 1, tnode |
| 125 | + DO iel = 1, telem |
| 126 | + global_elem_num = obj%nodeData(inode)%globalElements(iel) |
| 127 | + local_elem_num = obj%GetLocalElemNumber(global_elem_num) |
132 | 128 |
|
133 |
| - ll = temp(tnode + jj) |
| 129 | + tnode = SIZE(obj%elementData(local_elem_num)%globalNodes) |
| 130 | + DO ii = 1, tnode |
134 | 131 |
|
135 |
| - IF (found(kk)) THEN |
| 132 | + global_node_num = obj%elementData(local_elem_num)%globalNodes(ii) |
| 133 | + local_node_num = obj%GetLocalNodeNumber(global_node_num) |
136 | 134 |
|
137 |
| - IF (.NOT. found(ll)) THEN |
138 |
| - CALL Expand(vec=obj%nodeData(kk)%globalNodes, & |
139 |
| - & n=nodewise_size(kk), chunk_size=chunk_size, & |
140 |
| - & val=temp(jj)) |
141 |
| - END IF |
142 |
| - |
143 |
| - ELSE |
144 |
| - CALL Expand(vec=obj%nodeData(kk)%globalNodes, & |
145 |
| - & n=nodewise_size(kk), chunk_size=chunk_size, & |
146 |
| - & val=temp(jj)) |
147 |
| - found(kk) = .TRUE. |
| 135 | + skip = found(local_node_num) .OR. (inode .EQ. local_node_num) |
| 136 | + IF (.NOT. skip) THEN |
| 137 | + CALL Expand(vec=obj%nodeData(inode)%globalNodes, & |
| 138 | + & n=nodewise_size, chunk_size=chunk_size, & |
| 139 | + & val=global_node_num) |
| 140 | + found(local_node_num) = .TRUE. |
148 | 141 | END IF
|
149 | 142 |
|
150 |
| - IF (found(ll)) THEN |
151 |
| - |
152 |
| - IF (.NOT. found(kk)) THEN |
153 |
| - CALL Expand(vec=obj%nodeData(ll)%globalNodes, & |
154 |
| - & n=nodewise_size(ll), chunk_size=chunk_size, & |
155 |
| - & val=temp(ii)) |
156 |
| - END IF |
157 |
| - |
158 |
| - found(ll) = .TRUE. |
159 |
| - |
160 |
| - ELSE |
161 |
| - CALL Expand(vec=obj%nodeData(ll)%globalNodes, & |
162 |
| - & n=nodewise_size(ll), chunk_size=chunk_size, & |
163 |
| - & val=temp(ii)) |
164 |
| - END IF |
165 | 143 | END DO
|
166 | 144 |
|
167 | 145 | END DO
|
168 | 146 |
|
169 |
| -END DO |
170 |
| - |
171 |
| -DO ii = 1, obj%tNodes |
172 |
| - CALL Expand(vec=obj%nodeData(ii)%globalNodes, & |
173 |
| - & n=nodewise_size(ii), chunk_size=chunk_size, & |
| 147 | + CALL Expand(vec=obj%nodeData(inode)%globalNodes, & |
| 148 | + & n=nodewise_size, chunk_size=chunk_size, & |
174 | 149 | & finished=.TRUE.)
|
| 150 | + |
175 | 151 | END DO
|
176 | 152 |
|
177 | 153 | IF (obj%showTime) THEN
|
|
0 commit comments