Given the following 

    -- table ddl
    create table dbo.f_word(
    	sentence_id int NULL,
    	sentence_word_id int NULL,
    	word_id int NULL,
    	lemma_id int NULL,
    	source_id int NULL,
    	part_of_speech_id int NULL,
    	person_id int NULL,
    	gender_id int NULL,
    	number_id int NULL,
    	tense_id int NULL,
    	voice_id int NULL,
    	mood_id int NULL,
    	case_id int NULL,
    	degree_id int NULL,
    	citation nvarchar(100) NULL
    );
    -- create partition function
    create partition function pf_f_word_source_id (int)
    as range left for values 
    (
    	1,2,3,4,5,6,7,8,9,10,11,12,13,14,
    	15,16,17,18,19,20,21,22,23
    );
    
    -- create the partition scheme
    create partition scheme ps_f_word as partition pf_f_word_source_id to 
    (
    	[primary],[primary],[primary],[primary],[primary],[primary],[primary],[primary],[primary],
    	[primary],[primary],[primary],[primary],[primary],[primary],[primary],[primary],[primary],
    	[primary],[primary],[primary],[primary],[primary],[primary]
    );
    
    -- partition the index
    create unique clustered index cix_fword on dbo.f_word 
    (
    	source_id,
    	sentence_id,
    	sentence_word_id,
    	word_id,
    	lemma_id,
    	part_of_speech_id,
    	person_id,
    	gender_id,
    	number_id,
    	tense_id,
    	voice_id,
    	mood_id,
    	case_id,
    	degree_id 
    )
    on ps_f_word (source_id);
    
    -- swapin table ddl
    
    create table dbo.f_word_swapin(
    	sentence_id int NULL,
    	sentence_word_id int NULL,
    	word_id int NULL,
    	lemma_id int NULL,
    	source_id int NULL,
    	part_of_speech_id int NULL,
    	person_id int NULL,
    	gender_id int NULL,
    	number_id int NULL,
    	tense_id int NULL,
    	voice_id int NULL,
    	mood_id int NULL,
    	case_id int NULL,
    	degree_id int NULL,
    	citation nvarchar(100) NULL
    ) on [primary];
    
    -- create the same index on the swapin table
    create unique clustered index cix_fword_swapin on dbo.f_word_swapin 
    (
    	source_id,
    	sentence_id,
    	sentence_word_id,
    	word_id,
    	lemma_id,
    	part_of_speech_id,
    	person_id,
    	gender_id,
    	number_id,
    	tense_id,
    	voice_id,
    	mood_id,
    	case_id,
    	degree_id 
    );
    
    -- add check constraints WITH CHECK
    ALTER TABLE dbo.f_word_swapin
    WITH CHECK
    ADD CONSTRAINT ck_f_word_swapin_lb
    CHECK ( source_id > 12);
    
    ALTER TABLE dbo.f_word_swapin
    WITH CHECK
    ADD CONSTRAINT ck_f_word_swapin_ub
    CHECK ( source_id <= 13);


Then, move the data around:

    -- switch data OUT of the partitioned table
    ALTER TABLE dbo.f_word
    SWITCH PARTITION 13 TO dbo.f_word_swapin;
    
    -- attempt to switch data back IN 
    ALTER TABLE dbo.f_word_swapin
    SWITCH TO dbo.f_word PARTITION 13;

Below is the "Script Table As ... CREATE" DDL just to verify the same table structures.

    /****** Object:  Table [dbo].[f_word_swapin]    Script Date: 9/10/2014 10:01:01 AM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[f_word_swapin](
    	[sentence_id] [int] NULL,
    	[sentence_word_id] [int] NULL,
    	[word_id] [int] NULL,
    	[lemma_id] [int] NULL,
    	[source_id] [int] NULL,
    	[part_of_speech_id] [int] NULL,
    	[person_id] [int] NULL,
    	[gender_id] [int] NULL,
    	[number_id] [int] NULL,
    	[tense_id] [int] NULL,
    	[voice_id] [int] NULL,
    	[mood_id] [int] NULL,
    	[case_id] [int] NULL,
    	[degree_id] [int] NULL,
    	[citation] [nvarchar](100) NULL
    ) ON [PRIMARY]
    
    /****** Object:  Table [dbo].[f_word]    Script Date: 9/10/2014 10:09:43 AM ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE TABLE [dbo].[f_word](
    	[sentence_id] [int] NULL,
    	[sentence_word_id] [int] NULL,
    	[word_id] [int] NULL,
    	[lemma_id] [int] NULL,
    	[source_id] [int] NULL,
    	[part_of_speech_id] [int] NULL,
    	[person_id] [int] NULL,
    	[gender_id] [int] NULL,
    	[number_id] [int] NULL,
    	[tense_id] [int] NULL,
    	[voice_id] [int] NULL,
    	[mood_id] [int] NULL,
    	[case_id] [int] NULL,
    	[degree_id] [int] NULL,
    	[citation] [nvarchar](100) NULL
    )
    
    GO

SWITCHing OUT works just fine. SWITCHing IN produces the following error:

> Msg 4972, Level 16, State 1, Line 1 ALTER TABLE SWITCH statement
> failed. Check constraints or partition function of source table
> 'greek.dbo.f_word_swapin' allows values that are not allowed by check
> constraints or partition function on target table 'greek.dbo.f_word'.

Running: 

    select target_partition_id = $PARTITION.pf_f_word_source_id(source_id), 
    	*
    from dbo.f_word_swapin;

verifies that all data should go back into partition 13.

I'm really pretty new to partitioning so I'm sure that I'm doing things incorrectly, I just don't know what it is.