## Appendix A  
The total porosity of the rock can be calculated from compensated neutron and density logging data. On the basis of the response mechanism of density logging and compensated neutron logging, the density and compensated neutron response equation of the rock is as follows:  
\[\rho=\rho_{ma}(1-\phi_{t})+\rho_{f}\phi_{t}\big{(}1-S_{g}\big{)}+\rho_{g}\phi_ {t}S_{g} \tag{1}\]  
\[N=N_{ma}(1-\phi_{t})+N_{f}\phi_{t}\big{(}1-S_{g}\big{)}+N_{g}\phi_{t}S_{g} \tag{2}\]  
where \(\rho_{ma}\), \(\rho_{f}\) and \(\rho_{g}\) are the density values of matrix, fluid and gas, respectively. \(N_{ma}\), \(N_{f}\) and \(N_{g}\) are the neutron values of rock skeleton, fluid and gas, respectively. \(S_{g}\) is gas saturation.  
Combining Equation (1) and Equation (2), the expression of total porosity \(\phi_{t}\) can be derived by eliminating the gas saturation, as Equation (3):  
\[\phi_{t}=\frac{\Big{(}\rho_{g}-\rho_{f}\Big{)}\big{(}N-N_{ma}\big{)}-\Big{(}N _{g}-N_{f}\Big{)}\big{(}\rho-\rho_{ma}\big{)}}{\Big{(}\rho_{\text{ma}}-\rho_{ f}\Big{)}\Big{(}N_{g}-N_{f}\Big{)}-\Big{(}N_{\text{ma}}-N_{f}\Big{)}\Big{(} \rho_{g}-\rho_{f}\Big{)}} \tag{3}\]  
where \(\rho_{ma}\) and \(N_{ma}\) can be obtained by experimental measurement.  
Among various porosity logging methods, acoustic logging mainly reflects the porosity of a rock matrix. The intergranular porosity \(\phi_{p}\) can be calculated by the following equation:  
\[\phi_{p}=\frac{AC-AC_{ma}}{AC_{f}-AC_{ma}}-V_{SH}\times\frac{AC_{sh}-AC_{ma}}{ AC_{f}-AC_{ma}} \tag{4}\]  
where \(AC\) is the value of acoustic logging. \(V_{SH}\) is the argillaceous content, and \(AC_{ma}\), \(AC_{f}\) and \(AC_{sh}\) are the acoustic interval transit time of rock skeleton, pore fluid and mudstone, respectively.  
Calculating the fracture porosity by dual lateral logging is the most commonly used method at present. Fractures can be divided into low-angle fractures, inclined fractures and high-angle fractures according to their occurrence, and their response characteristics to dual lateral logging are obviously different. Therefore, before calculating the fracture, we need to prioritize the type of fracture:  
\[Y=\frac{R_{d}-R_{S}}{\sqrt{R_{d}\times R_{s}}} \tag{10}\]  
where \(R_{d}\), \(R_{s}\) are the values of deep lateral resistivity and shallow lateral resistivity, respectively. When \(Y\) is greater than 0.1, it is a high-angle fracture. When \(Y\) is between 0 and 0.1, it is an inclined fracture. When \(Y\) is less than 0, it is a low-angle fracture.  
The fracture porosity \(\phi_{f}\) can be calculated by the following formula:  
\[\phi_{f}=(A_{1}\sigma_{s}+A_{2}\sigma_{d}+A_{3})R_{mf} \tag{11}\]  
where \(\sigma_{s}\), \(\sigma_{d}\) are the shallow lateral conductivity and the deep lateral conductivity, respectively, and \(R_{mf}\) is the mud filtrate resistivity. For low-angle fractures, the coefficients are \(A_{1}=-0.992417\), \(A_{2}=1.97247\), and \(A_{3}=0.000318\). When the fracture is an inclined fracture, the coefficients are \(A_{1}=-17.6332\), \(A_{2}=20.364451\), and \(A_{3}=0.000932\). For a high-angle fracture, the coefficients are \(A_{1}=8.522532\), \(A_{2}=-8.242788\), and \(A_{3}=0.000712\).  
The sum of matrix intergranular porosity \(\phi_{p}\), dissolution pores \(\phi_{s}\) and fracture porosity \(\phi_{f}\) is equal to the total porosity \(\phi_{t}\). Therefore, the dissolution porosity \(\phi_{s}\) can be calculated by Equation (10):  
\[\phi_{s}=\phi_{t}-\phi_{p}-\phi_{f} \tag{12}\]