Search in sources :

Example 1 with CartesianMeshFileReader

use of org.vcell.vis.io.CartesianMeshFileReader in project vcell by virtualcell.

the class CartesianMeshVtkFileWriter method getEmptyVtuMeshFiles.

public VtuFileContainer getEmptyVtuMeshFiles(VCellSimFiles vcellFiles, File destinationDirectory) throws IOException, MathException, DataAccessException {
    // 
    // read the simplified cartesian mesh
    // 
    CartesianMeshFileReader reader = new CartesianMeshFileReader();
    CartesianMesh mesh = reader.readFromFiles(vcellFiles);
    // 
    // for each domain in cartesian mesh, get the mesh file
    // 
    ArrayList<String> domains = new ArrayList<String>();
    domains.addAll(mesh.getVolumeDomainNames());
    domains.addAll(mesh.getMembraneDomainNames());
    boolean bMeshFileMissing = false;
    ArrayList<File> meshFiles = new ArrayList<File>();
    for (String domainName : domains) {
        File file = getVtuMeshFileName(vcellFiles, domainName);
        meshFiles.add(file);
        if (!file.exists()) {
            bMeshFileMissing = true;
        }
    }
    if (bMeshFileMissing) {
        writeEmptyMeshFiles(vcellFiles, destinationDirectory, null);
    }
    VtuFileContainer vtuFileContainer = new VtuFileContainer();
    for (int i = 0; i < domains.size(); i++) {
        byte[] vtuMeshFileContents = FileUtils.readByteArrayFromFile(meshFiles.get(i));
        vtuFileContainer.addVtuMesh(new VtuFileContainer.VtuMesh(domains.get(i), 0.0, vtuMeshFileContents));
    }
    return vtuFileContainer;
}
Also used : CartesianMeshFileReader(org.vcell.vis.io.CartesianMeshFileReader) CartesianMesh(org.vcell.vis.vcell.CartesianMesh) ArrayList(java.util.ArrayList) VtuFileContainer(org.vcell.vis.io.VtuFileContainer) File(java.io.File)

Example 2 with CartesianMeshFileReader

use of org.vcell.vis.io.CartesianMeshFileReader in project vcell by virtualcell.

the class VCellDataTest method main.

/**
 * @param args
 */
