149 subroutine coord_conv( x, y, xr, xs, yr, ys, &
154 real(rp),
intent(out) :: x(elem%np), y(elem%np)
155 real(rp),
intent(out) :: xr(elem%np), xs(elem%np), yr(elem%np), ys(elem%np)
156 real(rp),
intent(in) :: vx(elem%nv), vy(elem%nv)
157 end subroutine coord_conv
158 subroutine calc_normal( normal_fn, &
159 Escale_f, fid, elem )
163 real(rp),
intent(out) :: normal_fn(elem%nfptot,2)
164 integer,
intent(in) :: fid(elem%nfp,elem%nfaces)
165 real(rp),
intent(in) :: escale_f(elem%nfptot,2,2)
166 end subroutine calc_normal
174 integer :: node_ids(lcmesh%refelem%nv)
175 real(rp) :: vx(lcmesh%refelem%nv), vy(lcmesh%refelem%nv)
176 real(rp) :: xr(lcmesh%refelem%np), xs(lcmesh%refelem%np)
177 real(rp) :: yr(lcmesh%refelem%np), ys(lcmesh%refelem%np)
178 integer :: fmask(lcmesh%refelem%nfptot)
179 integer :: fid(lcmesh%refelem2d%nfp,lcmesh%refelem2d%nfaces)
180 real(rp) :: escale_f(lcmesh%refelem%nfptot,2,2)
184 refelem => lcmesh%refElem2D
188 allocate( lcmesh%G_ij(refelem%Np,lcmesh%Ne,2,2) )
189 allocate( lcmesh%GIJ (refelem%Np,lcmesh%Ne,2,2) )
190 allocate( lcmesh%lon(refelem%Np,lcmesh%Ne) )
191 allocate( lcmesh%lat(refelem%Np,lcmesh%Ne) )
194 fmask(:) = reshape(refelem%Fmask, shape(fmask))
195 do f=1, refelem%Nfaces
197 fid(i,f) = i + (f-1)*refelem%Nfp
202 node_ids(:) = lcmesh%EToV(ke,:)
203 vx(:) = lcmesh%pos_ev(node_ids(:),1)
204 vy(:) = lcmesh%pos_ev(node_ids(:),2)
206 lcmesh%pos_en(:,ke,1), lcmesh%pos_en(:,ke,2), xr, xs, yr, ys, &
209 lcmesh%J(:,ke) = - xs*yr + xr*ys
211 lcmesh%Escale(:,ke,1,1) = ys/lcmesh%J(:,ke)
212 lcmesh%Escale(:,ke,1,2) = - xs/lcmesh%J(:,ke)
213 lcmesh%Escale(:,ke,2,1) = - yr/lcmesh%J(:,ke)
214 lcmesh%Escale(:,ke,2,2) = xr/lcmesh%J(:,ke)
225 escale_f(:,i,j) = lcmesh%Escale(fmask(:),ke,i,j)
229 call calc_normal( lcmesh%normal_fn(:,ke,:), &
230 escale_f, fid, refelem )
232 lcmesh%sJ(:,ke) = sqrt( lcmesh%normal_fn(:,ke,1)**2 + lcmesh%normal_fn(:,ke,2)**2 )
234 lcmesh%normal_fn(:,ke,d) = lcmesh%normal_fn(:,ke,d)/lcmesh%sJ(:,ke)
236 lcmesh%sJ(:,ke) = lcmesh%sJ(:,ke)*lcmesh%J(fmask(:),ke)
238 lcmesh%Fscale(:,ke) = lcmesh%sJ(:,ke)/lcmesh%J(fmask(:),ke)
244 lcmesh%Gsqrt (:,:) = 1.0_rp
245 lcmesh%GIJ (:,:,1,1) = 1.0_rp
246 lcmesh%GIJ (:,:,2,1) = 0.0_rp
247 lcmesh%GIJ (:,:,1,2) = 0.0_rp
248 lcmesh%GIJ (:,:,2,2) = 1.0_rp
249 lcmesh%G_ij (:,:,1,1) = 1.0_rp
250 lcmesh%G_ij (:,:,2,1) = 0.0_rp
251 lcmesh%G_ij (:,:,1,2) = 0.0_rp
252 lcmesh%G_ij (:,:,2,2) = 1.0_rp