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)>>_ )>>_ )>>_)>>
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,
Doug
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.
==========================================
Blows and N Value
<<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
www.geotechnicaldataservices.com
Thanks alot. that code works perfectly for what I was wanting to do. it does not need to be elegant. I fully understand you being done with helping me with this issue. I certainly feel that I have been abusing your kindness. we have gint, but have never had any training on how to program it. so it is alot of trial and error and help menu. I am glad this forum exists.
Take care kind Sir.
thanks again,
You're very welcome Doug! Glad I could help :)