If the inner sweep was done as a dc sweep, the name of the inner sweep may not be kept as such - for example, if I do:
Code:sweepvgs sweep dev=vgs param=dc start=0 stop=2 step=200m {
dcAnalysis dc dev=vds start=0 stop=5 step=20m
}
Then the inner sweep name is "dc" in my case. Without seeing your data, it's a little hard to be sure exactly what you'll get. sweepNames() should tell you all the names of the axes.
The usual way of handling data that may or may not be parametric is to us the famIsFamily() function and then famMap() - as in the example I posted in one of the references you mentioned.
Alternatively, the structure is quite simple. If it's family data, then the x-axis is a vector with each element being the value of that point in the sweep, whereas the y-axis is a vector with each element being the waveform for that point in the sweep. BTW, your code has a typo - you print the YType, but are using the XType function to retrieve it - that said, it would still say double...
So, if you did this:
x=drGetWaveformXVec(wave)
y=drGetWaveformYVec(wave)
len=drVectorLength(x)
for(i 0 len-1
printf("First wave is at x value %g\n" drGetElem(x i)
subWave=drGetElem(y i)
printf("Sub wave x-axis name is %L\n" drGetWaveformXVec(subWave)~>name)
printf("Sub wave y-axis expression is %L\n" drGetWaveformYVec(subWave)~>expression)
plot(subWave)
)
Hopefully that gives you enough hints to decompose the waveform the way you want?
Regards,
Andrew.