Workflow Suggestions: Post-processing ANSYS mechanical engineering data with Julia

I am new to both ANSYS and Julia. I would like to use Julia to process static structural and heat transfer data from the commercial ANSYS finite element software. I have computed several quantities of interest within ANSYS (stresses, strains, temperatures, etc.). My understanding is that each of these must be output as separate Excel files. I would like to use Julia to combine all the data and then perform some post-processing computations to compute local yielding, damage, fracture, etc.

Currently my company moves data around in Excel manually and creates separate Excel sheets with references for each required calculation. I understand that many find it much safer and easier these days to keep data storage separate from calculations. I intend to update our workflow with this methodology in mind. I plan to store constants and ANSYS output as excel files, then read in those excel files for computations and plotting with Julia. I know many tend to use databases for there data storage rather than spreadsheets, but I don’t know what functional advantages they offer nor the best methods to convert to them. I am also debating the best way to store material properties with temperature dependencies: structs within Julia or an external spreadsheet.

Does anyone have any experience with a mechanical engineering workflow like this? I have so far been able to read in and combine the ANSYS data into a DataFrame with the code below. Next I will implement some post-processing calculations. I am open to any and all suggestions?

module ANSYSData
using DataFrames
import CSV

path=raw"C:\Users\nboyer\Documents\Current Projects\Manchester\Excel\Data"

function readansysdata(path)
    filenames=readdir(path)
    
    tempdfs=Vector{DataFrame}(undef, length(filenames))
    for i in 1:length(filenames)
        tempdfs[i]=CSV.read(path*"/"*filenames[i])
    end

    data=outerjoin(tempdfs..., on="Node Number")
    for (i,datacolumn) in enumerate(eachcol(data))
        if any(ismissing.(datacolumn))
            println("Warning: $(filenames[i]) includes missing values.")
        end
    end
    return data
end

data=readansysdata(path)

end
1 Like