Hi Chen Ying,
You are right, the imported source only injects the correct field profile for the center frequency. Since you are interested in a broad wavelength range, this is an important limitation in your case. You would have to run a sweep over source wavelength for the second simulation (the one with the lower part of the solar cell).
After discussing this with @kchow we think there is a better alternative, which is also much simpler because you only need to run one simulation (there is no need to split the structure in two parts, and you don’t need any sweep over wavelength).
The idea is based on this discussion about temporal incoherence. As explained there, you can use a spectral weight function W(ω) and the monochromatic response (from the FDTD simulation) to obtain the incoherent response at an angular frequency ωo for a physical source with a given coherence length. For W(ω) you can simply use a Lorentzian with center at ωo and width given by the coherence length. For long enough coherence length, the incoherent response approaches the monochromatic one, but as you decrease the coherence length the interference effects start to disappear.
A simple example where you can see this idea in action is attached: solar_planar_incoherent.fsp (290.5 KB) and usr_temporal_incoherence_solar.lsf (1.8 KB). The script will run the solar cell simulation from this example and post-process the monochromatic spectrum as in the temporal incoherence example. You can see that for a coherence length (in vacuum) of 3um the ripples in the spectrum are gone; as you increase the coherence length, the ripples reappear.
This behavior is consistent with the fact that the silicon layer in the simulation is 3um-thick so a coherence lenght of 3um is not long enough to see interference between light moving back and forth in the layer.
As a double check of you results you can use the “two-simulation” technique proposed before for checking a few frequency points.
Hope this helps!