Exporting to VTK output

1 year 4 months ago #4703 by JamesElgy
Recently I've been considering some eddy current type problems involving thin skin depths, which I've been modelling as a conducting object of interest embedded in a larger non-conducting region.

To visualise the skin depth, I've been trying to output VTK files at different frequencies and, in order to reduce the size of the files, I've been trying to export files only showing elements in a specific subdomain. E.g. mesh.Material('cube'). My understanding is that I can specify elements when I export the vtk file using 'drawelems', however, when I do so it removes signficantly more elements than I expect.

I've attached the relevent part of my code. Is there something I'm doing wrong here? I would have expected it to show all the elements inside the cube. Any help would be appreciated.


    print(' creating vtk output', end='\r')
    ThetaE1 = GridFunction(fes2)
    ThetaE2 = GridFunction(fes2)
    ThetaE3 = GridFunction(fes2)
    ThetaE1.vec.FV().NumPy()[:] = Output[0]
    ThetaE2.vec.FV().NumPy()[:] = Output[1]
    ThetaE3.vec.FV().NumPy()[:] = Output[2]

    E1Mag = CoefficientFunction(
        sqrt(InnerProduct(ThetaE1.real, ThetaE1.real) + InnerProduct(ThetaE1.imag, ThetaE1.imag)))
    E2Mag = CoefficientFunction(
        sqrt(InnerProduct(ThetaE2.real, ThetaE2.real) + InnerProduct(ThetaE2.imag, ThetaE2.imag)))
    E3Mag = CoefficientFunction(
        sqrt(InnerProduct(ThetaE3.real, ThetaE3.real) + InnerProduct(ThetaE3.imag, ThetaE3.imag)))
    Sols =
    Sols.append((ThetaE1 * 1j * Omega * sigma).real)
    Sols.append((ThetaE1 * 1j * Omega * sigma).imag)
    Sols.append((ThetaE2 * 1j * Omega * sigma).real)
    Sols.append((ThetaE2 * 1j * Omega * sigma).imag)
    Sols.append((ThetaE3 * 1j * Omega * sigma).real)
    Sols.append((ThetaE3 * 1j * Omega * sigma).imag)
    Sols.append(E1Mag * Omega * sigma)
    Sols.append(E2Mag * Omega * sigma)
    Sols.append(E3Mag * Omega * sigma)

    vtk = VTKOutput(ma=mesh, coefs=Sols,
                    names=["Object", "E1real", "E1imag", "E2real", "E2imag", "E3real", "E3imag", "E1Mag",
                           "E2Mag", "E3Mag"], filename='test_file', subdivision=0, legacy=True)

    ele_to_draw = mesh.Materials('cube').Mask()
    vtk.Do( drawelems=ele_to_draw)

1 year 4 months ago #4704 by schruste
Replied by schruste on topic Exporting to VTK output
Hi James,

The drawelems=... expects a BitArray w.r.t. the mesh elements, not the domains. You are rather prescribing the relevant domain indices. Indeed, drawing only certain materials would be a nice feature, but we haven't implemented this as of now, sorry.

1 year 4 months ago #4705 by JamesElgy
Replied by JamesElgy on topic Exporting to VTK output
Ok, thanks for the quick reply Christoph.

Time to create page: 0.151 seconds