XML 36 R43.htm IDEA: XBRL DOCUMENT v2.4.1.9
Summary of Significant Accounting Policies (Details) (USD $)
3 Months Ended 12 Months Ended
Dec. 31, 2014
Dec. 31, 2014
Dec. 31, 2013
Dec. 31, 2012
Dec. 31, 2011
Aug. 04, 2014
Debt Instrument [Line Items]            
Carrying value of Senior Notes $ 350,000,000us-gaap_NotesPayable $ 350,000,000us-gaap_NotesPayable        
Impaired Long-Lived Assets Held and Used [Line Items]            
Impairments of long-lived assets 64,300,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse 34,842,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse 9,578,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse   8,360,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse  
Impairment of heavy lift barge       7,700,000us-gaap_ImpairmentOfLongLivedAssetsToBeDisposedOf    
Proceeds from sale of heavy lift barge   17,527,000us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment 1,794,000us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment   59,325,000us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment  
Consolidation, Less than Wholly Owned Subsidiary, Parent Ownership Interest, Changes, Net [Abstract]            
Percentage of consolidated net assets comprised of investment in CCLP 25.00%us-gaap_InvestmentOwnedPercentOfNetAssets 25.00%us-gaap_InvestmentOwnedPercentOfNetAssets        
Publicly held ownership interest in CCLP prior to offering           17.70%tti_Publiclyheldownershipinterestpriortooffering
Publicly held ownership interest in CCLP 56.30%us-gaap_MinorityInterestOwnershipPercentageByNoncontrollingOwners 56.30%us-gaap_MinorityInterestOwnershipPercentageByNoncontrollingOwners        
Fair Value Measurements [Line Items]            
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure        
Prior period reclassification of ad valorem tax expenses       1,500,000us-gaap_PriorPeriodReclassificationAdjustment    
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure        
Reduction in decommissioning liabilities for work performed   63,300,000tti_Reductionindecommissioningliabilitiesforworkperformed 119,600,000tti_Reductionindecommissioningliabilitiesforworkperformed 87,400,000tti_Reductionindecommissioningliabilitiesforworkperformed    
Estimated future hurricane repair expenses 8,700,000tti_Estimatedfuturehurricanerelatedrepairexpenses 8,700,000tti_Estimatedfuturehurricanerelatedrepairexpenses        
Insurance gains credited to earnings     7,600,000us-gaap_InsuredEventGainLoss      
Goodwill table (details)            
Beginning balance   188,159,000us-gaap_Goodwill 189,604,000us-gaap_Goodwill 99,132,000us-gaap_Goodwill    
Goodwill adjustments   (68,125,000)us-gaap_GoodwillOtherChanges (1,445,000)us-gaap_GoodwillOtherChanges      
Goodwill acquired       90,472,000us-gaap_GoodwillAcquiredDuringPeriod    
Ending balance 293,941,000us-gaap_Goodwill 293,941,000us-gaap_Goodwill 188,159,000us-gaap_Goodwill 189,604,000us-gaap_Goodwill 99,132,000us-gaap_Goodwill  
Allowances for Doubtful Accounts [Table]            
At beginning of period   1,349,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 1,085,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 1,849,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent    
Activity in the period:            
Provision for doubtful accounts   856,000us-gaap_ProvisionForDoubtfulAccounts 374,000us-gaap_ProvisionForDoubtfulAccounts (237,000)us-gaap_ProvisionForDoubtfulAccounts (237,000)us-gaap_ProvisionForDoubtfulAccounts  
Account chargeoffs   280,000tti_Allowancesfordoubtfulaccountchargeoffs (110,000)tti_Allowancesfordoubtfulaccountchargeoffs (527,000)tti_Allowancesfordoubtfulaccountchargeoffs    
At end of period 2,485,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 2,485,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 1,349,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 1,085,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent 1,849,000us-gaap_AllowanceForDoubtfulAccountsReceivableCurrent  
Inventories Detail [Table]            
Finished goods 62,188,000us-gaap_InventoryFinishedGoods 62,188,000us-gaap_InventoryFinishedGoods 73,515,000us-gaap_InventoryFinishedGoods      
Raw materials 5,005,000us-gaap_InventoryRawMaterials 5,005,000us-gaap_InventoryRawMaterials 3,894,000us-gaap_InventoryRawMaterials      
Parts and supplies 51,229,000us-gaap_OtherInventorySupplies 51,229,000us-gaap_OtherInventorySupplies 22,668,000us-gaap_OtherInventorySupplies      
Work in progress 70,722,000us-gaap_InventoryWorkInProcess 70,722,000us-gaap_InventoryWorkInProcess 715,000us-gaap_InventoryWorkInProcess      
Inventories 189,144,000us-gaap_InventoryNet 189,144,000us-gaap_InventoryNet 100,792,000us-gaap_InventoryNet      
Depreciation expense   109,200,000us-gaap_Depreciation 76,900,000us-gaap_Depreciation 70,700,000us-gaap_Depreciation    
Interest capitalized   800,000us-gaap_InterestPaidCapitalized 1,600,000us-gaap_InterestPaidCapitalized 2,000,000us-gaap_InterestPaidCapitalized    
Amortization expense of patents, trademarks, and other intangible assets   9,300,000us-gaap_AmortizationOfIntangibleAssets 5,000,000us-gaap_AmortizationOfIntangibleAssets 4,500,000us-gaap_AmortizationOfIntangibleAssets    
Future amortization expense, 2014 13,600,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths 13,600,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths        
Future amortization expense, 2015 12,800,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo 12,800,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo        
Future amortization expense, 2016 10,400,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree 10,400,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree        
Future amortization expense, 2017 8,600,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour 8,600,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour        
Future amortization expense, 2018 8,400,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive 8,400,000us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive        
Acquired Finite-Lived Intangible Assets [Line Items]            
Fair value of intangible assets acquired   92,600,000us-gaap_FairValueOfAssetsAcquired   27,300,000us-gaap_FairValueOfAssetsAcquired    
Minimum [Member] | Finite-Lived Intangible Assets [Member]            
Acquired Finite-Lived Intangible Assets [Line Items]            
Average useful life of finite-lived intangible asset   2 years        
Minimum [Member] | Intangible Assets, Amortization Period [Member]            
Acquired Finite-Lived Intangible Assets [Line Items]            
Average useful life of finite-lived intangible asset   2 years   3 years    
Maximum [Member] | Finite-Lived Intangible Assets [Member]            
Acquired Finite-Lived Intangible Assets [Line Items]            
Average useful life of finite-lived intangible asset   20 years        
Maximum [Member] | Intangible Assets, Amortization Period [Member]            
Acquired Finite-Lived Intangible Assets [Line Items]            
Average useful life of finite-lived intangible asset   20 years   20 years    
Weighted Average [Member] | Intangible Assets, Amortization Period [Member]            
Acquired Finite-Lived Intangible Assets [Line Items]            
Average useful life of finite-lived intangible asset   12 years 6 months   12 years 36 days    
Building [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   15 years        
Building [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   40 years        
Barges and vessels [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   5 years        
Barges and vessels [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   30 years        
Machinery and equipment [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   2 years        
Machinery and equipment [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   20 years        
Automobiles and trucks [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   3 years        
Automobiles and trucks [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   4 years        
Chemical plants [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   15 years        
Chemical plants [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   30 years        
Compressors [Member] | Minimum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   12 years        
Compressors [Member] | Maximum [Member]            
Property, Plant, and Equipment [Line Items]            
Property, plant, and equipment, useful life   16 years        
Fair Value, Measurements, Recurring [Member]            
Fair Value Measurements [Line Items]            
Asset for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Liability for foreign currency derivative contracts (174,000)us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
(174,000)us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Total (174,000)us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
(174,000)us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Fair Value, Measurements, Recurring [Member] | Fair Value, Inputs, Level 1 [Member]            
Fair Value Measurements [Line Items]            
Asset for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Liability for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Fair Value, Measurements, Recurring [Member] | Fair Value, Inputs, Level 2 [Member]            
Fair Value Measurements [Line Items]            
Asset for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Liability for foreign currency derivative contracts (174,000)us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
(174,000)us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Fair Value, Measurements, Recurring [Member] | Fair Value, Inputs, Level 3 [Member]            
Fair Value Measurements [Line Items]            
Asset for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractAssetFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Liability for foreign currency derivative contracts 0us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Acquisition contingent consideration liability 0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
0us-gaap_ContingentConsiderationClassifiedAsEquityFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsRecurringMember
       
Fair Value, Measurements, Nonrecurring [Member]            
Fair Value Measurements [Line Items]            
Other assets 0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
     
Total 287,330,000us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
287,330,000us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
       
Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 1 [Member]            
Fair Value Measurements [Line Items]            
Other assets 0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
     
Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 2 [Member]            
Fair Value Measurements [Line Items]            
Other assets 0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
     
Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 3 [Member]            
Fair Value Measurements [Line Items]            
Other assets 0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
0us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
     
Fair Value, Measurements, Nonrecurring [Member] | Accumulated Other-than-Temporary Impairment [Member]            
Fair Value Measurements [Line Items]            
Other assets 1,856,000us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
1,856,000us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
293,000us-gaap_OtherAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
     
Total 99,137,000us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
99,137,000us-gaap_AssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
       
Fluids Goodwill [Member]            
Goodwill table (details)            
Beginning balance   0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
   
Goodwill adjustments   0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
     
Goodwill acquired       0us-gaap_GoodwillAcquiredDuringPeriod
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
   
Ending balance 6,636,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
6,636,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
   
Accumulated impairment losses 23,900,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
23,900,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsGoodwillMember
       
Production Testing Goodwill [Member]            
Goodwill table (details)            
Beginning balance   112,062,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
113,507,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
23,035,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
   
Goodwill adjustments   (64,189,000)us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
(1,445,000)us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
     
Goodwill acquired       90,472,000us-gaap_GoodwillAcquiredDuringPeriod
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
   
Ending balance 53,682,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
53,682,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
112,062,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
113,507,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
   
Accumulated impairment losses 60,400,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
60,400,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
       
Residual purchase price to be allocated to goodwill 53,700,000us-gaap_BusinessAcquisitionsPurchasePriceAllocationSubsequentYearsRemainingAdjustments
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
53,700,000us-gaap_BusinessAcquisitionsPurchasePriceAllocationSubsequentYearsRemainingAdjustments
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingGoodwillMember
       
Compression Goodwill [Member]            
Goodwill table (details)            
Beginning balance   72,161,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
72,161,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
72,161,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
   
Goodwill adjustments   0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
     
Goodwill acquired       0us-gaap_GoodwillAcquiredDuringPeriod
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
   
Ending balance 233,623,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
233,623,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
72,161,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
72,161,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_CompresscoGoodwillMember
   
Offshore Services Goodwill [Member]            
Goodwill table (details)            
Beginning balance   3,936,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
3,936,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
3,936,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
   
Goodwill adjustments   (3,936,000)us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
     
Goodwill acquired       0us-gaap_GoodwillAcquiredDuringPeriod
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
   
Ending balance 0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
3,936,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
3,936,000us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
   
Accumulated impairment losses 27,100,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
27,100,000us-gaap_GoodwillImpairedAccumulatedImpairmentLoss
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesGoodwillMember
       
Maritech Goodwill [Member]            
Goodwill table (details)            
Beginning balance   0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
   
Goodwill adjustments   0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_GoodwillOtherChanges
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
     
Goodwill acquired       0us-gaap_GoodwillAcquiredDuringPeriod
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
   
Ending balance 0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
0us-gaap_Goodwill
/ us-gaap_StatementBusinessSegmentsAxis
= tti_MaritechGoodwillMember
   
Fluids Division [Member]            
Impaired Long-Lived Assets Held and Used [Line Items]            
Impairments of long-lived assets   5,200,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Fluids Division [Member] | Fair Value, Measurements, Nonrecurring [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 1,225us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
1,225us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Fluids Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 1 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Fluids Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 2 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Fluids Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 3 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 1,225us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
1,225us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Fluids Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Accumulated Other-than-Temporary Impairment [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 5,201,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
5,201,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_FluidsDivisionMember
       
Production Testing Division [Member]            
Impaired Long-Lived Assets Held and Used [Line Items]            
Impairments of long-lived assets   14,500,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Production Testing Division [Member] | Fair Value, Measurements, Nonrecurring [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 94,328,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
94,328,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Intangible assets 34,941,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
34,941,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Goodwill 53,681,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
53,681,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Production Testing Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 1 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Intangible assets 0us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Production Testing Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 2 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Intangible assets 0us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Production Testing Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 3 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 94,328,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
94,328,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Intangible assets 34,941,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
34,941,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Goodwill 53,681,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
53,681,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Production Testing Division [Member] | Fair Value, Measurements, Nonrecurring [Member] | Accumulated Other-than-Temporary Impairment [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 7,646,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
7,646,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Intangible assets 6,831,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
6,831,000us-gaap_FiniteLivedIntangibleAssetsFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Goodwill 60,359,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
60,359,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_ProductionTestingMember
       
Offshore Services [Member]            
Impaired Long-Lived Assets Held and Used [Line Items]            
Impairments of long-lived assets   13,700,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
9,300,000us-gaap_ImpairmentOfLongLivedAssetsHeldForUse
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Impairment of heavy lift barge     9,300,000us-gaap_ImpairmentOfLongLivedAssetsToBeDisposedOf
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Proceeds from sale of heavy lift barge   3,000,000us-gaap_ProceedsFromSaleOfPropertyPlantAndEquipment
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
Offshore Services [Member] | Fair Value, Measurements, Nonrecurring [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 103,155,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
103,155,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
3,000,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
Offshore Services [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 1 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel1Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
Offshore Services [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 2 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel2Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
Offshore Services [Member] | Fair Value, Measurements, Nonrecurring [Member] | Fair Value, Inputs, Level 3 [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 103,155,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
103,155,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
3,000,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Goodwill 0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
0us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_FairValueInputsLevel3Member
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
Offshore Services [Member] | Fair Value, Measurements, Nonrecurring [Member] | Accumulated Other-than-Temporary Impairment [Member]            
Fair Value Measurements [Line Items]            
Long-lived assets 13,308,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
13,308,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
9,285,000us-gaap_PropertyPlantAndEquipmentFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
     
Goodwill 3,936,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
3,936,000us-gaap_GoodwillFairValueDisclosure
/ us-gaap_FairValueByFairValueHierarchyLevelAxis
= us-gaap_AccumulatedOtherThanTemporaryImpairmentMember
/ us-gaap_FairValueByMeasurementFrequencyAxis
= us-gaap_FairValueMeasurementsNonrecurringMember
/ us-gaap_StatementBusinessSegmentsAxis
= tti_OffshoreServicesMember
       
CSI Compressco Senior Notes [Member]            
Debt Instrument [Line Items]            
Fair value of Senior Notes 354,900,000us-gaap_NotesPayableFairValueDisclosure
/ us-gaap_LongtermDebtTypeAxis
= tti_CompresscoPartnersSeniorNotesMember
354,900,000us-gaap_NotesPayableFairValueDisclosure
/ us-gaap_LongtermDebtTypeAxis
= tti_CompresscoPartnersSeniorNotesMember
       
TETRA Senior Notes [Member]            
Debt Instrument [Line Items]            
Fair value of Senior Notes 310,700,000us-gaap_NotesPayableFairValueDisclosure
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember
310,700,000us-gaap_NotesPayableFairValueDisclosure
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember
318,400,000us-gaap_NotesPayableFairValueDisclosure
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember
     
Carrying value of Senior Notes $ 305,000,000us-gaap_NotesPayable
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember
$ 305,000,000us-gaap_NotesPayable
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember
$ 305,000,000us-gaap_NotesPayable
/ us-gaap_LongtermDebtTypeAxis
= tti_TETRASeniorNotesMember