I am using gINT V8i S s1 version 08.30.03.140. on MS windows 2007.
I have a question regarding changing the reporting of N-values on boring log reports. The project manager wants to show an N-value for the sum of both the 2nd and 3rd intervals and the sum of 3rd and 4th intervals of a 4 interval SPT sampling program. I am not sure how to accomplish this. Our current output calculates the N-value from the 2nd and 3rd intervals even if there are 4 intervals. Furthermore, our current output does not show an N-value if there is refusal on the SPT sample (e.g. 50/4). We are wanting to display the N-value even if there is refusal.
Below is the user system data of the “blows and N value” and the “refusal Penetration” functions from our current library file. Any help on this matter would be much appreciated.
blows and N value
<<Let(Refusal Pen = <<User System Data.Refusal Penetration>>)>>_<<Let(Blows =_ <<Case(<<Get(Max Blows Pen Inches)>>, =18,<<SAMPLE.Blows 3rd>>,_ =12,<<SAMPLE.Blows 2nd>>,_ =6,<<SAMPLE.Blows 1st>>_ )>>_)>>__<<ListBuildSepTrim(_ -,_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_)>>_<<HasData(<<Get(Refusal Pen)>>,_ /<<Get(Refusal Pen)>>,_ <<DelimitData(_ <<cr>>(,_ <<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>,_ )_ )>>_)>>
Refusal Penetration
<<IIF(<<PROJECT.Output Units>> = "M",_ <<Let(Interval = 15)>>,_ <<Let(Interval = 6)>>_)>>_<<Let(Pen Inches = _ <<Format(_ <<Case(<<PROJECT.Output Units>>,_ <><<PROJECT.Input Units>>,_ <<UnitsConvert(<<SAMPLE.Length>>,_ <<IIF(<<PROJECT.Output Units>>="M",_ <<Let(Factor E to M = 30.48)>>,_ <<Let(Factor E to M = 1/0.3048*12)>>_ )>>_ <<Get(Factor E to M)>>_ )>><<Let(Formatting=0.0)>>,_ ="E",<<Calc(<<SAMPLE.Length>>*12)>><<Let(Formatting=0)>>,_ ="M",<<Calc(<<SAMPLE.Length>>*100)>><<Let(Formatting=0)>>,_ )>>,_ <<Get(Formatting)>>)>>_)>>__<<Let(Max Blows Pen Inches = _ <<Calc(_ <<DataCount(_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_ )>> * <<Get(Interval)>>_ )>>_)>>__<<IIf(<<HasData(<<Get(Pen Inches)>>)>> And _ <<HasData(<<SAMPLE.Blows 1st>>)>>,_ <<IIf(<<Get(Pen Inches)>> < <<Get(Max Blows Pen Inches)>>,_ <<Format(_ <<MaxVal(_ <<Calc(<<Get(Interval)>> - (<<Get(Max Blows Pen Inches)>> - <<Get(Pen Inches)>>))>>,_ 0.00_ )>>,_ <<Get(Formatting)>>_ )>>_ )>>_)>>
Hi DOUGRASZ,
Using the suggested changes below, a sample with four sets of blows (4, 5, 6, and 7 respectively) and 24 inches of penetration will give you the following output:
4-5-6-7N1(11)N2(13)
==========================================
<<Let(Refusal Pen = <<User System Data.Refusal Penetration>>)>>_<<Let(Blows =_ <<Case(<<Get(Max Blows Pen Inches)>>, =18,<<SAMPLE.Blows 3rd>>,_ =12,<<SAMPLE.Blows 2nd>>,_ =6,<<SAMPLE.Blows 1st>>_ )>>_)>>__<<ListBuildSepTrim(_ -,_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_)>>_<<HasData(<<Get(Refusal Pen)>>,_ /<<Get(Refusal Pen)>>,_ <<ListBuildSepTrim(<<cr>>,_ <<DelimitData(<<cr>>N1(,<<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>,))>>,_ <<DelimitData(N2(,<<Calc(<<SAMPLE.Blows 3rd>> + <<SAMPLE.Blows 4th>>)>>,))>>_ )>>_)>>
Please let me know if this solves your issue.
Best Regards,
--
www.geotechnicaldataservices.com
Thanks a lot jmartel. that worked perfectly. I really appreciate your help. I can do gint basics but the more involved programing sometimes gives me problems.
btw, do you have any aid on the second issued I asked about regarding why an N-value does not show up when there is refusal. I know that some folks consider there to be no N-value in that case. but others consider the refusal to be the N-value while others still would add the 50 and the previous interval to get an N-value.
I assume that there is a way to get something to show up.
thanks again,
Doug
You're welcome Doug! I'm glad I could help.
The reason you were getting no N value with refusal present was due to the conditional statement below which states that if there is refusal then print only the refusal penetration, otherwise print only the N1 and N2.
<<HasData(<<Get(Refusal Pen)>>,_ /<<Get(Refusal Pen)>>,_ <<ListBuildSepTrim(<<cr>>,_ <<DelimitData(<<cr>>N1(,<<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>,))>>,_ <<DelimitData(N2(,<<Calc(<<SAMPLE.Blows 3rd>> + <<SAMPLE.Blows 4th>>)>>,))>>_ )>>_)>>
I'm not sure I understood correctly what what you wanted but the following will give you an N equal to 50 + the final interval if there is refusal present. So for example if you have a sample length of 17 inches and three intervals 4-5-49 respectively, your output will be...
4-5-49/5.0N(99)
Blows and N Value
<<Let(Refusal Pen = <<User System Data.Refusal Penetration>>)>>__<<Let(N1 = <<DelimitData(N1(,<<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>,))>>)>>__<<Let(N2 = <<DelimitData(N2(,<<Calc(<<SAMPLE.Blows 3rd>> + <<SAMPLE.Blows 4th>>)>>,))>>)>>__<<Let(Final Interval = _ <<FirstData(_ <<SAMPLE.Blows 4th>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 1st>>_ )>>_)>>__<<ListBuildSepTrim(_ -,_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_)>>_<<HasData(<<Get(Refusal Pen)>>,_ /<<Get(Refusal Pen)>><<cr>>N(<<Calc(<<Get(Final Interval)>> + 50)>>),_ <<cr>>_ <<ListBuildSepTrim(<<cr>>,_ <<Get(N1)>>,_ <<Get(N2)>>_ )>>_)>>
jmartel
after speaking to the PM once again, he wants the N-value for a refusal to be displayed as the full refusal (e.g. 50/2 or 50/4), not just 50, nor 50 plus the previous interval blows. but we need this to be the displayed N-value regardless of which interval refusal occurs (1, 2, 3, or 4). so ultimately we hope to show the N-values of both the 2nd+3rd interval and the 3rd+4th interval (as you help with yesterday), but if refusal occurs at any interval, then the N-value shall be (50/x). I made multiple attempts ot alter the last code that you sent to have this output, but alas I have been unsuccessful. would you please be able to help with this one last issue.
Try this
<<Let(Refusal Pen = <<User System Data.Refusal Penetration>>)>>__<<Let(N1 = <<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>)>>__<<Let(N2 = <<Calc(<<SAMPLE.Blows 3rd>> + <<SAMPLE.Blows 4th>>)>>)>>__<<ListBuildSepTrim(_ -,_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_)>>_<<HasData(<<Get(Refusal Pen)>>,_ /<<Get(Refusal Pen)>>,_ <<cr>>_ <<ListBuildSepTrim(<<cr>>,_ <<HasData(<<Get(N2)>>,_ N1(<<Get(N1)>>),_ <<DelimitData("N(",<<Get(N1)>>,")")>>_ )>>,_ <<DelimitData("N2(",<<Get(N2)>>,")")>>_ )>>_)>>
Johnny,
Sincere gratitude for you assistance on this issue. I am sure that you have other stuff to do. But I guess was not communicate properly what I am trying to accomplish.
What I am trying to accomplish is to have the refusal value show up as the N-value
So for example, if there is not refusal it should look as you have created already:
10-12-18-23
N1(30)
N2(41)
But if there is refusal on the 4th interval it would look like this:
10-12-36-50/4
N1(48)
N2(50/4)
If there is refusal on the 1st 2nd or 3rd interval it would look like this:
15-22-50/2
N1(50/2)
Or
26-50/3
N1(50/3)
50/4
N1(50/4)
Is this possible to accomplish?
Thanks again for you help on this,
Although there is a threshold of learning to overcome, gINT Rules (VBA) is a better language to use for this. The result string is written back to a field by the VBA code, which you could then edit for the outlier tests, and the report can just reference the one field.
Phil WadeDatgelBentley Channel Partner and Developer PartnerE: phil.wade@datgel.com | T: +61 2 8202 8600 & +65 6631 9780
Get the most out of gINT with Datgel Tools.
Hi Doug,
I would agree strongly with Phil that It would make sense to add two fields for N1 and N2 and then create gINT rules to automatically calculate them in your database. That will take you some time to learn, or of course you can have one of us do it for you. In the meantime here's is my last stab at it on the forum.
The following code is not very elegant but in my defense, I was in a bit of a hurry.
<<Let(Refusal Pen = <<User System Data.Refusal Penetration>>)>>__<<Let(N1 = <<IIf(Not<<HasData(<<Get(Refusal Pen)>>)>>,<<DelimitData("N1(",<<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>,")")>>)>>)>>__<<Let(N2 = <<IIf(Not<<HasData(<<Get(Refusal Pen)>>)>>,<<DelimitData("N2(",<<Calc(<<SAMPLE.Blows 3rd>> + <<SAMPLE.Blows 4th>>)>>,")")>>)>>)>>__<<Let(Final Interval = _ <<FirstData(_ <<SAMPLE.Blows 4th>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 1st>>_ )>>_)>>__<<ListBuildSepTrim(_ -,_ <<SAMPLE.Blows 1st>>,_ <<SAMPLE.Blows 2nd>>,_ <<SAMPLE.Blows 3rd>>,_ <<SAMPLE.Blows 4th>>_)>>_<<DelimitData(/,<<Get(Refusal Pen)>>,)>><<ListBuildSepTrim(<<cr>>,_ <<Get(N1)>>,_ <<Get(N2)>>,_ <<IIf(_ <<HasData(<<Get(Refusal Pen)>>)>>,_ <<HasData(<<SAMPLE.Blows 4th>>,_ N1(<<Calc(<<SAMPLE.Blows 2nd>> + <<SAMPLE.Blows 3rd>>)>>)<<cr>>_ N2(<<Get(Final Interval)>>/<<Get(Refusal Pen)>>),_ N1(<<Get(Final Interval)>>/<<Get(Refusal Pen)>>)_ )>>_ )>>_)>>
Also I noticed in your example that you didn't show the trailing zeros after the refusal penetration. To get rid of them go to the User System Data Item Refusal Penetration and change <<Let(Formatting=0.0)>> to <<Let(Formatting=0.#)>>
Good Luck!
Johnny Martel