I want to get the ASTM soil description name based on Atterberg Limits only. I'm not sure how to modify the ASTM_Name function to get this.
This code gives me the ASTM Group Name when I have both SIEVE and ATTERBERG results:
<<ASTM_Name(<<SV READINGS.Reading>><<#>>,<<SV READINGS.Percent_Finer>>,_ <<ATTERBERG.Plastic_Limit>>,<<ATTERBERG.Liquid_Limit>>,_ <<ATTERBERG.Organic>>)>>
This code gives me the ASTM Group Name for soils that are visually-manually estimated to be nonplastic, where we have SIEVE but no ATTERBERG:
<<ASTM_Name(<<SV READINGS.Reading>><<#>>,<<SV READINGS.Percent_Finer>>,0,0,0)>>
What I need is the code that will give me ASTM Group Name for a soil that is visually-manually estimated to have less than 15% coarse grained soil (size larger than 0.075mm) where we have ATTERBERG but no SIEVE
Thank you.
My apologies Mr. Szang. I appreciate your ideas and responses. I corrected my post. I meant less than 15% coarse (sand). We often have soils with little to no sand, and it is all silt or clay, and there is no reason to run a SIEVE. The ASTM group name could be determined based on the ATTERBERG results only.
Ok, many ways to do this
1. The brute force method. This simply programs the ASTM plasticity chart using conditions and returns the desired text strings. Se example in code window below
<<Let(PI=<<Calc(<<LAB_TEST.LL>>-<<LAB_TEST.PL>>)>>)>>_ <<IIf(<<LAB_TEST.LL>> < 50,_ <<Remark(Cases for LL < 50)>>_ <<Switch(_ <<Calc((<<LAB_TEST.LL>> < 30) And (<<Get(PI)>> > 7))>>,"Lean Clay",_ <<Calc((<<LAB_TEST.LL>> >= 30) And (<<Get(PI)>> >= <<Calc(0.73*(<<LAB_TEST.LL>>-20))>>))>>,"Lean Clay",_ <<Calc((<<LAB_TEST.LL>> < 26) And (<<Get(PI)>> <= 4))>>,"Silt",_ <<Calc((<<LAB_TEST.LL>> >= 26) And (<<Get(PI)>> < <<Calc(0.73*(<<LAB_TEST.LL>>-20))>>))>>,"Silt",_ True,"Clayey Silt"_ )>>_ ,_ <<Remark(Cases for LL > 50)>>_ <<IIf(<<Calc(<<Get(PI)>> >= <<Calc(0.73*(<<LAB_TEST.LL>>-20))>>)>>,_ "Fat Clay",_ "Elastic Silt"_ )>>_ )>>
This does not check U-line or include an option for organic (OL,OH) classes but it would be easy enough to add. Note that non plastic samples are assumed to have LL=0 and PL=0 which classifies as ML. Note that in the example you would have to substitute your field names. Also, I did it fast and did not check that my inequality symbols were the same as in the ASTM standard for limits that plot exactly on the line between 2 different classifications so you would have to check that.
2. Use preprogramed ASTM function and simply look up the desired text from the returned symbol. Again, there are several different ways to do this, see the code window below for one way.
<<GetListItem(_ "Lean Clay|Silt|Clayey Silt|Fat Clay|Elastic Silt",_ "|",_ <<ListPosition(_ "CL|ML|CL-ML|CH|MH",_ "|",_ <<ASTM_Symbol_Plasticity(<<LAB_TEST.PL>>,<<LAB_TEST.LL>>)>>_ )>>_ )>>
This does not include organic classes but easy enough to add. Add Organic field to ASTM_Symbol_Plasticity function and add Organic symbol and organic text to the lookup lists. Note that you would have to substitute your field names. I have not fully tested how the built in gINT function deals with non plastic samples and limits that plot exactly on the line between 2 classifications.
Probably many other ways to do this. If this is not what you are trying to do let me know.
Thank you. I just figured out an alternative way. I have a Library data table that has the symbol (CH, CL, ML, MH, CL-ML) as well as the associated ASTM name.
I created a user system data as follows:<<Lookup(<<SOIL USCS GROUP.Group_Name>>,<<SOIL USCS GROUP.Abbreviation>> = <<ASTM_Symbol_Plasticity(<<ATTERBERG.Plastic_Limit>><<#>>,<<ATTERBERG.Liquid_Limit>>,<<ATTERBERG.Organic>>)>>)>>
Works perfectly.
Library table works fine as well