public static void main(String[] args) {
    try {
        ResourceUtil.setNativeLibraryDirectory();
        KeyValue simKey = new KeyValue("1661241954");
        String pathPrefix = "C:\\Users\\schaff\\.vcell\\simdata\\user\\";
        File meshFile = new File(pathPrefix + "SimID_" + simKey + "_0_.mesh");
        File meshMetricsFile = new File(pathPrefix + "SimID_" + simKey + "_0_.meshmetrics");
        File subdomainFile = new File(pathPrefix + "SimID_" + simKey + "_0_.subdomains");
        File logFile = new File(pathPrefix + "SimID_" + simKey + "_0_.log");
        File zipFile = new File(pathPrefix + "SimID_" + simKey + "_0_00.zip");
        File postprocessingFile = new File(pathPrefix + "SimID_" + simKey + "_0_.hdf5");
        VCellSimFiles vcellFiles = new VCellSimFiles(simKey, 0, meshFile, meshMetricsFile, subdomainFile, logFile, postprocessingFile);
        vcellFiles.addDataFileEntry(zipFile, new File("SimID_" + simKey + "_0_0000.sim"), 0.0);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0001.sim"),0.05);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0002.sim"),0.10);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0003.sim"),0.15);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0004.sim"),0.20);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0005.sim"),0.25);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0006.sim"),0.30);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0007.sim"),0.35);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0008.sim"),0.40);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0009.sim"),0.45);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0010.sim"),0.50);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0011.sim"),0.55);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0012.sim"),0.60);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0013.sim"),0.65);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0014.sim"),0.70);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0015.sim"),0.75);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0016.sim"),0.80);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0017.sim"),0.85);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0018.sim"),0.90);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0019.sim"),0.95);
        // vcellFiles.addDataFileEntry(zipFile,new File("SimID_"+simKey+"_0_0020.sim"),1.0);
        // process each domain separately (only have to process the mesh once for each one)
        CartesianMeshVtkFileWriter cartesianMeshVtkFileWriter = new CartesianMeshVtkFileWriter();
        File destinationDirectory = new File("C:\\Developer\\eclipse\\workspace\\VCell_5.3_visfull\\VtkData\\");
        File[] generatedFiles = cartesianMeshVtkFileWriter.writeVtuExportFiles(vcellFiles, destinationDirectory, null);
        boolean bDisplay = true;
        if (bDisplay) {
            CartesianMeshFileReader reader = new CartesianMeshFileReader();
            CartesianMesh mesh = reader.readFromFiles(vcellFiles);
            ArrayList<String> allDomainNames = new ArrayList<String>();
            allDomainNames.addAll(mesh.getVolumeDomainNames());
            allDomainNames.addAll(mesh.getMembraneDomainNames());
            for (String domain : allDomainNames) {
                for (int timeIndex = 0; timeIndex < vcellFiles.getTimes().size(); timeIndex++) {
                    // String filename = new File(destinationDirectory,vcellFiles.getCannonicalFilePrefix(domain,timeIndex)+".vtu").getAbsolutePath();
                    // vtkUnstructuredGrid vtkgrid = vtkGridUtils.read(filename);
                    // vtkgrid.BuildLinks();
                    // 
                    // String varName0 = vtkgrid.GetCellData().GetArrayName(0);
                    // String varName1 = vtkgrid.GetCellData().GetArrayName(1);
                    // SimpleVTKViewer simpleViewer = new SimpleVTKViewer();
                    // simpleViewer.showGrid(vtkgrid, varName0, varName1);
                    Thread.sleep(1000);
                }
            }
        }
        // CartesianMeshFileReader reader = new CartesianMeshFileReader();
        // CartesianMesh mesh = reader.readFromFiles(vcellFiles);
        // CartesianMeshMapping cartesianMeshMapping = new CartesianMeshMapping();
        // 
        // //String domainName = mesh.meshRegionInfo.getVolumeDomainNames().get(1);
        // String domainName = mesh.meshRegionInfo.getVolumeDomainNames().get(0);
        // 
        // System.out.println("making visMesh for domain "+domainName+" of ["+mesh.meshRegionInfo.getVolumeDomainNames()+"]");
        // VisMesh visMesh = cartesianMeshMapping.fromMeshData(mesh, domainName);
        // final int numElements = visMesh.getPolyhedra().size();
        // final double[] data1 = new double[numElements];
        // final double[] data2 = new double[numElements];
        // 
        // for (int i=0;i<numElements;i++){
        // data1[i] = Math.sin(i/10000.0);
        // data2[i] = Math.cos(i/10000.0);
        // }
        // VisMeshData visData = new VisMeshData() {
        // private String[] names = new String[] { "data1", "data2" };
        // 
        // @Override
        // public String[] getVarNames() {
        // return new String[] { "data1", "data2" };
        // }
        // 
        // @Override
        // public double getTime() {
        // return 0.0;
        // }
        // 
        // @Override
        // public double[] getData(String var) {
        // if (var.equals("data1")){
        // return data1;
        // }else if (var.equals("data2")){
        // return data2;
        // }else{
        // throw new RuntimeException("var "+var+" not found");
        // }
        // }
        // };
        // 
        // VisDomain visDomain = new VisDomain("domain1",visMesh,visData);
        // VtkGridUtils vtkGridUtils = new VtkGridUtils();
        // vtkUnstructuredGrid vtkgrid = vtkGridUtils.getVtkGrid(visDomain);
        // vtkgrid = TestVTK.testWindowedSincPolyDataFilter(vtkgrid);
        // String filenameBinary = "testBinary.vtu";
        // vtkGridUtils.writeXML(vtkgrid, filenameBinary, false);
        // vtkgrid = vtkGridUtils.read(filenameBinary);
        // //vtkgrid.s
        // vtkgrid.BuildLinks();
        // SimpleVTKViewer simpleViewer = new SimpleVTKViewer();
        // String[] varNames = visDomain.getVisMeshData().getVarNames();
        // simpleViewer.showGrid(vtkgrid, varNames[0], varNames[1]);
        System.out.println("ran");
    } catch (Exception e) {
        e.printStackTrace(System.out);
    }
}
Also used : CartesianMeshFileReader(org.vcell.vis.io.CartesianMeshFileReader) KeyValue(org.vcell.util.document.KeyValue) CartesianMeshVtkFileWriter(org.vcell.vis.mapping.vcell.CartesianMeshVtkFileWriter) ArrayList(java.util.ArrayList) VCellSimFiles(org.vcell.vis.io.VCellSimFiles) CartesianMesh(org.vcell.vis.vcell.CartesianMesh) File(java.io.File)

