DOI: 10.5281/zenodo.18435236
title: Dataset of unidirectional carbon fiber pultruded composites and their constituents (fibers and matrix)

description: A comprehensive dataset of the material data of unidirectional carbon fiber reinforced composites and their consitutents, namely the fiber and the matrix. The dataset includes text files acquired through mechanical testing, Python files for calculations, post processing and plotting, Excel files of results and a SEM (scanning electron microscopy) image of the composite sample.

For the material chatacterization data and methods, a journal publication is prepared.

 

Part of the data analysis included in this repository has been done on X-ray CT (computed tomography) scans of three samples (A, B and C) of the same unidirectional carbon fiber reinforced composites. Three pultruded profiles were used in this dataset, and each X-ray scanned sample is cut from one of these profiles. The base material of the profiles was the same, but the pultrusion process parameters were varied. 

Please visit the following links for accessing these data:

sample A: https://doi.org/10.5281/zenodo.18364215  

sample B: https://doi.org/10.5281/zenodo.18370051

sample C: https://doi.org/10.5281/zenodo.18364338

 

The first word of the files (composite, fiber or matrix) indicate the material they refer to.

For the composite material:

The X-ray scans are in h5 format. To extract them in tiff images, please use the script: composite_h5_file_to_tiff.py

For the optional image equalization of the tiff images, please use the script: composite_tiff_images_equalization.py

For the cropping of the tiff images, please use the script: composite_tiff_images_crop.py

For the changing the tiff images into a nifti volume format, please use the script: composite_tiff_images_to_nifti.py

For the determination of the fiber orientation through the structure tensor analysis, please use the script: composite_STanalysis.py (along with the M1_TomoHandling.py and M2_Alignment.py). The code was developed by Ole V. Ferguson and was later modified by Pinelopi Mageira to enable the extraction and storage of the fiber orientation data in an NPZ (numpy.savez) format. The original implementation is available at:https://gitlab.windenergy.dtu.dk/olen/structure-tensor-3d-fe-mapping/-/tree/79dff869ea6825748861018c90c4fc1900ca80fdUsers of this code should cite the following work:O. V. Ferguson and L. P. Mikkelsen. Three-dimensional finite element modeling of anisotropic materials using X-ray computed micro-tomography data[Formula presented]. Software Impacts, vol. 17, 2023, doi: 10.1016/j.simpa.2023.100523.The structure tensor analysis scripts are under the MIT license. 

 

Please remember to adjust the file and folder names in the scripts above according to the sample you are examining.

composite_sem_grey_denoised_resampled.tiff: The SEM image of the composite sample. For the analysis scripts of the SEM image, please visit http://doi.org/10.5281/zenodo.7537379 . In case of usage, please give reference to:Mikkelsen, L.P.; Fæster, S.; Dahl, V.A. Dataset for scanning electron microscopy based local fiber volume fraction analysis of non-crimp fabric glass fiber reinforced composites. Data Brief 2023, 48. doi: 10.1016/j.dib.2023.109058.The SEM image was captured by Wenbo Sui. 

composite_data_fiber_denity.xlsx: Excel file containing the results of the fiber density calculation, obtained using the burn-off technique on composite samples. It includes the fiber and matrix volume and weight contents, as well as the porosity volume content and other experimentally obtained quantities.

composite_JO*.txt: Text files that include the results of the compression testing of composite samples. Three groups of samples were tested (JOAC1, JOBC1 and JOCC1), with each group cut from one of the three pultruded profiles that the X-ray CT scanned samples were scanned from. This means that group JOAC1 corresponded to X-ray scanned sample A, JOBC1 to sample B and JOCC1 to sample C. 

composite_graph_stress_strain.py: Python script that uses as input the composite_JO*.txt files to plot the compressive stress-strain behaviour of the tested samples. 

composite_graph_fiber_orientation_distribution_histograms.py: Python script that uses as input a npz file (created by the composite_structure_tensor.py script and containing the fiber angles), calculates the mean elevation angle and the mean absolute elevation angle and plots the fiber orientation as a histogram. There is the option of two npz files serving as input, and subsequently two histograms plotted on the same figure, for comparative purposes. 

 

For the fibers:

fiber_*mm_gauge_length_data_results.xlsx: Three Excel files including the results of the single fiber testing, without compliance. Each file corresponds to one gauge length (30mm, 50mm and 70 mm). The first sheet of each file is titled 'Results', with quantities such as max stress and fiber diameter, for all the tested single fibers. The rest of the sheets correspond to each single fiber tested, and describe the tensile curves. These tests on different gauge length were carried out for the determination of the single fiber testing machine.

fiber_50mm_gauge_length_data_results_with_compliance: The Excel file of the results of the single fibers whose gauge length was 50mm, with the compliance of the machine considered on the calculations. 

fiber_apparent_fiber_modulus_gauge_length.py: Python script for plotting the graph of the reciprocal of the apparent fiber modulus (1 / E*) compared to the reciprocal of each fiber gauge length examined. 

fiber_graph_diameter_histogram.py: Python script for plotting the fiber diameter histogram.

fiber_graph_stress_strain_50mm.py: Python script for plotting the individual stress-strain curves of the 50mm gauge length single fiber data.

fiber_graph_tension_compression_stress_strain.py: Pyhton script for the back-calculation of the compressive stress-strain curves of the single fibers. Inputs from the composite and the matrix are needed for applying the rule of mixtures.

fiber_graph_fitted_stress_strain_all_calculation_mean_median_stress.py: Python script for calculating and plotting the fitting stress-strain curves, with each fit corresponding to each gauge length's single fiber data. It also calculates the mean and median failure stresses for each gauge length data.

fiber_tangent_modulus.py: Python script for calculating and ploting the tangent modulus, both regarding the tension (from experimental data) and the compression (from the back-calculated data).

fiber_graph_weibull.py: Python script for the Weibull plot of the failure stress of the single carbon fibers tested, for each examined gauge length. 

fiber_calculation_weibull_failure_probability.py: Python script for the calculation of the fibers failure probability. It uses as input the fiber_*mm_gauge_length_data_results.xlsx files, and exports an Excel file with the results, named as fiber_weibull_failure_probability.xlsx, with each sheet corresponding to a gauge length.

fiber_graph_failure_stress_gauge_length.py: Python script for plotting the characteristic, median and mean failure stress of the single carbon fibers for each gauge length.

fiber_table_weibull_results.xlsx: Excel file with the Weibull parameters calculated from the above scripts gathered.

 

For the matrix:

matrix_KEB*_tension.sta.txt: Text files that include the results of the tensile testing of matrix samples.

matrix_KEA*_shear.sta.txt: Text files that include the results of the shear testing of matrix samples.

matrix_graph_tensile_stress_strain.py: Python script that uses as input the matrix_KEB*_tension.sta.txt files to plot the tensile stress-strain behaviour of the tested matrix samples. 

matrix_graph_shear_stress_strain.py: Python script that uses as input the matrix_KEA*_shear.sta.txt files to plot the shear stress-strain behaviour of the tested matrix samples. 

matrix_graph_von_mises: Python script for the calculation and plotting of the matrix von Mises stress. It uses as input the matrix_KE*.txt files.

matrix_data_stress_strain_for_ramberg_osgood.xlsx: The Excel that serves as input for the calculation of the Ramberg Osgood material model parameters. It includes the values of the strain and the stress, extracted from the tensile stress-strain results. 

matrix_calculation_curve_fitting_ramberg_osgood.py: Python script for the calculation of the Ramberg Osgood parameters. The matrix_data_stress_strain_for_ramberg_osgood.xlsx serves as input.

 

This dataset has been used in the following publications: 

Mageira, P.; Poulios, K.; Andreasen, J.W.; Dahl, V.A.; Mikkelsen, L.P. Experimental and Numerical Compression Analysis of 3D X-Ray CT Scanned Uni-directional Pultruded Carbon Fiber Composites. In ICCM International Conferences on Composite Materials, Baltimore, MD, United States, 4 August 2025. 

Mageira, P.; Poulios, K.; Andreasen, J.W.; Dahl, V.A.; Mikkelsen, L.P. From 3D X-ray CT scans to mesh-independent numerical compressive strength predictions of unidirectional carbon fiber composites. IOP Conf. Ser. Mater. Sci. Eng. 2025, 1338. doi: 10.1088/1757-899x/1338/1/012026.

 



This study was funded by EU Horizon MSCA 2021 DN Reliance: REaL-tIme characterization of ANisotropic Carbon-based tEchnological fibers, films and composites, grant no. 101073040.

The authors would like to thank Wenbo Sui for providing the SEM image of the sample used for the analysis.