Working with Ampere's law

This commit is contained in:
Jorge Gonzalez 2026-05-05 10:36:12 +02:00
commit 5184caeee5

View file

@ -383,7 +383,6 @@ submodule(moduleMesh) boundaryEM
! TODO: Make an input parameter ! TODO: Make an input parameter
every = 10 every = 10
select type(self) select type(self)
type is(boundaryEMFreeCurrent) type is(boundaryEMFreeCurrent)
self%counter = self%counter + 1 self%counter = self%counter + 1
@ -407,24 +406,24 @@ submodule(moduleMesh) boundaryEM
! Density is reescaled as 'den' has no data about the node volume ! Density is reescaled as 'den' has no data about the node volume
mom_nodes(n) = - dot_product(node%output(s)%mom, edge%normal)/(node%v*Vol_ref*n_ref) mom_nodes(n) = - dot_product(node%output(s)%mom, edge%normal)/(node%v*Vol_ref*n_ref)
! Avoid the contribution of returning particles close to the edge ! Avoid the contribution of returning particles close to the edge
if (mom_nodes(n) < 0.0d0) then ! if (mom_nodes(n) < 0.0d0) then
mom_nodes(n) = 0.0d0 ! mom_nodes(n) = 0.0d0
end if ! end if
den_nodes(n) = node%output(s)%den/(node%v*Vol_ref*n_ref) ! den_nodes(n) = node%output(s)%den/(node%v*Vol_ref*n_ref)
end do end do
mom_center = mom_center + edge%gatherF(edge%centerXi(), edge%nNodes, mom_nodes) mom_center = mom_center + qSpecies(s)*edge%gatherF(edge%centerXi(), edge%nNodes, mom_nodes)
den_center = den_center + edge%gatherF(edge%centerXi(), edge%nNodes, den_nodes) ! den_center = den_center + edge%gatherF(edge%centerXi(), edge%nNodes, den_nodes)
charge_center = charge_center + qSpecies(s)*edge%gatherF(edge%centerXi(), edge%nNodes, den_nodes) ! charge_center = charge_center + qSpecies(s)*edge%gatherF(edge%centerXi(), edge%nNodes, den_nodes)
end do end do
if (den_center > 1.0e-12) then ! if (den_center > 1.0e-12) then
self%deltaElectricField(e) = self%deltaElectricField(e) + mom_center / den_center * charge_center * tauMin self%deltaElectricField(e) = self%deltaElectricField(e) + mom_center * tauMin
end if ! end if
deallocate(nodes, mom_nodes, den_nodes) deallocate(nodes, mom_nodes, den_nodes)
@ -434,7 +433,7 @@ submodule(moduleMesh) boundaryEM
end do end do
if (self%counter == every) then if (self%counter == every) then
self%electricField = self%electricField - self%deltaElectricField!*every_inv self%electricField = self%electricField - self%deltaElectricField
self%counter = 0 self%counter = 0
self%deltaElectricField = 0.0d0 self%deltaElectricField = 0.0d0