Example 3 with CartesianMeshFileReader

use of org.vcell.vis.io.CartesianMeshFileReader in project vcell by virtualcell.

the class CartesianMeshVtkFileWriter method getVtuVarInfos.

public VtuVarInfo[] getVtuVarInfos(VCellSimFiles vcellFiles, OutputContext outputContext, VCData vcData) throws IOException, DataAccessException, MathException {
    CartesianMeshFileReader reader = new CartesianMeshFileReader();
    CartesianMesh mesh = reader.readFromFiles(vcellFiles);
    List<String> volumeDomainNames = mesh.getVolumeDomainNames();
    List<String> membraneDomainNames = mesh.getMembraneDomainNames();
    ArrayList<String> allDomains = new ArrayList<String>();
    allDomains.addAll(volumeDomainNames);
    allDomains.addAll(membraneDomainNames);
    DataIdentifier[] dataIdentifiers = vcData.getVarAndFunctionDataIdentifiers(outputContext);
    AnnotatedFunction[] annotationFunctions = vcData.getFunctions(outputContext);
    ArrayList<VtuVarInfo> varInfos = new ArrayList<VtuVarInfo>();
    for (String domainName : allDomains) {
        VariableDomain varDomain = VariableDomain.VARIABLEDOMAIN_UNKNOWN;
        if (volumeDomainNames.contains(domainName)) {
            varDomain = VariableDomain.VARIABLEDOMAIN_VOLUME;
        } else if (membraneDomainNames.contains(domainName)) {
            varDomain = VariableDomain.VARIABLEDOMAIN_MEMBRANE;
        }
        for (DataIdentifier dataID : dataIdentifiers) {
            if (dataID.getDomain() == null || dataID.getDomain().getName().equals(domainName)) {
                boolean bMeshVar = isMeshVar(dataID);
                String expressionString = null;
                if (dataID.isFunction()) {
                    for (AnnotatedFunction f : annotationFunctions) {
                        if (f.getName().equals(dataID.getName())) {
                            expressionString = f.getExpression().infix();
                        }
                    }
                }
                varInfos.add(new VtuVarInfo(dataID.getName(), "(" + domainName + ")  " + dataID.getDisplayName(), domainName, varDomain, expressionString, DataType.CellData, bMeshVar));
            }
        }
        varInfos.add(new VtuVarInfo(GLOBAL_INDEX_VAR, "(" + domainName + ")  " + GLOBAL_INDEX_VAR, domainName, varDomain, null, DataType.CellData, true));
        varInfos.add(new VtuVarInfo(REGION_ID_VAR, "(" + domainName + ")  " + REGION_ID_VAR, domainName, varDomain, null, DataType.CellData, true));
    }
    return varInfos.toArray(new VtuVarInfo[0]);
}
Also used : CartesianMeshFileReader(org.vcell.vis.io.CartesianMeshFileReader) VtuVarInfo(org.vcell.vis.io.VtuVarInfo) DataIdentifier(cbit.vcell.simdata.DataIdentifier) VariableDomain(cbit.vcell.math.VariableType.VariableDomain) ArrayList(java.util.ArrayList) CartesianMesh(org.vcell.vis.vcell.CartesianMesh) AnnotatedFunction(cbit.vcell.solver.AnnotatedFunction)

Example 4 with CartesianMeshFileReader

use of org.vcell.vis.io.CartesianMeshFileReader in project vcell by virtualcell.

