## 2 Methods and Materials
### Computational Model  
A numerical model was made that worked from the data of a specific gradation, unit mass, and apparent density of the coarse aggregate; the function of the model reproduced the gradation supplied, generating a group of particles of spherical shape, whose diameters were a function of the series of sieves in gradation \(i\), in this case, the experimental one. Then, it spatially distributed all of these coarse aggregate particles and arranged them referentially within a standard cylinder with dimensions of 100 mm diameter \(\times\) 200 mm height. However, for the effect of not appreciating the aggregate particles as if they were segregation effects on the cylinder walls, fractions of approximately 98 mm \(\times\) 198 mm were used. The code managed to reproduce a gradation that was quite close to the gradation provided, so the results that were deduced once the modeling was executed could be related to the gradation with high reliability. Generation and spatial distribution of coarse aggregate. In the model, the coarse aggregate was generated by means of a Python algorithm that recreated a number of spheres with mass \(m_{i}\), diameter \(d_{i}\), and volume \(v_{i}\) according to the characteristics of mass and gradation in a real cylinder. In the end, the final mass, which was the sum of the masses (\(m_{i}\)) of all the particles, corresponded to the total mass of the coarse aggregate used for a homologous experimental ratio under normal laboratory conditions. In the case of working with a 100 mm \(\times\) 200 mm model, approximately 1500 g of coarse aggregate was used. Once the aggregate particles were generated, they were randomly spatially located within the 10 cm \(\times\) 20 cm mold. The generation started with the larger diameter ones to the smaller diameter ones. The parameters of each aggregate were the coordinates of the center (height, angle, and radius). To obtain these coordinates, 3 random functions were used. Distribution 1 was used for the radius; at the same time, this type of distribution prevented the accumulation of particles in the middle of the cylinder. \[\mathrm{r}=\mathrm{triangular}\left(0,\mathrm{r_{c}}-\frac{\mathrm{\theta_{e }}}{2},\mathrm{r_{c}}-\frac{\mathrm{\theta_{e}}}{2}\right) \tag{1}\]  
where \(\mathrm{r_{c}}\) and \(\mathrm{\theta_{e}}\) correspond to the diameter of the cylinder and the diameter of the aggregate. The angle \(\mathrm{\theta}\) followed the distribution shown in equation 2 between 0 and 2\(\mathrm{\pi}\). Equation (3) was used to distribute the particles along the cylinder. \[\mathrm{\theta}=\mathrm{uniform}\left(0,\,2\mathrm{\pi}\right) \tag{2}\]  
\[\mathrm{r}=\mathrm{uniform}\left(0+\frac{\mathrm{\theta_{e}}}{2},\,\mathrm{h_ {c}}-\frac{\mathrm{\theta_{e}}}{2}\right) \tag{3}\]  
The equations were placed inside a for loop. This meant that for each coarse aggregate, a set of coordinates was created. The algorithm checked for overlaps with the aggregates previously placed within the cylinder. If there were no overlaps, the coordinates were  
Figure 3: Sequence of final activities: (**a**) mixing of materials, (**b**) conformation of concrete cylinders, and (**c**) elastic modulus test. saved for the particle. If an overlap was found, a new set of coordinates was created until there was no overlap. Once a coordinate for a particle was obtained, the algorithm checked that it was not occupied, and if so, it saved it and proceeded to place another particle until completing the amount generated for each sieve. The coordinate results were saved to a text file that saves the diameter and location coordinates of each particle. The polar coordinates r and \(\theta_{e}\), as well as h and the diameter \(d_{i}\) of each aggregate, were saved in a text file. With this text file, a macro was generated that was called from Abaqus, where the finite element model was generated. In the case of a coarse aggregate with a maximum size of 25 mm, 1527 particles were generated.