subroutine misdc_initialize(this, lev)
class(pf_misdc_t), intent(inout) :: this
class(pf_level_t), intent(inout) :: lev
real(pfdp) :: dsdc(lev%nnodes-1)
integer :: m, nnodes
this%npieces = 3
nnodes = lev%nnodes
allocate(this%SdiffE(nnodes-1,nnodes)) ! S-FE
allocate(this%SdiffI(nnodes-1,nnodes)) ! S-BE
this%SdiffE = lev%s0mat
this%SdiffI = lev%s0mat
dsdc = lev%nodes(2:nnodes) - lev%nodes(1:nnodes-1)
do m = 1, nnodes-1
this%SdiffE(m,m) = this%SdiffE(m,m) - dsdc(m)
this%SdiffI(m,m+1) = this%SdiffI(m,m+1) - dsdc(m)
end do
end subroutine misdc_initialize