the class CartesianMeshVtkFileWriter method writeEmptyMeshFiles.

public File[] writeEmptyMeshFiles(VCellSimFiles vcellFiles, File destinationDirectory, ProgressListener progressListener) throws IOException, MathException {
    if (destinationDirectory == null || !destinationDirectory.isDirectory()) {
        throw new RuntimeException("destinationDirectory '" + destinationDirectory + " not valid");
    }
    // 
    // read the simplified cartesian mesh
    // 
    CartesianMeshFileReader reader = new CartesianMeshFileReader();
    CartesianMesh mesh = reader.readFromFiles(vcellFiles);
    // 
    // for each volume domain in mesh, extract the associated VisMesh
    // 
    List<String> volumeDomainNames = mesh.getVolumeDomainNames();
    HashMap<String, VisMesh> domainMeshMap = new HashMap<String, VisMesh>();
    for (String volumeDomainName : volumeDomainNames) {
        CartesianMeshMapping meshMapping = new CartesianMeshMapping();
        VisMesh visMesh = meshMapping.fromMeshData(mesh, volumeDomainName, true);
        domainMeshMap.put(volumeDomainName, visMesh);
    }
    // 
    // for each membrane domain in mesh, extract the associated VisMesh
    // 
    List<String> membraneDomainNames = mesh.getMembraneDomainNames();
    for (String membraneDomainName : membraneDomainNames) {
        CartesianMeshMapping meshMapping = new CartesianMeshMapping();
        VisMesh visMesh = meshMapping.fromMeshData(mesh, membraneDomainName, false);
        domainMeshMap.put(membraneDomainName, visMesh);
    }
    ArrayList<String> allDomainNames = new ArrayList<String>();
    allDomainNames.addAll(volumeDomainNames);
    allDomainNames.addAll(membraneDomainNames);
    int numFiles = vcellFiles.getTimes().size() * allDomainNames.size();
    ArrayList<File> files = new ArrayList<File>();
    int filesProcessed = 0;
    for (final String domainName : allDomainNames) {
        // 
        // find the globalIndexes for each domain element - use this to extract the domain-only data.
        // 
        VisMesh visMesh = domainMeshMap.get(domainName);
        File vtuFile = getVtuMeshFileName(vcellFiles, domainName);
        File fvIndexDataFileName = getFiniteVolumeIndexDataFileName(vcellFiles, domainName);
        VtkService.getInstance().writeFiniteVolumeSmoothedVtkGridAndIndexData(visMesh, domainName, vtuFile, fvIndexDataFileName);
        files.add(vtuFile);
        filesProcessed++;
        if (progressListener != null) {
            progressListener.progress(((double) filesProcessed) / numFiles);
        }
    }
    return files.toArray(new File[0]);
}
Also used : CartesianMeshFileReader(org.vcell.vis.io.CartesianMeshFileReader) HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) VisMesh(org.vcell.vis.vismesh.thrift.VisMesh) CartesianMesh(org.vcell.vis.vcell.CartesianMesh) File(java.io.File)

Aggregations

ArrayList (java.util.ArrayList)4 CartesianMeshFileReader (org.vcell.vis.io.CartesianMeshFileReader)4 CartesianMesh (org.vcell.vis.vcell.CartesianMesh)4 File (java.io.File)3 VariableDomain (cbit.vcell.math.VariableType.VariableDomain)1 DataIdentifier (cbit.vcell.simdata.DataIdentifier)1 AnnotatedFunction (cbit.vcell.solver.AnnotatedFunction)1 HashMap (java.util.HashMap)1 KeyValue (org.vcell.util.document.KeyValue)1 VCellSimFiles (org.vcell.vis.io.VCellSimFiles)1 VtuFileContainer (org.vcell.vis.io.VtuFileContainer)1 VtuVarInfo (org.vcell.vis.io.VtuVarInfo)1 CartesianMeshVtkFileWriter (org.vcell.vis.mapping.vcell.CartesianMeshVtkFileWriter)1 VisMesh (org.vcell.vis.vismesh.thrift.VisMesh)1