{
        
        int expdim  = 
m_graph->GetMeshDimension();
 
        bool useFFT     = false;
        bool dealiasing = false;
        switch (expdim)
        {
        case 1:
            {
                         "Quasi-3D approach is only set up for 1 or 2 "
                         "homogeneous directions");
                if (NumHomogeneousDir == 1)
                {
                    
                    int nplanes;
                    if(fldfilegiven)
                    {
                    }
                    else
                    {
                        m_session->LoadParameter(
"HomModesZ", nplanes);
 
                    }
                    
                    
                    {
                        ASSERTL0(
false,
"ContField2DHomogeneous1D or " 
                                 "DisContField2DHomogenenous1D has "
                                 "not been implemented");
                    }
                                          useFFT,  dealiasing,
                    exp = Exp2DH1;
                }
                else if (NumHomogeneousDir == 2)
                {
                    int nylines,nzlines;
                    if(fldfilegiven)
                    {
                    }
                    else
                    {
                        m_session->LoadParameter(
"HomModesY", nylines);
 
                        m_session->LoadParameter(
"HomModesZ", nzlines);
 
                    }
                    
                    
                    {
                                              ly, lz, useFFT, dealiasing,
                    }
                    {
                                              ly, lz, useFFT, dealiasing,
                    }
                    else
                    {
                                              ly, lz, useFFT, dealiasing,
                    }
                    exp = Exp3DH2;
                }
                else
                {
                    {
                    }
                    {
                    }
                    else
                    {
                    }
                    exp = Exp1D;
                }
            }
            break;
        case 2:
            {
                         "NumHomogeneousDir is only set up for 1");
                if (NumHomogeneousDir == 1)
                {
                    
                    int nplanes;
                    if(fldfilegiven)
                    {
                    }
                    else
                    {
                        m_session->LoadParameter(
"HomModesZ", nplanes);
 
                    }
                    
                    
                    {
                            AllocateSharedPtr(
m_session, Bkey, lz, useFFT,
 
                    }
                    {
                                              Bkey, lz, useFFT,
                    }
                    else
                    {
                            AllocateSharedPtr(
m_session, Bkey, lz, useFFT,
 
                    }
                    exp = Exp3DH1;
                }
                else
                {
                    {
                    }
                    {
                    }
                    else
                    {
                    }
                    exp = Exp2D;
                }
            }
            break;
        case 3:
            {
                {
                }
                {
                }
                else
                {
                }
                exp = Exp3D;
            }
            break;
        default:
            ASSERTL0(
false, 
"Expansion dimension not recognised");
 
            break;
        }
        return exp;
    };