<div>In this paper, we present our new computer program, D+, which uses the reciprocal-grid (RG) algorithm to efficiently compute X-ray scattering curves from solutions of complex structures at high-resolution. Structures are defined in hierarchical trees in which subunits can be represented by geometric or atomic models. Repeating subunits can be docked into their assembly symmetries, describing their locations and orientations in space. The scattering amplitude of the entire structure can be calculated by computing the amplitudes of the basic subunits on 3D reciprocal-space grids, moving up in the hierarchy, calculating the RGs of the larger structures, and by repeating this process for all the leaves and nodes of the tree. For very large structures, a Hybrid method can be used to avoid numerical artifacts. In the Hybrid method, only grids of smaller subunits are summed and used as subunits in a direct computation of the scattering amplitude. D+ can accurately analyze both small- and wide-angle solution X-ray scattering data. We present how D+ applies the RG algorithm, accounts for rotations and translations of subunits, processes atomic models, accounts for the contribution of the solvent as well as the solvation layer of complex structures in a scalable manner, writes and accesses RGs, interpolates between grid points, computes numerical integrals, enables the use of scripts to define complicated structures, applies fitting algorithms, accounts for several coexisting uncorrelated populations, and accelerates computations using GPUs. D+ may also account for different X-ray energies to analyze anomalous solution X-ray scattering data. An accessory tool that can identify repeating subunits in a protein data bank (PDB) file of a complex structure is provided. The tool can compute the orientation and translation of repeating subunits needed for exploiting the advantages of the RG algorithm in D+. In addition, a python wrapper is also available, enabling more advanced computations and integration of D+ with other computational tools. Finally, we present a large number of tests and compare the results of D+ with other programs when possible and demonstrate the use of D+ to analyze solution scattering data from dynamic microtubule structures with different protofilament number. D+ and its source code are freely available (https://scholars.huji.ac.il/uriraviv/software/d-software) for academic users and developers. </div>